Gantry 4 Framework - Version 4.1.0

Version Description

  • Compatibility fix in the MooRainbow for the Visual Composer plugin
  • RokBox 2 support in the Login Button widget
  • Fix for the multiple body classes in Page Suffix gizmo
  • Updated IE11 detection
  • Updated Pretty Print JS files
  • Fixed font style issues caused by FontAwesome 3.2.1 icons
  • Added Font Awesome 4 assets for future use
  • Fixed missing special characters with Google fonts ie. Polish characters
  • Removed RocketTheme references in Copyright widget
  • Fixed the display of overrided options in the theme settings
  • Gantry admin UI fixes for the WordPress 3.8
Download this release

Release Info

Developer gantry
Plugin Icon 128x128 Gantry 4 Framework
Version 4.1.0
Comparing to
See all releases

Code changes from version 4.0.8 to 4.1.0

Files changed (88) hide show
  1. CHANGELOG.php +14 -1
  2. admin/admin_functions.php +3 -3
  3. admin/forms/fields/imagepicker.php +1 -1
  4. admin/forms/fields/selectbox.php +2 -2
  5. admin/forms/fields/updater.php +1 -1
  6. admin/forms/groups/innertabs.php +12 -2
  7. admin/index.php +24 -9
  8. admin/override.php +4 -4
  9. admin/widgets/assignments/js/assignments.js +32 -1
  10. admin/widgets/colorchooser/css/mooRainbow-2.0.css +13 -4
  11. admin/widgets/colorchooser/css/mooRainbow-2.0.less +18 -3
  12. admin/widgets/colorchooser/js/mooRainbow-2.0.js +9 -3
  13. admin/widgets/gantry-administrator.css +1 -1
  14. admin/widgets/gantry-widgets.css +74 -25
  15. admin/widgets/gantry-widgets.js +2 -2
  16. admin/widgets/gantry.css +4 -4
  17. admin/widgets/images/divider-bar-old.png +0 -0
  18. admin/widgets/images/divider-bar.png +0 -0
  19. admin/widgets/selectbox/js/selectbox.js +1 -1
  20. admin_functions.php +27 -2
  21. assets/jui/fonts/font-awesome4/FontAwesome.otf +0 -0
  22. assets/jui/fonts/font-awesome4/fontawesome-webfont.eot +0 -0
  23. assets/jui/fonts/font-awesome4/fontawesome-webfont.svg +414 -0
  24. assets/jui/fonts/font-awesome4/fontawesome-webfont.ttf +0 -0
  25. assets/jui/fonts/font-awesome4/fontawesome-webfont.woff +0 -0
  26. assets/jui/less/font-awesome.less +42 -1
  27. assets/jui/less/font-awesome/mixins.less +1 -1
  28. assets/jui/less/font-awesome4/bordered-pulled.less +16 -0
  29. assets/jui/less/font-awesome4/core.less +12 -0
  30. assets/jui/less/font-awesome4/fixed-width.less +6 -0
  31. assets/jui/less/font-awesome4/font-awesome.less +17 -0
  32. assets/jui/less/font-awesome4/icons.less +412 -0
  33. assets/jui/less/font-awesome4/larger.less +13 -0
  34. assets/jui/less/font-awesome4/list.less +19 -0
  35. assets/jui/less/font-awesome4/mixins.less +20 -0
  36. assets/jui/less/font-awesome4/path.less +14 -0
  37. assets/jui/less/font-awesome4/rotated-flipped.less +9 -0
  38. assets/jui/less/font-awesome4/spinning.less +30 -0
  39. assets/jui/less/font-awesome4/stacked.less +20 -0
  40. assets/jui/less/font-awesome4/variables.less +381 -0
  41. core/gantry.class.php +6 -6
  42. core/gantrybrowser.class.php +9 -3
  43. core/gantryjson.class.php +1 -1
  44. core/utilities/gantrycache.class.php +2 -2
  45. css/gantrydivider.css +9 -3
  46. functions.php +1 -1
  47. gantry.php +3 -2
  48. gizmos/font.php +1 -1
  49. gizmos/pagesuffix.php +6 -2
  50. js/browser-engines.js +241 -0
  51. libs/google-code-prettify/lang-apollo.js +1 -1
  52. libs/google-code-prettify/lang-basic.js +3 -0
  53. libs/google-code-prettify/lang-clj.js +1 -1
  54. libs/google-code-prettify/lang-css.js +2 -2
  55. libs/google-code-prettify/lang-dart.js +3 -0
  56. libs/google-code-prettify/lang-erlang.js +2 -0
  57. libs/google-code-prettify/lang-go.js +1 -1
  58. libs/google-code-prettify/lang-hs.js +1 -1
  59. libs/google-code-prettify/lang-lisp.js +2 -2
  60. libs/google-code-prettify/lang-llvm.js +1 -0
  61. libs/google-code-prettify/lang-lua.js +1 -1
  62. libs/google-code-prettify/lang-matlab.js +6 -0
  63. libs/google-code-prettify/lang-ml.js +1 -1
  64. libs/google-code-prettify/lang-mumps.js +2 -0
  65. libs/google-code-prettify/lang-n.js +1 -1
  66. libs/google-code-prettify/lang-pascal.js +3 -0
  67. libs/google-code-prettify/lang-r.js +2 -0
  68. libs/google-code-prettify/lang-rd.js +1 -0
  69. libs/google-code-prettify/lang-scala.js +1 -1
  70. libs/google-code-prettify/lang-sql.js +1 -1
  71. libs/google-code-prettify/lang-tcl.js +3 -0
  72. libs/google-code-prettify/lang-tex.js +1 -1
  73. libs/google-code-prettify/lang-vb.js +2 -2
  74. libs/google-code-prettify/lang-vhdl.js +1 -1
  75. libs/google-code-prettify/lang-wiki.js +1 -1
  76. libs/google-code-prettify/prettify.css +1 -31
  77. libs/google-code-prettify/prettify.js +491 -313
  78. libs/google-code-prettify/run_prettify.js +34 -0
  79. libs/phpQuery.php +5702 -0
  80. readme.txt +18 -2
  81. widgets/breadcrumbs.php +1 -1
  82. widgets/copyright.php +1 -2
  83. widgets/gantrymenu/themes/default/js/responsive-selectbox.js +103 -12
  84. widgets/gantrymenu/themes/default/js/responsive.js +87 -12
  85. widgets/gantrymenu/themes/default/js/rokmediaqueries.js +152 -17
  86. widgets/gantrymenu/themes/default/js/sidemenu.js +130 -0
  87. widgets/loginbutton.php +15 -2
  88. widgets/loginform.php +1 -1
CHANGELOG.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Gantry For Wordpress
4
  *
5
- * @version $Id: CHANGELOG.php 59959 2013-10-02 19:17:45Z jakub $
6
  * @author RocketTheme http://www.rockettheme.com
7
  * @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
8
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
@@ -27,6 +27,19 @@ Legend:
27
  - -> Removed
28
  ! -> Note
29
 
 
 
 
 
 
 
 
 
 
 
 
 
 
30
  ------- 4.0.8 Release [] ------
31
  + Added core support for the BuddyPress 1.8+ - Gantry BuddyPress plugin is no longer required and has been deprecated
32
  # Fix for the Gizmo options not being saved/loaded in the Presets of the theme
2
  /**
3
  * Gantry For Wordpress
4
  *
5
+ * @version $Id: CHANGELOG.php 60307 2013-12-12 11:28:57Z jakub $
6
  * @author RocketTheme http://www.rockettheme.com
7
  * @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
8
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
27
  - -> Removed
28
  ! -> Note
29
 
30
+ ------- 4.1.0 Release [] ------
31
+ # Compatibility fix in the MooRainbow for the Visual Composer plugin
32
+ ^ RokBox 2 support in the Login Button widget
33
+ # Fix for the multiple body classes in Page Suffix gizmo
34
+ # Updated IE11 detection
35
+ ^ Updated Pretty Print JS files
36
+ # Fixed font style issues caused by Font Awesome 3.2.1 icons
37
+ + Added Font Awesome 4 assets for future use
38
+ # Fixed missing special characters with Google fonts ie. Polish characters
39
+ ^ Removed RocketTheme references in Copyright widget
40
+ # Fixed the display of overrided options in the theme settings
41
+ # Gantry admin UI fixes for the WordPress 3.8
42
+
43
  ------- 4.0.8 Release [] ------
44
  + Added core support for the BuddyPress 1.8+ - Gantry BuddyPress plugin is no longer required and has been deprecated
45
  # Fix for the Gizmo options not being saved/loaded in the Presets of the theme
admin/admin_functions.php CHANGED
@@ -1,6 +1,6 @@
1
  <?php
2
  /**
3
- * @version $Id: admin_functions.php 59376 2013-03-14 19:43:34Z btowles $
4
  * @author RocketTheme http://www.rockettheme.com
5
  * @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
6
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
@@ -178,7 +178,7 @@ function gantry_admin_render_edit_override_item($element)
178
  $buffer .= $label;
179
  $buffer .= "</div>";
180
  $buffer .= "<div class=\"g4-cell g4-col2\"><div class=\"g4-col2-wrap\">\n";
181
- $buffer .= "<span class=\"arrow\"><span></span></span>";
182
  $buffer .= $element->getInput() . "\n";
183
  $buffer .= "</div></div>\n";
184
  $buffer .= "</div>\n";
@@ -197,7 +197,7 @@ function gantry_admin_render_edit_item($element)
197
  $buffer .= $label;
198
  $buffer .= "</div>";
199
  $buffer .= "<div class=\"g4-cell g4-col2\"><div class=\"g4-col2-wrap\">\n";
200
- $buffer .= "<span class=\"arrow\"><span></span></span>";
201
  $buffer .= $element->getInput() . "\n";
202
  $buffer .= "</div></div>\n";
203
  $buffer .= "</div>\n";
1
  <?php
2
  /**
3
+ * @version $Id: admin_functions.php 60288 2013-12-10 13:10:52Z jakub $
4
  * @author RocketTheme http://www.rockettheme.com
5
  * @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
6
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
178
  $buffer .= $label;
179
  $buffer .= "</div>";
180
  $buffer .= "<div class=\"g4-cell g4-col2\"><div class=\"g4-col2-wrap\">\n";
181
+ $buffer .= "<span class=\"rt-arrow\"><span></span></span>";
182
  $buffer .= $element->getInput() . "\n";
183
  $buffer .= "</div></div>\n";
184
  $buffer .= "</div>\n";
197
  $buffer .= $label;
198
  $buffer .= "</div>";
199
  $buffer .= "<div class=\"g4-cell g4-col2\"><div class=\"g4-col2-wrap\">\n";
200
+ $buffer .= "<span class=\"rt-arrow\"><span></span></span>";
201
  $buffer .= $element->getInput() . "\n";
202
  $buffer .= "</div></div>\n";
203
  $buffer .= "</div>\n";
admin/forms/fields/imagepicker.php CHANGED
@@ -1,6 +1,6 @@
1
  <?php
2
  /**
3
- * @version 4.0.8 October 3, 2013
4
  * @author RocketTheme http://www.rockettheme.com
5
  * @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
6
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
1
  <?php
2
  /**
3
+ * @version 4.1.0 December 12, 2013
4
  * @author RocketTheme http://www.rockettheme.com
5
  * @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
6
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
admin/forms/fields/selectbox.php CHANGED
@@ -1,6 +1,6 @@
1
  <?php
2
  /**
3
- * @version $Id: selectbox.php 59361 2013-03-13 23:10:27Z btowles $
4
  * @author RocketTheme http://www.rockettheme.com
5
  * @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
6
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
@@ -88,7 +88,7 @@ class GantryFormFieldSelectBox extends GantryFormField
88
 
89
  // $html .= " <div class='selectbox-top'>";
90
  // $html .= " <div class='selected'><span>" . $activeElement . "</span></div>";
91
- // $html .= " <div class='arrow'></div>";
92
  // $html .= " </div>";
93
  // $html .= " <div class='selectbox-dropdown'>";
94
  // $html .= " <ul>" . $lis . "</ul>";
1
  <?php
2
  /**
3
+ * @version $Id: selectbox.php 60288 2013-12-10 13:10:52Z jakub $
4
  * @author RocketTheme http://www.rockettheme.com
5
  * @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
6
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
88
 
89
  // $html .= " <div class='selectbox-top'>";
90
  // $html .= " <div class='selected'><span>" . $activeElement . "</span></div>";
91
+ // $html .= " <div class='rt-arrow'></div>";
92
  // $html .= " </div>";
93
  // $html .= " <div class='selectbox-dropdown'>";
94
  // $html .= " <ul>" . $lis . "</ul>";
admin/forms/fields/updater.php CHANGED
@@ -27,7 +27,7 @@ class GantryFormFieldUpdater extends GantryFormField
27
 
28
  $currentVersion = GANTRY_VERSION;
29
 
30
- if ($currentVersion == "\4.0.8") $currentVersion = "[DEV]";
31
 
32
  // curl check
33
  if (!function_exists('curl_version')) {
27
 
28
  $currentVersion = GANTRY_VERSION;
29
 
30
+ if ($currentVersion == "\4.1.0") $currentVersion = "[DEV]";
31
 
32
  // curl check
33
  if (!function_exists('curl_version')) {
admin/forms/groups/innertabs.php CHANGED
@@ -31,14 +31,24 @@ class GantryFormGroupInnerTabs extends GantryFormGroup
31
  <ul>
32
  <?php
33
  $i = 0;
 
34
  foreach ($this->fields as $field):
 
 
35
  $classes = '';
36
  if (!$i) $classes .= "first active";
37
  if ($i == count($this->fields) - 1) $classes .= ' last';
 
 
 
 
38
  ?>
39
  <li class="<?php echo $classes;?>">
40
- <span class="g4-cell g4-col1"><?php _ge($field->getLabel());?></span></li>
41
-
 
 
 
42
  <?php
43
  $i++;
44
  endforeach;
31
  <ul>
32
  <?php
33
  $i = 0;
34
+ $involvedCounts = array();
35
  foreach ($this->fields as $field):
36
+ $involved = 0;
37
+ $name = $field->name;
38
  $classes = '';
39
  if (!$i) $classes .= "first active";
40
  if ($i == count($this->fields) - 1) $classes .= ' last';
41
+ foreach ($field->fields as $inner_field) {
42
+ if ($inner_field->type != 'hidden' && $inner_field->type != 'innertabs' && $inner_field->setinoverride && $inner_field->variance) $involved++;
43
+ }
44
+ $involvedCounts[$name] = $involved;
45
  ?>
46
  <li class="<?php echo $classes;?>">
47
+ <span class="g4-cell g4-col1">
48
+ <span class="badge"><?php echo get_badges_layout($involvedCounts[$name]); ?></span>
49
+ <?php _ge($field->getLabel());?>
50
+ </span>
51
+ </li>
52
  <?php
53
  $i++;
54
  endforeach;
admin/index.php CHANGED
@@ -1,6 +1,6 @@
1
  <?php
2
  /**
3
- * @version $Id: index.php 59366 2013-03-14 09:59:08Z jakub $
4
  * @author RocketTheme http://www.rockettheme.com
5
  * @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
6
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
@@ -151,7 +151,7 @@ if ($override) {
151
  <div id="g4-master" class="<?php echo $flag; ?> g4-size-13">
152
  <div id="g4-flag">
153
  <?php echo $flag_text; ?>
154
- <span class="arrow"><span></span></span>
155
  </div>
156
  </div>
157
  <div id="g4-details"<?php echo $presetsShowing; ?>>
@@ -229,9 +229,16 @@ if ($override) {
229
  foreach ($fields as $fname => $field) {
230
  $position = $field->panel_position;
231
 
232
- if ($field->type != 'hidden' && $field->setinoverride && $field->variance) $involved++;
233
- if ($field->type == 'hidden') $position = 'hiddens';
234
- if (!isset($positions[$position][$name])) $positions[$position][$name] = array();
 
 
 
 
 
 
 
235
  array_push($positions[$position][$name], $field //array("name" => $field->name, "label" => $field->label, "input" => $field->input, "show_label" => $field->show_label, 'type' => $field->type)
236
  );
237
  }
@@ -243,17 +250,25 @@ if ($override) {
243
  if ($name == 'toolbar-panel') continue;
244
  ?>
245
  <li class="<?php echo $tabs[$name];?>">
246
- <span class="badge"><?php echo get_badges_layout($involved);?></span>
247
  <?php echo _g($fieldSet->label);?>
248
- <span class="arrow"><span><span></span></span></span>
249
  </li>
250
  <?php endforeach;?>
251
  <?php if ($override): ?>
252
  <?php $active_assignments = $activeTab == count($fieldSets) ? ' active' : ''; ?>
 
 
 
 
 
 
 
 
253
  <li class="assignments<?php echo $active_assignments; ?>">
254
- <span class="badge"><?php echo get_badges_layout($involved);?></span>
255
  <?php _ge('Assignments');?>
256
- <span class="arrow"><span><span></span></span></span>
257
  </li>
258
  <?php endif;?>
259
  </ul>
1
  <?php
2
  /**
3
+ * @version $Id: index.php 60302 2013-12-11 13:17:14Z jakub $
4
  * @author RocketTheme http://www.rockettheme.com
5
  * @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
6
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
151
  <div id="g4-master" class="<?php echo $flag; ?> g4-size-13">
152
  <div id="g4-flag">
153
  <?php echo $flag_text; ?>
154
+ <span class="rt-arrow"><span></span></span>
155
  </div>
156
  </div>
157
  <div id="g4-details"<?php echo $presetsShowing; ?>>
229
  foreach ($fields as $fname => $field) {
230
  $position = $field->panel_position;
231
 
232
+ if($field->type != 'hidden' && $field->type != 'innertabs' && $field->setinoverride && $field->variance) $involved++;
233
+ if($field->type == 'innertabs') {
234
+ foreach($field->fields as $inner_tab) {
235
+ foreach($inner_tab->fields as $inner_field) {
236
+ if($inner_field->type != 'hidden' && $inner_field->setinoverride && $inner_field->variance) $involved++;
237
+ }
238
+ }
239
+ }
240
+ if($field->type == 'hidden') $position = 'hiddens';
241
+ if(!isset($positions[$position][$name])) $positions[$position][$name] = array();
242
  array_push($positions[$position][$name], $field //array("name" => $field->name, "label" => $field->label, "input" => $field->input, "show_label" => $field->show_label, 'type' => $field->type)
243
  );
244
  }
250
  if ($name == 'toolbar-panel') continue;
251
  ?>
252
  <li class="<?php echo $tabs[$name];?>">
253
+ <span class="badge"><?php echo get_badges_layout($involvedCounts[$name]);?></span>
254
  <?php echo _g($fieldSet->label);?>
255
+ <span class="rt-arrow"><span><span></span></span></span>
256
  </li>
257
  <?php endforeach;?>
258
  <?php if ($override): ?>
259
  <?php $active_assignments = $activeTab == count($fieldSets) ? ' active' : ''; ?>
260
+ <?php
261
+ $assigned_to = 0;
262
+ if(is_array($override_assignments)) {
263
+ foreach(new RecursiveIteratorIterator(new RecursiveArrayIterator($override_assignments), RecursiveIteratorIterator::LEAVES_ONLY) as $countable_item) {
264
+ $assigned_to++;
265
+ };
266
+ }
267
+ ?>
268
  <li class="assignments<?php echo $active_assignments; ?>">
269
+ <span class="badge"><?php echo get_badges_layout($assigned_to);?></span>
270
  <?php _ge('Assignments');?>
271
+ <span class="rt-arrow"><span><span></span></span></span>
272
  </li>
273
  <?php endif;?>
274
  </ul>
admin/override.php CHANGED
@@ -1,6 +1,6 @@
1
  <?php
2
  /**
3
- * @version $Id: override.php 59366 2013-03-14 09:59:08Z jakub $
4
  * @author RocketTheme http://www.rockettheme.com
5
  * @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
6
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
@@ -132,7 +132,7 @@ if ($override !== false) {
132
  <div id="g4-master" class="<?php echo $flag; ?> g4-size-13">
133
  <div id="g4-flag">
134
  <?php echo $flag_text; ?>
135
- <span class="arrow"><span></span></span>
136
  </div>
137
  </div>
138
  <div id="g4-details"<?php echo $presetsShowing; ?>>
@@ -222,13 +222,13 @@ if ($override !== false) {
222
  <li class="<?php echo $tabs[$name];?>">
223
  <span class="badge"><?php echo get_badges_layout($involved);?></span>
224
  <?php echo _g($fieldSet->label);?>
225
- <span class="arrow"><span><span></span></span></span>
226
  </li>
227
  <?php endforeach;?>
228
  <li class="assignments">
229
  <span class="badge"><?php echo get_badges_layout($involved);?></span>
230
  <?php _ge('Assignments');?>
231
- <span class="arrow"><span><span></span></span></span>
232
  </li>
233
  </ul>
234
  </div>
1
  <?php
2
  /**
3
+ * @version $Id: override.php 60288 2013-12-10 13:10:52Z jakub $
4
  * @author RocketTheme http://www.rockettheme.com
5
  * @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
6
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
132
  <div id="g4-master" class="<?php echo $flag; ?> g4-size-13">
133
  <div id="g4-flag">
134
  <?php echo $flag_text; ?>
135
+ <span class="rt-arrow"><span></span></span>
136
  </div>
137
  </div>
138
  <div id="g4-details"<?php echo $presetsShowing; ?>>
222
  <li class="<?php echo $tabs[$name];?>">
223
  <span class="badge"><?php echo get_badges_layout($involved);?></span>
224
  <?php echo _g($fieldSet->label);?>
225
+ <span class="rt-arrow"><span><span></span></span></span>
226
  </li>
227
  <?php endforeach;?>
228
  <li class="assignments">
229
  <span class="badge"><?php echo get_badges_layout($involved);?></span>
230
  <?php _ge('Assignments');?>
231
+ <span class="rt-arrow"><span><span></span></span></span>
232
  </li>
233
  </ul>
234
  </div>
admin/widgets/assignments/js/assignments.js CHANGED
@@ -1,5 +1,5 @@
1
  /**
2
- * @version $Id: assignments.js 59361 2013-03-13 23:10:27Z btowles $
3
  * @author RocketTheme http://www.rockettheme.com
4
  * @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
5
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
@@ -324,6 +324,9 @@ Gantry.Assignments = {
324
  if (tab) {
325
  var badgeWrap = tab.getElement('.overrides-involved');
326
  var badge = badgeWrap.getElement('span');
 
 
 
327
  var value = badge.get('text').toInt();
328
  if (type == '+') value += 1;
329
  else value -= 1;
@@ -340,6 +343,34 @@ Gantry.Assignments = {
340
  else badgeWrap.getParent('.badges-involved').removeClass('double-badge');
341
  badgeWrap.setStyles({'display': 'block', 'opacity': 1, 'visibility': 'visible'});
342
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
343
  }
344
  },
345
 
1
  /**
2
+ * @version $Id: assignments.js 60303 2013-12-11 20:16:29Z djamil $
3
  * @author RocketTheme http://www.rockettheme.com
4
  * @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
5
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
324
  if (tab) {
325
  var badgeWrap = tab.getElement('.overrides-involved');
326
  var badge = badgeWrap.getElement('span');
327
+
328
+ var isInnerTab = el.getParent('.inner-panel');
329
+
330
  var value = badge.get('text').toInt();
331
  if (type == '+') value += 1;
332
  else value -= 1;
343
  else badgeWrap.getParent('.badges-involved').removeClass('double-badge');
344
  badgeWrap.setStyles({'display': 'block', 'opacity': 1, 'visibility': 'visible'});
345
  }
346
+
347
+ // badges in inner tabs
348
+ if (isInnerTab){
349
+ var index = isInnerTab.getParent('.inner-panels').getChildren().indexOf(isInnerTab),
350
+ innerPanelTab = isInnerTab.getParent('.inner-panels').getPrevious('.inner-tabs').getElements('ul > li')[index],
351
+ innerBadgeWrap = innerPanelTab.getElement('.overrides-involved'),
352
+ innerBadge = innerBadgeWrap.getElement('span');
353
+
354
+ value = innerBadge.get('text').toInt();
355
+
356
+ if (type == '+') value += 1;
357
+ else value -= 1;
358
+
359
+ if (value < 0) value = 0;
360
+
361
+ innerBadge.set('text', value);
362
+
363
+ if (!value) {
364
+ innerBadgeWrap.getParent('.badges-involved').removeClass('double-badge');
365
+ innerBadgeWrap.setStyle('display', 'none');
366
+ }
367
+ else {
368
+ if (innerBadgeWrap.getPrevious('.presets-involved').getStyle('display') == 'block') innerBadgeWrap.getParent('.badges-involved').addClass('double-badge');
369
+ else innerBadgeWrap.getParent('.badges-involved').removeClass('double-badge');
370
+ innerBadgeWrap.setStyles({'display': 'block', 'opacity': 1, 'visibility': 'visible'});
371
+ }
372
+ }
373
+
374
  }
375
  },
376
 
admin/widgets/colorchooser/css/mooRainbow-2.0.css CHANGED
@@ -1,5 +1,5 @@
1
  /**
2
- * @version 4.0.8 October 3, 2013
3
  * @author RocketTheme http://www.rockettheme.com
4
  * @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
5
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
@@ -10,7 +10,7 @@
10
  position:absolute;
11
  z-index:500;
12
  width:285px;
13
- height:153px;
14
  -webkit-border-radius:4px;
15
  -moz-border-radius:4px;
16
  border-radius:4px;
@@ -31,7 +31,7 @@
31
  font-size: 0.82em;
32
  visibility:hidden;
33
  }
34
- .moor-layout .arrow {
35
  top:50%;
36
  left:0;
37
  margin-top:-6px;
@@ -143,7 +143,7 @@
143
  -webkit-border-radius:2px;
144
  -moz-border-radius:2px;
145
  border-radius:2px;
146
- font-size: 1em;
147
  line-height: 1em;
148
  }
149
  .moor-layout .moor-inputs .moor-inputs-block.moor-inputs-hex { display:block; }
@@ -218,3 +218,12 @@ div.picker .overlay-transparent div {
218
  width:30px;
219
  height:31px;
220
  }
 
 
 
 
 
 
 
 
 
1
  /**
2
+ * @version 4.1.0 December 12, 2013
3
  * @author RocketTheme http://www.rockettheme.com
4
  * @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
5
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
10
  position:absolute;
11
  z-index:500;
12
  width:285px;
13
+ height:155px;
14
  -webkit-border-radius:4px;
15
  -moz-border-radius:4px;
16
  border-radius:4px;
31
  font-size: 0.82em;
32
  visibility:hidden;
33
  }
34
+ .moor-layout .rt-arrow {
35
  top:50%;
36
  left:0;
37
  margin-top:-6px;
143
  -webkit-border-radius:2px;
144
  -moz-border-radius:2px;
145
  border-radius:2px;
146
+ font-size: 0.9em;
147
  line-height: 1em;
148
  }
149
  .moor-layout .moor-inputs .moor-inputs-block.moor-inputs-hex { display:block; }
218
  width:30px;
219
  height:31px;
220
  }
221
+
222
+ /** WordPress < 3.8 Compatibility **/
223
+
224
+ .gantry-pre-mp6 .moor-layout {
225
+ height: 153px;
226
+ }
227
+ .gantry-pre-mp6 .moor-inputs .moor-inputs-block input {
228
+ font-size: 1em;
229
+ }
admin/widgets/colorchooser/css/mooRainbow-2.0.less CHANGED
@@ -4,7 +4,7 @@
4
  position: absolute;
5
  z-index: 500;
6
  width: 285px;
7
- height: 153px;
8
  .border-radius(4px);
9
  #gradient > .vertical(rgba(95, 95, 95, 0.9), rgba(51, 51, 51, 0.9));
10
  .box-shadow(0 0 20px rgba(0, 0, 0, 0.5));
@@ -14,7 +14,7 @@
14
  font-size: 0.82em;
15
  visibility: hidden;
16
 
17
- .arrow {
18
  #CSSArrow > .right(6px, rgba(95, 95, 95, 0.9));
19
  position: absolute;
20
  left: -6px;
@@ -132,7 +132,7 @@
132
  border: 1px solid #444;
133
  margin: 0 4px;
134
  .border-radius(2px);
135
- font-size: 1em;
136
  line-height: 1em;
137
  }
138
 
@@ -223,3 +223,18 @@ div.picker {
223
  }
224
  }
225
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4
  position: absolute;
5
  z-index: 500;
6
  width: 285px;
7
+ height: 155px;
8
  .border-radius(4px);
9
  #gradient > .vertical(rgba(95, 95, 95, 0.9), rgba(51, 51, 51, 0.9));
10
  .box-shadow(0 0 20px rgba(0, 0, 0, 0.5));
14
  font-size: 0.82em;
15
  visibility: hidden;
16
 
17
+ .rt-arrow {
18
  #CSSArrow > .right(6px, rgba(95, 95, 95, 0.9));
19
  position: absolute;
20
  left: -6px;
132
  border: 1px solid #444;
133
  margin: 0 4px;
134
  .border-radius(2px);
135
+ font-size: 0.9em;
136
  line-height: 1em;
137
  }
138
 
223
  }
224
  }
225
  }
226
+
227
+ /** WordPress < 3.8 Compatibility **/
228
+
229
+ .gantry-pre-mp6 {
230
+ .moor-layout {
231
+ height: 153px;
232
+ }
233
+ .moor-inputs {
234
+ .moor-inputs-block {
235
+ input {
236
+ font-size: 1em;
237
+ }
238
+ }
239
+ }
240
+ }
admin/widgets/colorchooser/js/mooRainbow-2.0.js CHANGED
@@ -269,7 +269,11 @@
269
  };
270
 
271
  this.sets = {rgb: rgb, hsb: hsb, hex: hex};
272
- hue = new Color([this.sets.hsb[0], 100, 100]).hsbToRgb(true);
 
 
 
 
273
 
274
  ['red', 'green', 'blue', 'hue', 'saturation', 'brightness', 'hex'].each(function(set, i){
275
  input = this.layout.getElement('[data-moorainbow-input-'+set+']');
@@ -347,7 +351,7 @@
347
 
348
  buttons = new Element('div.moor-buttons').inject(layout),
349
 
350
- indicator = new Element('span.arrow').inject(layout);
351
 
352
  ['red', 'green', 'blue', 'hue', 'saturation', 'brightness', 'hex'].each(function(type){
353
  label = (type != 'hex') ? type[0].capitalize() : '# ' + type;
@@ -433,7 +437,9 @@
433
  _hsbToHex: function(hsb){
434
  hsb = hsb || this._getHSB();
435
 
436
- return hsb.hsbToRgb().rgbToHex();
 
 
437
  },
438
 
439
  _hexToHsb: function(hex){
269
  };
270
 
271
  this.sets = {rgb: rgb, hsb: hsb, hex: hex};
272
+ if (Color.prototype.toHsv){
273
+ hue = new Color({h: hsb[0], s: 100, v: 100}).toString();
274
+ } else {
275
+ hue = new Color([this.sets.hsb[0], 100, 100]).hsbToRgb(true);
276
+ }
277
 
278
  ['red', 'green', 'blue', 'hue', 'saturation', 'brightness', 'hex'].each(function(set, i){
279
  input = this.layout.getElement('[data-moorainbow-input-'+set+']');
351
 
352
  buttons = new Element('div.moor-buttons').inject(layout),
353
 
354
+ indicator = new Element('span.rt-arrow').inject(layout);
355
 
356
  ['red', 'green', 'blue', 'hue', 'saturation', 'brightness', 'hex'].each(function(type){
357
  label = (type != 'hex') ? type[0].capitalize() : '# ' + type;
437
  _hsbToHex: function(hsb){
438
  hsb = hsb || this._getHSB();
439
 
440
+ var toRgb = hsb.hsbToRgb() || hsb.toRgb(),
441
+ toHex = toRgb.rgbToHex() || toRgb.toString();
442
+ return toHex;
443
  },
444
 
445
  _hexToHsb: function(hex){
admin/widgets/gantry-administrator.css CHANGED
@@ -1 +1 @@
1
- .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;}.rok-left{float:left;}.rok-right{float:right;}.rok-dropdown-group,.rok-dropdown{position:relative;}.rok-dropdown-open .rok-dropdown{display:block;}.rok-popover-group,.rok-popover{position:relative;}.rok-popover-open .rok-popover{display:block;}i{background-image:url("") !important;background-repeat:no-repeat;background-position:16px 16px;vertical-align:text-top;font-style:normal;display:inline-block;width:16px;height:16px;*margin-right:.3em;}i:last-child{*margin-left:0;}#g4-toolbar ul{list-style:none;margin-right:10px;margin-top:-25px;padding:0;}body{line-height:18px !important;}body div#element-box,body div#element-box div.m{padding:0;border-top:0;border-bottom:0;margin:0 5px;background-color:transparent;-webkit-border-radius:0 0 4px 4px;-moz-border-radius:0 0 4px 4px;border-radius:0 0 4px 4px;}body .subhead-collapse{display:none;}body .container-fluid{padding:0 1px;}body input:focus,body select:focus{background:#fff;}.g4-messages,.g4-messages .message{display:none;}html #mc-component .g4-wrap{margin:-14px -14px;}html #mc-component #g4-master{right:0;}body{padding-left:0 !important;padding-right:0 !important;}body .navbar-fixed-top,body .navbar-fixed-bottom,body .container-fluid,body .header{margin-left:0;margin-right:0;}html{overflow-y:auto !important;}html #toolbar-box{display:none;}html #content-box{font-family:Arial, sans-serif;float:none;border:0;width:auto;margin:0 -10px 10px;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;}html #system-message{position:relative;text-shadow:0 1px 0 #fff;display:none;}html #system-message .close{position:absolute;right:0;top:0;text-align:center;line-height:35px;width:35px;height:35px;cursor:pointer;font-size:130%;display:none;}html #system-message-container #system-message{display:block;}html #system-message-container #system-message .message{display:none;}html #system-message-container #system-message .error.message{display:block;}html h1{margin:0;padding:0;font-family:"Oxygen", Arial, sans-serif;font-size:30px;color:#484848;font-weight:normal;text-shadow:0 1px 0 #fff;}#assignments-panel{display:table;}#assignments-panel .g4-panel-left{display:table;}#assignments-panel .g4-panel-left .assignments-left,#assignments-panel .g4-panel-left .assignments-right{display:table-cell;vertical-align:top;}#assignments-panel .g4-panel-left h2{font-size:1.2em;margin:2px 0;}#assignments-panel .g4-panel-left .assignments-block{margin:10px;padding:10px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 1px 0 0 #ddd inset, 0 2px 0 0 #f4f4f4 inset, 0 -1px 0 0 #ddd inset, 0 -2px 0 0 #f4f4f4 inset, 1px 0 0 0 #ddd inset, 2px 0 0 0 #f4f4f4 inset, -1px 0 0 0 #ddd inset, -2px 0 0 0 #f4f4f4 inset;-moz-box-shadow:0 1px 0 0 #ddd inset, 0 2px 0 0 #f4f4f4 inset, 0 -1px 0 0 #ddd inset, 0 -2px 0 0 #f4f4f4 inset, 1px 0 0 0 #ddd inset, 2px 0 0 0 #f4f4f4 inset, -1px 0 0 0 #ddd inset, -2px 0 0 0 #f4f4f4 inset;box-shadow:0 1px 0 0 #ddd inset, 0 2px 0 0 #f4f4f4 inset, 0 -1px 0 0 #ddd inset, 0 -2px 0 0 #f4f4f4 inset, 1px 0 0 0 #ddd inset, 2px 0 0 0 #f4f4f4 inset, -1px 0 0 0 #ddd inset, -2px 0 0 0 #f4f4f4 inset;}#assignments-panel .g4-panel-left .assignments-block .assignment-search{-webkit-box-shadow:0 2px 2px 0 rgba(0, 0, 0, 0.1) inset, 0 1px 0 0 #fff;-moz-box-shadow:0 2px 2px 0 rgba(0, 0, 0, 0.1) inset, 0 1px 0 0 #fff;box-shadow:0 2px 2px 0 rgba(0, 0, 0, 0.1) inset, 0 1px 0 0 #fff;background:#fff;padding:2px 5px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;margin-top:10px;border:1px solid #cfcfcf;border-top-color:#c6c6c6;opacity:0.5;filter:alpha(opacity=50);}#assignments-panel .g4-panel-left .assignments-block .assignment-search input{background:transparent;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;padding:0;border:0;text-indent:0;width:100%;font-size:11px;}#assignments-panel .g4-panel-left .assignments-block:hover .assignment-search{opacity:1;filter:alpha(opacity=100);}#assignments-panel .g4-panel-left .assignments-block ul ul{margin-left:18px;}#assignments-panel .g4-panel-left .assignments-left{width:70%;}#assignments-panel .g4-panel-left .assignments-left .assignments-block{background:#f6f6f6;-webkit-box-shadow:0 1px 0 0 #ddd inset, 0 2px 0 0 #fff inset, 0 -1px 0 0 #ddd inset, 0 -2px 0 0 #fff inset, 1px 0 0 0 #ddd inset, 2px 0 0 0 #fff inset, -1px 0 0 0 #ddd inset, -2px 0 0 0 #fff inset;-moz-box-shadow:0 1px 0 0 #ddd inset, 0 2px 0 0 #fff inset, 0 -1px 0 0 #ddd inset, 0 -2px 0 0 #fff inset, 1px 0 0 0 #ddd inset, 2px 0 0 0 #fff inset, -1px 0 0 0 #ddd inset, -2px 0 0 0 #fff inset;box-shadow:0 1px 0 0 #ddd inset, 0 2px 0 0 #fff inset, 0 -1px 0 0 #ddd inset, 0 -2px 0 0 #fff inset, 1px 0 0 0 #ddd inset, 2px 0 0 0 #fff inset, -1px 0 0 0 #ddd inset, -2px 0 0 0 #fff inset;float:left;width:28%;}#assignments-panel .g4-panel-left .assignments-left .assignments-block.assignments-block-center{margin-left:0;margin-right:0;}#assignments-panel .g4-panel-left .assignments-left .assignments-block.assignments-block-right{margin-right:0;}#assignments-panel .g4-panel-left .assignments-left .assignments-block h2{min-height:19px;}#assignments-panel .g4-panel-left .assignments-left .assignments-block h2 label{display:inline-block;}#assignments-panel .g4-panel-left .assignments-left .assignments-block h2.added label{display:none;}#assignments-panel .g4-panel-left .assignments-left .assignments-block h2.added{text-decoration:line-through;}#assignments-panel .g4-panel-left .assignments-left .assignments-block .inside{height:250px;overflow:auto;margin:10px 0;}#assignments-panel .g4-panel-left .assignments-left .assignments-block .inside label,#assignments-panel .g4-panel-left .assignments-left .assignments-block .inside a{display:inline;}#assignments-panel .g4-panel-left .assignments-left .assignments-block .inside a{color:#666;text-decoration:none;}#assignments-panel .g4-panel-left .assignments-left .assignments-block .inside li.added > label,#assignments-panel .g4-panel-left .assignments-left .assignments-block .inside.added label{visibility:hidden;}#assignments-panel .g4-panel-left .assignments-left .assignments-block .inside li.added > a,#assignments-panel .g4-panel-left .assignments-left .assignments-block .inside.added a{text-decoration:line-through;color:#999;}#assignments-panel .g4-panel-left .assignments-left .assignments-block .inside p{margin:0;}#assignments-panel .g4-panel-left .assignments-right{width:30%;}#assignments-panel .g4-panel-left .assignments-right .assignments-block{margin:10px 10px 10px 0;background-color:#d6d6d6;background-image:-moz-linear-gradient(top,#ddd,#ccc);background-image:-ms-linear-gradient(top,#ddd,#ccc);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ddd),to(#ccc));background-image:-webkit-linear-gradient(top,#ddd,#ccc);background-image:-o-linear-gradient(top,#ddd,#ccc);background-image:linear-gradient(top,#ddd,#ccc);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#dddddd', endColorstr='#cccccc', GradientType=0);}#assignments-panel .g4-panel-left .assignments-right .assignments-block #assigned-list{margin-top:10px;}#assignments-panel .g4-panel-left .assignments-right .assignments-block h2{color:#D54E21;}#assignments-panel .g4-panel-left .assignments-right .assignments-block li{display:block;background-color:#a3a3a3;background-image:-moz-linear-gradient(top,#aaa,#999);background-image:-ms-linear-gradient(top,#aaa,#999);background-image:-webkit-gradient(linear,0 0,0 100%,from(#aaa),to(#999));background-image:-webkit-linear-gradient(top,#aaa,#999);background-image:-o-linear-gradient(top,#aaa,#999);background-image:linear-gradient(top,#aaa,#999);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#aaaaaa', endColorstr='#999999', GradientType=0);border:1px solid #888;-webkit-border-radius:12px;-moz-border-radius:12px;border-radius:12px;padding:4px 10px;font-size:11px;margin-bottom:5px;margin-left:10px;position:relative;}#assignments-panel .g4-panel-left .assignments-right .assignments-block li.empty{margin-left:0;}#assignments-panel .g4-panel-left .assignments-right .assignments-block li span.link{float:left;color:#111;text-shadow:0 1px 0 #ccc;}#assignments-panel .g4-panel-left .assignments-right .assignments-block li span.link a{text-decoration:none;color:#111;text-shadow:0 1px 0 #ccc;cursor:default;}#assignments-panel .g4-panel-left .assignments-right .assignments-block li span.type{color:#444;border-left:1px solid #888;text-shadow:0 1px 0 #ccc;text-transform:uppercase;padding-left:10px;float:right;}#assignments-panel .g4-panel-left .assignments-right .assignments-block li span.delete-assigned{font-size:15px;position:absolute;font-weight:bold;cursor:pointer;left:-13px;top:3px;color:#666;}#assignments-panel .g4-panel-left .assignments-right .assignments-block li span.delete-assigned:hover{color:#b01c14;}#assignments-panel .g4-panel-left .assignments-right #assigned_override_items{position:absolute;width:1px;height:1px;visibility:hidden;}#assignments-panel .g4-panel-left .footer-block{line-height:2em;}#assignments-panel .g4-panel-left .footer-block .select-all{float:left;}#assignments-panel .g4-panel-left .footer-block .add-button{float:right;}.assignments-search{text-align:center;}.assignments-search label{font-weight:bold;font-size:1.5em;}.assignments-search input{width:50%;font-weight:normal;}.assignments-search,.assignment-search{position:relative;}.assignments-search .assignment-search-clear,.assignment-search .assignment-search-clear{position:absolute;top:3px;right:3px;height:7px;padding:4px;font-weight:bold;line-height:7px !important;border:1px solid #ccc;background:#eee;color:#888;-webkit-border-radius:20px;-moz-border-radius:20px;border-radius:20px;display:none;cursor:pointer;}.assignments-search .assignment-search-clear:hover,.assignment-search .assignment-search-clear:hover{background:#f9f9f9;}.assignments-search-global-wrapper{position:relative;display:inline;}.assignments-search-global-wrapper label{display:inherit !important;}.assignments-search-global-wrapper .assignment-search-clear{top:1px;right:12px;}.g4-wrap{width:100%;}#wpcontent{margin-left:147px;}@media only screen and (max-width: 900px){#wpcontent{margin-left:34px;}}body .html-field{background:transparent;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;border:none;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;}body #icon-themes{margin:-10px 10px 0;}.g4-wrap input,.g4-wrap textarea{-webkit-box-sizing:inherit !important;-moz-box-sizing:inherit !important;-ms-box-sizing:inherit !important;box-sizing:inherit !important;}.g4-notice{position:relative;}.g4-notice .close{position:absolute;top:6px;right:9px;cursor:pointer;}.g4-actions .spinner{float:left;display:inline-block;display:none;}.inner-tabs{-webkit-box-shadow:0 1px 0 0 #DDD inset, 0 2px 0 0 #FFF inset;-moz-box-shadow:0 1px 0 0 #DDD inset, 0 2px 0 0 #FFF inset;box-shadow:0 1px 0 0 #DDD inset, 0 2px 0 0 #FFF inset;}.inner-tabs li{cursor:pointer;display:inline-block;margin-bottom:-6px;border-right:1px solid #d1d1d1;border-left:1px solid #f1f1f1;}.inner-tabs li label{font-weight:normal;}.inner-tabs li.first{border-left:0;}.inner-tabs li.hover label{color:#000;}.inner-tabs li.active label{color:#2287C7;font-weight:bold;}.inner-tabs li .g4-cell.g4-col1{background:transparent;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;width:auto;}.inner-tabs li .g4-cell.g4-col1 label{padding-left:0;}.inner-panel > .wrapper{display:table;width:100%;}#overrides-actions{float:left;margin:12px 0 0 8px;min-width:180px;position:relative;z-index:100;}#overrides-actions .add-edit-input{position:absolute;width:85%;height:9px;top:3px;font-size:90%;padding:3px 0;}#overrides-first{padding:3px 30px 4px 12px;line-height:15px;border:1px solid #c0c0c0;-webkit-border-radius:12px;-moz-border-radius:12px;border-radius:12px;background:-moz-linear-gradient(bottom,#e7e7e7,#fff);background:-webkit-gradient(linear,left bottom,left top,from(#e7e7e7),to(#fff));}#overrides-first.slide-down{border-bottom:none;-webkit-border-radius:12px 12px 0 0;-moz-border-radius:12px 12px 0 0;border-radius:12px 12px 0 0;}#overrides-actions a{color:#464646;display:block;font-size:11px;text-decoration:none;padding:3px 5px 3px 10px;}body #overrides-first a{background:url(images/overrides-default.png) 0 50% no-repeat;padding:0 0 0 18px;}#overrides-actions a:hover{color:#000;text-decoration:underline;}#overrides-first a:hover{text-decoration:none;}#overrides-toggle{background:url(images/overrides-arrow.gif) 0 -4px no-repeat;height:22px;position:absolute;right:0px;top:1px;width:28px;cursor:pointer;}#overrides-toggle.hidden{display:none;}#overrides-inside{background-color:#FFFFFF;border-color:#C0C0C0;margin:0;padding:2px 1px;border-width:1px;border-style:solid;position:absolute;z-index:11;display:none;-webkit-border-radius:0 0 12px 12px;-moz-border-radius:0 0 12px 12px;border-radius:0 0 12px 12px;}#overrides-toolbar{float:left;margin:12px 0 0 5px;position:relative;}#overrides-toolbar .overrides-button{float:left;width:29px;height:24px;background:url(images/overrides-toolbar.png);cursor:pointer;}#overrides-toolbar .overrides-button span{display:none;}#overrides-toolbar .button-del{background-position:-29px 0;width:28px;}#overrides-toolbar .button-edit{background-position:-57px 0;}#overrides-toolbar .button-add:hover{background-position:0 -24px;}#overrides-toolbar .button-del:hover{background-position:-29px -24px;}#overrides-toolbar .button-edit:hover{background-position:-57px -24px;}.text-button{display:inline-block;height:24px;background:url(images/overrides-buttons-l.png) 0 0 no-repeat;text-decoration:none;}.text-button span{font-size:11px;font-family:"Lucida Grande", Verdana, Arial, "Bitstream Vera Sans", sans-serif;color:#333;display:inline-block;background:url(images/overrides-buttons-r.png) 100% 0 no-repeat;margin-left:20px;padding:0 10px 0 5px;line-height:24px;height:24px;}.text-button:hover span{color:#000;background-position:100% -24px;}.text-button.button-widget{background-position:0 -48px;}.text-button.button-widget:hover{background-position:0 -72px;}#overrides-switch{float:left;margin:12px 0 0 5px;position:relative;}.g4-wrapper{width:100%;}.clr{clear:both;}.g4-size-60{width:60%;}.g4-size-50{width:50%;}.g4-size-40{width:40%;}.g4-size-35{width:35%;}.g4-size-30{width:30%;}.g4-size-25{width:25%;}.g4-size-20{width:20%;}.g4-size-15{width:15%;}.g4-size-13{width:13%;}#g4-hidden{display:none;}#g4-logo{position:relative;float:right;margin:0 0 0 0;width:160px;height:48px;overflow:hidden;}#g4-logo span{display:block;position:absolute;top:9px;right:23px;width:120px;height:32px;background:url(images/g4-logo-small.png);}.g4-tabs{display:block;height:50px;}.g4-actions{float:right;}.g4-tabs > li,.g4-actions > li{float:left;vertical-align:middle;}.width-100pc{width:100%;}#g4-toolbar{background-color:#f8f8f8;background-image:-moz-linear-gradient(top,#fff,#ededed);background-image:-ms-linear-gradient(top,#fff,#ededed);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fff),to(#ededed));background-image:-webkit-linear-gradient(top,#fff,#ededed);background-image:-o-linear-gradient(top,#fff,#ededed);background-image:linear-gradient(top,#fff,#ededed);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#ededed', GradientType=0);padding:30px 0;width:100%;-webkit-box-shadow:0 -1px 0 0 #cbcbcb inset, 0 -2px 0 0 #fff inset;-moz-box-shadow:0 -1px 0 0 #cbcbcb inset, 0 -2px 0 0 #fff inset;box-shadow:0 -1px 0 0 #cbcbcb inset, 0 -2px 0 0 #fff inset;}#g4-toolbar h1{padding:0 15px;}#g4-toolbar .rok-button{margin-left:5px;font-size:13px;}#g4-toolbar .rok-buttons-group .rok-button:last-child{margin-left:-3px;}#g4-toolbar .rok-buttons-group .caret{height:4px;}#g4-details-wrapper{position:relative;}#g4-master{position:absolute;background-color:#e43e1f;background-image:-moz-linear-gradient(top,#f54221,#ca381c);background-image:-ms-linear-gradient(top,#f54221,#ca381c);background-image:-webkit-gradient(linear,0 0,0 100%,from(#f54221),to(#ca381c));background-image:-webkit-linear-gradient(top,#f54221,#ca381c);background-image:-o-linear-gradient(top,#f54221,#ca381c);background-image:linear-gradient(top,#f54221,#ca381c);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#f54221', endColorstr='#ca381c', GradientType=0);top:-1px;bottom:0px;right:0;z-index:1;border:1px solid #b03018;-webkit-box-shadow:0 2px 8px 0 rgba(0,0,0,0.3) inset;-moz-box-shadow:0 2px 8px 0 rgba(0,0,0,0.3) inset;box-shadow:0 2px 8px 0 rgba(0,0,0,0.3) inset;}#g4-master.g4-flag-override{background-color:#b8b8b8;background-image:-moz-linear-gradient(top,#ccc,#999);background-image:-ms-linear-gradient(top,#ccc,#999);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ccc),to(#999));background-image:-webkit-linear-gradient(top,#ccc,#999);background-image:-o-linear-gradient(top,#ccc,#999);background-image:linear-gradient(top,#ccc,#999);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#cccccc', endColorstr='#999999', GradientType=0);border:1px solid #999;}#g4-master #g4-flag{text-align:center;position:relative;line-height:50px;font-size:17px;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.5);}#g4-master #g4-flag > .arrow,#g4-master #g4-flag > .arrow span{position:absolute;display:block;width:5px;}#g4-master #g4-flag > .arrow{top:50%;right:0;margin-top:-7px;border-top:7px solid transparent;border-bottom:7px solid transparent;border-left:7px solid #ececec;left:-2px;top:50%;z-index:10;}#g4-details{border-top:1px solid #fff;background:#ececec;height:50px;position:relative;}#g4-details.presets-showing{border-bottom:1px solid #cbcbcb;}#g4-presets{background-color:#f4f4f4;background-image:-moz-linear-gradient(top,#ececec,#fff);background-image:-ms-linear-gradient(top,#ececec,#fff);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ececec),to(#fff));background-image:-webkit-linear-gradient(top,#ececec,#fff);background-image:-o-linear-gradient(top,#ececec,#fff);background-image:linear-gradient(top,#ececec,#fff);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ececec', endColorstr='#ffffff', GradientType=0);-webkit-box-shadow:0 1px 0 0 #fff inset;-moz-box-shadow:0 1px 0 0 #fff inset;box-shadow:0 1px 0 0 #fff inset;}#g4-container{margin-top:-2px;padding-bottom:1px;border-bottom:1px solid #ccc;margin:0;-webkit-border-radius:0 0 4px 4px;-moz-border-radius:0 0 4px 4px;border-radius:0 0 4px 4px;}#g4-container .g4-header{border-top:1px solid #bcbcbc;background-color:#e6e6e6;-webkit-box-shadow:0 -1px 0 0 #fefefe inset, 0 -2px 0 0 #d1d1d1 inset, 0 5px 8px #cecece inset, 0 -3px 8px #dedede inset;-moz-box-shadow:0 -1px 0 0 #fefefe inset, 0 -2px 0 0 #d1d1d1 inset, 0 5px 8px #cecece inset, 0 -3px 8px #dedede inset;box-shadow:0 -1px 0 0 #fefefe inset, 0 -2px 0 0 #d1d1d1 inset, 0 5px 8px #cecece inset, 0 -3px 8px #dedede inset;}#g4-container .g4-body{background:#fff;background-color:#fcfcfc;background-image:-webkit-gradient(linear,0 0,0 100%,from(#f3f3f3),color-stop(50%,#fff),to(#f0f0f0));background-image:-webkit-linear-gradient(#f3f3f3,#fff 50%,#f0f0f0);background-image:-moz-linear-gradient(top,#f3f3f3,#fff 50%,#f0f0f0);background-image:-ms-linear-gradient(#f3f3f3,#fff 50%,#f0f0f0);background-image:-o-linear-gradient(#f3f3f3,#fff 50%,#f0f0f0);background-image:linear-gradient(#f3f3f3,#fff 50%,#f0f0f0);background-repeat:no-repeat;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#f3f3f3', endColorstr='#f0f0f0', GradientType=0);}.g4-tabs li{color:#717077;padding:15px 20px;margin:0;text-shadow:0 1px 0 #fff;-webkit-box-shadow:-1px 0 0 0 #f1f1f1 inset, -2px 0 0 0 #d1d1d1 inset;-moz-box-shadow:-1px 0 0 0 #f1f1f1 inset, -2px 0 0 0 #d1d1d1 inset;box-shadow:-1px 0 0 0 #f1f1f1 inset, -2px 0 0 0 #d1d1d1 inset;cursor:pointer;}.g4-tabs li.active .arrow{display:none;}.g4-tabs li:hover{color:#000;}.g4-tabs li.active{margin-top:1px;padding-top:14px;background-color:#e8e8e8;background-image:-moz-linear-gradient(top,#efefef,#ddd);background-image:-ms-linear-gradient(top,#efefef,#ddd);background-image:-webkit-gradient(linear,0 0,0 100%,from(#efefef),to(#ddd));background-image:-webkit-linear-gradient(top,#efefef,#ddd);background-image:-o-linear-gradient(top,#efefef,#ddd);background-image:linear-gradient(top,#efefef,#ddd);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#efefef', endColorstr='#dddddd', GradientType=0);-webkit-box-shadow:-1px 0 0 0 #f1f1f1 inset, -2px 0 0 0 #d1d1d1 inset, 0 2px 2px -1px rgba(0, 0, 0, 0.1) inset;-moz-box-shadow:-1px 0 0 0 #f1f1f1 inset, -2px 0 0 0 #d1d1d1 inset, 0 2px 2px -1px rgba(0, 0, 0, 0.1) inset;box-shadow:-1px 0 0 0 #f1f1f1 inset, -2px 0 0 0 #d1d1d1 inset, 0 2px 2px -1px rgba(0, 0, 0, 0.1) inset;color:#2287c7;position:relative;}.g4-tabs li.active .arrow,.g4-tabs li.active .arrow span{position:absolute;display:block;}.g4-tabs li.active .arrow{top:0;left:50%;margin-left:-7px;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #bbb;bottom:0;top:inherit;}.g4-tabs li.active .arrow span{top:0;left:50%;margin-left:-7px;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #fff;margin-left:-6px;top:1px;}.g4-tabs li.active .arrow span span{top:0;left:50%;margin-left:-7px;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #f6f6f6;top:1px;margin-left:-6px;}.g4-tabs li .badge{padding:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;}#g4-container .presets-involved,#g4-container .overrides-involved,#g4-container .preset-info,#g4-container .menuitems-involved{-webkit-border-radius:20px;-moz-border-radius:20px;border-radius:20px;background-color:#e3461e;background-image:-moz-linear-gradient(top,#D23C12,#FC562F);background-image:-ms-linear-gradient(top,#D23C12,#FC562F);background-image:-webkit-gradient(linear,0 0,0 100%,from(#D23C12),to(#FC562F));background-image:-webkit-linear-gradient(top,#D23C12,#FC562F);background-image:-o-linear-gradient(top,#D23C12,#FC562F);background-image:linear-gradient(top,#D23C12,#FC562F);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#d23c12', endColorstr='#fc562f', GradientType=0);-webkit-box-shadow:0 2px 2px 0 rgba(0,0,0,0.3) inset, 0 1px 0 0 #fff;-moz-box-shadow:0 2px 2px 0 rgba(0,0,0,0.3) inset, 0 1px 0 0 #fff;box-shadow:0 2px 2px 0 rgba(0,0,0,0.3) inset, 0 1px 0 0 #fff;float:right;height:6px;line-height:7px;margin-top:-3px;margin-bottom:-5px;margin-right:-10px;margin-left:10px;padding:9px;color:#fff;text-shadow:none;display:none;opacity:0;visibility:hidden;}#g4-container .preset-info{width:4px;height:4px;padding:4px;line-height:4px;-webkit-border-radius:30px;-moz-border-radius:30px;border-radius:30px;position:absolute;top:17px;left:-5px;margin:0;display:block;opacity:1;filter:alpha(opacity=100);visibility:visible;}#g4-container .overrides-involved{background-color:#2287c9;background-image:-moz-linear-gradient(top,#1d79b5,#2a9de6);background-image:-ms-linear-gradient(top,#1d79b5,#2a9de6);background-image:-webkit-gradient(linear,0 0,0 100%,from(#1d79b5),to(#2a9de6));background-image:-webkit-linear-gradient(top,#1d79b5,#2a9de6);background-image:-o-linear-gradient(top,#1d79b5,#2a9de6);background-image:linear-gradient(top,#1d79b5,#2a9de6);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#1d79b5', endColorstr='#2a9de6', GradientType=0);}#g4-container .menuitems-involved{display:block;opacity:1;visibility:visible;background-color:#adadad;background-image:-moz-linear-gradient(top,#bbb,#999);background-image:-ms-linear-gradient(top,#bbb,#999);background-image:-webkit-gradient(linear,0 0,0 100%,from(#bbb),to(#999));background-image:-webkit-linear-gradient(top,#bbb,#999);background-image:-o-linear-gradient(top,#bbb,#999);background-image:linear-gradient(top,#bbb,#999);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#bbbbbb', endColorstr='#999999', GradientType=0);}#g4-container .double-badge .presets-involved{-webkit-border-radius:0 8px 8px 0;-moz-border-radius:0 8px 8px 0;border-radius:0 8px 8px 0;}#g4-container .double-badge .overrides-involved{-webkit-border-radius:8px 0 0 8px;-moz-border-radius:8px 0 0 8px;border-radius:8px 0 0 8px;}.override-wrap #g4-container .preset-info{left:-15px;}#g4-actions li{margin:0 4px;}#g4-panels{padding-top:20px;}.g4-panel{visibility:hidden;margin-bottom:40px;top:-10000px;left:-10000px;width:100%;border-bottom:1px solid #ddd;-webkit-box-shadow:0 1px 1px 0 #fefefe;-moz-box-shadow:0 1px 1px 0 #fefefe;box-shadow:0 1px 1px 0 #fefefe;}.g4-panel.active-panel{visibility:visible;top:0;left:0;}.g4-panel.panel-overview{border:0;margin-bottom:0;}.g4-panel.panel-overview .panelform .g4-row .g4-col2{-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;background:inherit;}.g4-panel.panel-overview .g4-col1{display:none;}.g4-panel.panel-overview div.template-preview{float:left;margin-right:35px;width:40%;}.g4-panel.panel-overview div.template-preview img{width:100%;margin-top:-10px;}.g4-panel.panel-overview .template-description{margin-left:45%;margin-right:20px;}.g4-panel.panel-overview img.template-preview{float:left;margin-right:30px;margin-bottom:20px;}.g4-panel-left,.g4-panel-right{float:left;position:relative;}.g4-panel-left{width:100%;}.panel-overview .g4-panel-left{width:70%;}.panel-overview .g4-panel-right{width:30%;}.g4-panel-hiddens{position:absolute;visibility:hidden;height:0;}.backgroundpicker{position:relative;}.updater-field,.tips-field,.html-field{background:#eaeaea;border:1px solid #c8c8c8;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;margin-right:20px;margin-bottom:20px;padding:20px;-webkit-box-shadow:0 1px 0 0 #fff, 0 2px 6px 0 rgba(66,66,66,0.2) inset;-moz-box-shadow:0 1px 0 0 #fff, 0 2px 6px 0 rgba(66,66,66,0.2) inset;box-shadow:0 1px 0 0 #fff, 0 2px 6px 0 rgba(66,66,66,0.2) inset;}.updater-field .h2bar,.tips-field .h2bar,.html-field .h2bar{display:block;min-height:36px;margin-bottom:5px;padding:0;}.updater-field{background-color:#258fd2;background-image:-moz-linear-gradient(top,#2A9DE6,#1D79B5);background-image:-ms-linear-gradient(top,#2A9DE6,#1D79B5);background-image:-webkit-gradient(linear,0 0,0 100%,from(#2A9DE6),to(#1D79B5));background-image:-webkit-linear-gradient(top,#2A9DE6,#1D79B5);background-image:-o-linear-gradient(top,#2A9DE6,#1D79B5);background-image:linear-gradient(top,#2A9DE6,#1D79B5);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#2a9de6', endColorstr='#1d79b5', GradientType=0);}.updater-field.update{background-color:#e43e1f;background-image:-moz-linear-gradient(top,#f54221,#ca381c);background-image:-ms-linear-gradient(top,#f54221,#ca381c);background-image:-webkit-gradient(linear,0 0,0 100%,from(#f54221),to(#ca381c));background-image:-webkit-linear-gradient(top,#f54221,#ca381c);background-image:-o-linear-gradient(top,#f54221,#ca381c);background-image:linear-gradient(top,#f54221,#ca381c);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#f54221', endColorstr='#ca381c', GradientType=0);}.tips-field{position:relative;padding-bottom:50px;}.tips-field .gantrytips-controller{position:absolute;bottom:20px;right:10px;}.tips-field .gantrytips-controller .rok-button{font-size:10px;color:#555 !important;}.tips-field .gantrytips-count{position:absolute;bottom:20px;left:20px;color:#999 !important;}.tips-field .gantrytips-wrapper{position:relative;}.tips-field .gantrytips-wrapper .gantrytips-tip{display:none;}.tips-field .gantrytips-wrapper .gantrytips-tip:first-child{display:block;}.panelform{display:table;border-collapse:collapse;width:100%;}.panelform .selectedset-fields{display:table-row-group;}.panelform .selectedset-fields .g4-row:first-child .g4-cell.g4-col2{-webkit-box-shadow:0 1px 0 0 #d1d1d1 inset, 0 2px 0 0 #fbfbfb inset, 2px 0 3px rgba(99,99,99,0.05) inset, 1px 0 0 0 #dddddd inset;-moz-box-shadow:0 1px 0 0 #d1d1d1 inset, 0 2px 0 0 #fbfbfb inset, 2px 0 3px rgba(99,99,99,0.05) inset, 1px 0 0 0 #dddddd inset;box-shadow:0 1px 0 0 #d1d1d1 inset, 0 2px 0 0 #fbfbfb inset, 2px 0 3px rgba(99,99,99,0.05) inset, 1px 0 0 0 #dddddd inset;}.panelform .g4-row{display:table-row;}.panelform .g4-row:first-child .g4-col2{-webkit-box-shadow:0 1px 0 0 #d1d1d1 inset, 0 3px 3px rgba(99,99,99,0.1) inset, 2px 0 3px rgba(99,99,99,0.05) inset, 1px 0 0 0 #dddddd inset;-moz-box-shadow:0 1px 0 0 #d1d1d1 inset, 0 3px 3px rgba(99,99,99,0.1) inset, 2px 0 3px rgba(99,99,99,0.05) inset, 1px 0 0 0 #dddddd inset;box-shadow:0 1px 0 0 #d1d1d1 inset, 0 3px 3px rgba(99,99,99,0.1) inset, 2px 0 3px rgba(99,99,99,0.05) inset, 1px 0 0 0 #dddddd inset;}.panelform .g4-row .g4-col1{font-weight:bold;text-shadow:1px 1px 1px #fff;color:#555;padding:0 20px;}.panelform .g4-row .g4-col1 label{padding:15px 10px 15px 20px;}.panelform .g4-cell{display:table-cell;padding:10px 20px;vertical-align:middle;}.panelform .g4-cell.g4-col1{width:20%;background:#f6f6f6;-webkit-box-shadow:0 1px 0 0 #dddddd inset, 0 2px 0 0 #fff inset;-moz-box-shadow:0 1px 0 0 #dddddd inset, 0 2px 0 0 #fff inset;box-shadow:0 1px 0 0 #dddddd inset, 0 2px 0 0 #fff inset;}.panelform .g4-cell.g4-col2{display:table-cell;padding:0;width:80%;-webkit-box-shadow:0 1px 0 0 #d1d1d1 inset, 0 2px 0 0 #fbfbfb inset, 2px 0 3px rgba(99,99,99,0.05) inset, 1px 0 0 0 #dddddd inset;-moz-box-shadow:0 1px 0 0 #d1d1d1 inset, 0 2px 0 0 #fbfbfb inset, 2px 0 3px rgba(99,99,99,0.05) inset, 1px 0 0 0 #dddddd inset;box-shadow:0 1px 0 0 #d1d1d1 inset, 0 2px 0 0 #fbfbfb inset, 2px 0 3px rgba(99,99,99,0.05) inset, 1px 0 0 0 #dddddd inset;background:#eee;}.panelform .g4-cell.g4-col2 .g4-col2-wrap{padding:10px 20px;position:relative;*zoom:1;}.panelform .g4-cell.g4-col2 .g4-col2-wrap:before,.panelform .g4-cell.g4-col2 .g4-col2-wrap:after{display:table;content:"";}.panelform .g4-cell.g4-col2 .g4-col2-wrap:after{clear:both;}.panelform .g4-cell.g4-col2 .g4-col2-wrap > .arrow,.panelform .g4-cell.g4-col2 .g4-col2-wrap > .arrow span{position:absolute;display:block;width:5px;}.panelform .g4-cell.g4-col2 .g4-col2-wrap > .arrow{top:50%;right:0;margin-top:-6px;border-top:6px solid transparent;border-bottom:6px solid transparent;border-left:6px solid #ccc;left:0px;top:50%;z-index:10;}.panel-overview .panelform .g4-cell.g4-col2 .g4-col2-wrap > .arrow{display:none;}.panelform .g4-cell.g4-col2 .g4-col2-wrap > .arrow span{top:50%;right:0;margin-top:-6px;border-top:6px solid transparent;border-bottom:6px solid transparent;border-left:6px solid #f6f6f6;left:-1px;margin-left:-6px;}.panelform .g4-cell .inherit-checkbox{position:relative;z-index:5;float:left;margin-left:0;margin-top:15px;}.panelform .g4-cell .inherit-overlay{position:absolute;top:1px;right:1px;bottom:1px;left:1px;background:#efefef;z-index:5;}.wrapper .chain{display:inline-block;vertical-align:top;margin-right:20px;}.wrapper .chain.chain-hidden{margin-right:0;}.group{clear:both;height:32px;margin:0 0 10px;}.group .alias-label{float:left;width:150px;padding-top:5px;}.group-left,.group-label,.group .wrapper{float:left;}.group-right{float:left;margin-left:25px;}.group-none{float:none;clear:both;}.g4-wrap .group-label{display:block;position:relative;text-align:right;width:75px;display:block;margin-right:10px;}.g4-wrap .group-label label{display:inline-block;line-height:12px;margin:8px 5px 0 0;width:100%;vertical-align:middle;}.group-right .selectbox-wrapper{margin-right:24px;}.group-none .group-label{width:50%;}.group-gradient{border:1px solid #ccc;padding:1px;height:40px;margin-right:20px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:0 1px 0 0 #fff;-moz-box-shadow:0 1px 0 0 #fff;box-shadow:0 1px 0 0 #fff;}.assignments-field .g4-cell.g4-col1{vertical-align:top;}@media (max-width: 979px){.g4-tabs li{padding:15px 15px;}}@media (max-width: 767px){.btn-subhead{display:none !important;}.container-fluid{margin:0 -20px;}.container-fluid #g4-master{width:90px;height:50px;}.container-fluid #g4-details{height:auto;padding-bottom:15px;}.container-fluid #g4-details .g4-controlgroup{width:100%;}.container-fluid #g4-details .g4-controlgroup .g4-controls{margin-right:130px;}.container-fluid #g4-details .g4-controlgroup select{max-width:120px;}#g4-toolbar ul.g4-actions{float:none;display:block;margin-top:15px;margin-bottom:-10px;margin-left:15px;*zoom:1;}#g4-toolbar ul.g4-actions:before,#g4-toolbar ul.g4-actions:after{display:table;content:"";}#g4-toolbar ul.g4-actions:after{clear:both;}#g4-toolbar ul.g4-actions ul.rok-dropdown{right:inherit;left:-43px;}.g4-tabs li{padding:15px 10px;}.g4-tabs li .menuitems-involved{margin-left:5px !important;margin-right:-5px !important;}.panel-overview .g4-panel-left,.panel-overview .g4-panel-right,.g4-panel.panel-overview div.template-preview,.g4-panel.panel-overview .template-description{float:none;width:100%;}.panel-overview .g4-panel-left .updater-field,.panel-overview .g4-panel-left .tips-field,.panel-overview .g4-panel-left .html-field,.panel-overview .g4-panel-right .updater-field,.panel-overview .g4-panel-right .tips-field,.panel-overview .g4-panel-right .html-field,.g4-panel.panel-overview div.template-preview .updater-field,.g4-panel.panel-overview div.template-preview .tips-field,.g4-panel.panel-overview div.template-preview .html-field,.g4-panel.panel-overview .template-description .updater-field,.g4-panel.panel-overview .template-description .tips-field,.g4-panel.panel-overview .template-description .html-field{margin:10px 20px;}.g4-panel.panel-overview div.template-preview,.g4-panel.panel-overview .template-description{margin:0 0 20px;}.g4-panel.panel-overview div.template-preview img,.g4-panel.panel-overview .template-description img{margin:-10px auto 0;display:block;}}.g4-wrap select,.g4-wrap textarea,.g4-wrap input[type="text"],.g4-wrap input[type="password"],.g4-wrap input[type="datetime"],.g4-wrap input[type="datetime-local"],.g4-wrap input[type="date"],.g4-wrap input[type="month"],.g4-wrap input[type="time"],.g4-wrap input[type="week"],.g4-wrap input[type="number"],.g4-wrap input[type="email"],.g4-wrap input[type="url"],.g4-wrap input[type="search"],.g4-wrap input[type="tel"],.g4-wrap input[type="color"],.g4-wrap .readonly{display:inline-block;height:18px;padding:5px 0px;text-indent:10px;margin-left:0;margin-bottom:0;font-size:12px;background:#fff;line-height:18px;color:#555;-webkit-box-shadow:0 2px 2px 0 rgba(0,0,0,0.1) inset, 0 1px 0 0 #fff;-moz-box-shadow:0 2px 2px 0 rgba(0,0,0,0.1) inset, 0 1px 0 0 #fff;box-shadow:0 2px 2px 0 rgba(0,0,0,0.1) inset, 0 1px 0 0 #fff;border:1px solid #cfcfcf;border-top-color:#c6c6c6;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;z-index:2;}.g4-wrap select{text-indent:0;outline:0;}.g4-wrap select[disabled]{color:#aaa;}.g4-wrap input.required{background:#fff;}.g4-wrap input.readonly,.g4-wrap input.disabled{background:#f3f3f3;color:#6f6f6f;font-weight:normal;-webkit-box-shadow:0 2px 2px 0 rgba(99,99,99,.1) inset, 0 1px 0 0 #fff;-moz-box-shadow:0 2px 2px 0 rgba(99,99,99,.1) inset, 0 1px 0 0 #fff;box-shadow:0 2px 2px 0 rgba(99,99,99,.1) inset, 0 1px 0 0 #fff;border:1px solid #d4d4d4;}.g4-wrap .input-append input[type="text"]{-webkit-border-radius:3px 0 0 3px;-moz-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px;}.g4-wrap .input-append .add-on{-webkit-border-radius:0 3px 3px 0;-moz-border-radius:0 3px 3px 0;border-radius:0 3px 3px 0;margin-left:-1px;}.g4-wrap .input-prepend input[type="text"]{-webkit-border-radius:0 3px 3px 0;-moz-border-radius:0 3px 3px 0;border-radius:0 3px 3px 0;}.g4-wrap .input-prepend .add-on{-webkit-border-radius:3px 0 0 3px;-moz-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px;margin-right:-4px;}.g4-wrap .add-on{display:inline-block;-webkit-box-shadow:0 1px 0 0 #fff;-moz-box-shadow:0 1px 0 0 #fff;box-shadow:0 1px 0 0 #fff;border:1px solid #cfcfcf;border-top-color:#c6c6c6;background:#fafafa;color:#999999;padding:5px 10px;height:18px;width:auto;line-height:18px;}.g4-wrap select,.g4-wrap input[type="file"]{height:30px;line-height:30px;}.g4-wrap label{display:block;position:relative;margin-top:0;margin-bottom:0px;}.g4-wrap .chain-label > label{height:16px;margin-bottom:2px;}.g4-wrap .position-field label{margin-top:3px;}.g4-wrap .chain-positions .chain-label > label{display:none;}.g4-wrap .chain-positions .g-position{height:16px;margin-bottom:0;}.g4-wrap fieldset.adminform{padding:0;margin:0;width:100%;}.g4-wrap fieldset.adminform input,.g4-wrap fieldset.adminform textarea,.g4-wrap fieldset.adminform select,.g4-wrap fieldset.adminform img,.g4-wrap fieldset.adminform button{float:inherit;margin:0 0 9px 0;}.g4-wrap fieldset.adminform label{min-width:inherit;}.g4-wrap .g4-controlgroup:before,.g4-wrap .g4-controlgroup:after{display:table;content:"";}.g4-wrap .g4-horizontal-form label{float:left;width:100px;padding-top:5px !important;text-align:right;}.g4-wrap .g4-horizontal-form .g4-controls{margin-left:120px;cursor:text;}.g4-wrap .g4-horizontal-form .g4-controls input,.g4-wrap .g4-horizontal-form .g4-controls select,.g4-wrap .g4-horizontal-form .g4-controls textarea{width:100%;}.g4-wrap .chzn-done{width:auto;}.g4-wrap .chzn-container-single .chzn-single{height:28px;line-height:29px;}#g4-details fieldset{border:0;}#g4-details fieldset div.g4-controlgroup{float:left;padding-top:10px;}#g4-details fieldset div.g4-controlgroup input#jform_title{font-size:12px;}#g4-details fieldset div.g4-controlgroup input#jform_id{width:40px;background-color:#f3f3f3;font-size:inherit;font-weight:inherit;float:inherit;border:1px solid #d4d4d4;margin:0 0 9px 0;}.panelform div#menu-assignment h3{margin-bottom:10px;}#menu-assignment .menu-links{list-style:none;float:left;width:50%;padding:0;}#menu-assignment ul.menu-links li{margin:0;}#menu-assignment ul.menu-links label{padding:0;text-align:left;display:inline-block;}.assignments-field{margin:0 15px;}.assignments-field #menu-assignment{overflow:hidden;}.assignments-field .menu-padder{height:1px;background:#ccc;display:inline-block;margin:0 5px 4px 0;}.assignments-field h2{float:left;margin-top:0;margin-bottom:0;}.assignments-field h3{border-bottom:1px solid #ccc;margin-right:15px;}.assignments-field .jform-rightbtn{position:relative;font-size:;line-height:1em;min-width:15px;-webkit-border-radius:2px;-moz-border-radius:2px;border-radius:2px;margin-right:4px;padding:7px 6px;color:#65646A;border-width:1px;border-style:solid;border-color:rgba(255,255,255,0.85) rgba(255,255,255,0.85) #e6e6e6;text-shadow:0 1px 0 #ffffff;-webkit-box-shadow:0 0 0 1px #b5b5b5, 0 3px 5px #c6c6c6;-moz-box-shadow:0 0 0 1px #b5b5b5, 0 3px 5px #c6c6c6;box-shadow:0 0 0 1px #b5b5b5, 0 3px 5px #c6c6c6;vertical-align:middle;text-align:center;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;*margin-left:.3em;background-color:#eeeeee;background-image:-moz-linear-gradient(top,#f0f0f0,#ebebeb);background-image:-ms-linear-gradient(top,#f0f0f0,#ebebeb);background-image:-webkit-gradient(linear,0 0,0 100%,from(#f0f0f0),to(#ebebeb));background-image:-webkit-linear-gradient(top,#f0f0f0,#ebebeb);background-image:-o-linear-gradient(top,#f0f0f0,#ebebeb);background-image:linear-gradient(top,#f0f0f0,#ebebeb);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#f0f0f0', endColorstr='#ebebeb', GradientType=0);float:right;}.assignments-field .jform-rightbtn .caret{margin:5px 0 0;opacity:0.5;filter:alpha(opacity=50);}.assignments-field .jform-rightbtn:first-child{*margin-left:0;}.assignments-field .jform-rightbtn .caret{display:inline-block;width:0;height:0;vertical-align:top;border-top:4px solid #65646A;border-right:4px solid transparent;border-left:4px solid transparent;content:"";}.assignments-field .jform-rightbtn:hover,.assignments-field .jform-rightbtn.rok-button-hover{color:#484848;background-color:#f8f8f8;background-image:-moz-linear-gradient(top,#fafafa,#f5f5f5);background-image:-ms-linear-gradient(top,#fafafa,#f5f5f5);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fafafa),to(#f5f5f5));background-image:-webkit-linear-gradient(top,#fafafa,#f5f5f5);background-image:-o-linear-gradient(top,#fafafa,#f5f5f5);background-image:linear-gradient(top,#fafafa,#f5f5f5);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fafafa', endColorstr='#f5f5f5', GradientType=0);}.assignments-field .jform-rightbtn:hover .caret,.assignments-field .jform-rightbtn.rok-button-hover .caret{display:inline-block;width:0;height:0;vertical-align:top;border-top:4px solid #484848;border-right:4px solid transparent;border-left:4px solid transparent;content:"";}.assignments-field .jform-rightbtn:active,.assignments-field .jform-rightbtn.rok-button-active{color:#464646;border:0;-webkit-box-shadow:0 0 0 1px #a1a1a1, 0 1px 1px #fff;-moz-box-shadow:0 0 0 1px #a1a1a1, 0 1px 1px #fff;box-shadow:0 0 0 1px #a1a1a1, 0 1px 1px #fff;background-color:#ebebeb;background-image:-moz-linear-gradient(top,#ededed,#e8e8e8);background-image:-ms-linear-gradient(top,#ededed,#e8e8e8);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ededed),to(#e8e8e8));background-image:-webkit-linear-gradient(top,#ededed,#e8e8e8);background-image:-o-linear-gradient(top,#ededed,#e8e8e8);background-image:linear-gradient(top,#ededed,#e8e8e8);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ededed', endColorstr='#e8e8e8', GradientType=0);}.assignments-field .jform-rightbtn:active .caret,.assignments-field .jform-rightbtn.rok-button-active .caret{display:inline-block;width:0;height:0;vertical-align:top;border-top:4px solid #464646;border-right:4px solid transparent;border-left:4px solid transparent;content:"";}.assignments-field .jform-rightbtn.rok-button-disabled,.assignments-field .jform-rightbtn.rok-button-disabled:hover,.assignments-field .jform-rightbtn.rok-button-disabled:active{cursor:default;color:#929292;border:0;-webkit-box-shadow:0 0 0 1px #bbbbbb, 0 1px 1px #fff;-moz-box-shadow:0 0 0 1px #bbbbbb, 0 1px 1px #fff;box-shadow:0 0 0 1px #bbbbbb, 0 1px 1px #fff;background-color:#ebebeb;background-image:-moz-linear-gradient(top,#ededed,#e8e8e8);background-image:-ms-linear-gradient(top,#ededed,#e8e8e8);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ededed),to(#e8e8e8));background-image:-webkit-linear-gradient(top,#ededed,#e8e8e8);background-image:-o-linear-gradient(top,#ededed,#e8e8e8);background-image:linear-gradient(top,#ededed,#e8e8e8);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ededed', endColorstr='#e8e8e8', GradientType=0);}.assignments-field .jform-rightbtn.rok-button-disabled .caret,.assignments-field .jform-rightbtn.rok-button-disabled:hover .caret,.assignments-field .jform-rightbtn.rok-button-disabled:active .caret{display:inline-block;width:0;height:0;vertical-align:top;border-top:4px solid #464646;border-right:4px solid transparent;border-left:4px solid transparent;content:"";}.assignments-field .jform-rightbtn.rok-button-disabled i,.assignments-field .jform-rightbtn.rok-button-disabled:hover i,.assignments-field .jform-rightbtn.rok-button-disabled:active i{opacity:0.5;filter:alpha(opacity=50);}.assignments-field .jform-rightbtn:active,.assignments-field .jform-rightbtn.rok-button-active{padding:8px 7px;}.assignments-field .jform-rightbtn.rok-button-disabled,.assignments-field .jform-rightbtn.rok-button-disabled:hover,.assignments-field .jform-rightbtn.rok-button-disabled:active{padding:8px 7px;}.assignments-field .jform-rightbtn.rok-button-primary i{opacity:1;filter:alpha(opacity=100);}.assignments-field .jform-rightbtn i{margin:-1px 0 -2px;}@font-face{font-family:'OxygenRegular';src:url('../fonts/Oxygen-webfont.eot');src:url('../fonts/Oxygen-webfont.eot?#iefix') format('embedded-opentype'), url('../fonts/Oxygen-webfont.woff') format('woff'), url('../fonts/Oxygen-webfont.ttf') format('truetype'), url('../fonts/Oxygen-webfont.svg#OxygenRegular') format('svg');font-weight:normal;font-style:normal;}@font-face{font-family:'OxygenItalic';src:url('../fonts/Oxygen-Italic-webfont.eot');src:url('../fonts/Oxygen-Italic-webfont.eot?#iefix') format('embedded-opentype'), url('../fonts/Oxygen-Italic-webfont.woff') format('woff'), url('../fonts/Oxygen-Italic-webfont.ttf') format('truetype'), url('../fonts/Oxygen-Italic-webfont.svg#OxygenItalic') format('svg');font-weight:normal;font-style:normal;}@font-face{font-family:'OxygenBold';src:url('../fonts/Oxygen-Bold-webfont.eot');src:url('../fonts/Oxygen-Bold-webfont.eot?#iefix') format('embedded-opentype'), url('../fonts/Oxygen-Bold-webfont.woff') format('woff'), url('../fonts/Oxygen-Bold-webfont.ttf') format('truetype'), url('../fonts/Oxygen-Bold-webfont.svg#OxygenBold') format('svg');font-weight:normal;font-style:normal;}@font-face{font-family:'OxygenBoldItalic';src:url('../fonts/Oxygen-BoldItalic-webfont.eot');src:url('../fonts/Oxygen-BoldItalic-webfont.eot?#iefix') format('embedded-opentype'), url('../fonts/Oxygen-BoldItalic-webfont.woff') format('woff'), url('../fonts/Oxygen-BoldItalic-webfont.ttf') format('truetype'), url('../fonts/Oxygen-BoldItalic-webfont.svg#OxygenBoldItalic') format('svg');font-weight:normal;font-style:normal;}#g4-logo{font-size:200px;line-height:0px;color:rgba(0,0,0,0.05);text-indent:40px;font-weight:bold;}.g4-wrap{font-size:12px;line-height:18px;}.g4-wrap ul{margin:0;padding:0;list-style:none;}.g4-wrap p{margin:20px 0;font-size:13px;color:#555;}h1 small{color:#9b9b9b;font-size:16px;}.g4-tabs li{font-size:14px;}#g4-sidebar .g4-content h2{font-size:16px;color:#3e3e3e;margin:0;padding:15px 15px 5px;}.g4-tabs .presets-involved,.g4-tabs overrides-involved,.g4-tabs .preset-info,.g4-tabs .menuitems-involved{font-size:13px;font-weight:bold;}#g4-panels h1{font-size:38px;line-height:38px;font-weight:bold;}#g4-panels h1 .g4-version,#g4-panels h1 > span{color:#3680be;font-weight:normal;}#g4-panels h1+h2{margin-top:10px;color:#555;font-weight:normal;}div.template-preview h2,div.template-preview ul{margin:10px 0 10px 10px;}div.template-preview ul{list-style:disc;}div.template-preview ul li{margin-left:20px;margin-bottom:3px;}.gantrytips-tip ul{list-style:disc;margin:10px 0 10px 10px;}.gantrytips-tip ul li{margin-left:10px;margin-bottom:3px;}.tips-field,.html-field{font-size:13px;color:#333;text-shadow:1px 1px 1px #fff;}.tips-field .h2bar,.html-field .h2bar{line-height:26px;font-size:22px;font-weight:bold;color:#555;}#updater #updater-bar{color:#eee;font-size:13px;line-height:26px;font-size:22px;font-weight:bold;text-shadow:0px -1px 0 #1d5792;}#updater #updater-bar span{color:#fff;}#updater #updater-desc{color:#eee;text-shadow:0px -1px 0 #1d5792;}#updater #updater-desc a{color:#fff;}#updater.update #updater-bar,#updater.update #updater-desc{text-shadow:0px -1px 0 #a71f14;}.g4-cell.g4-col1{font-weight:bold;text-shadow:1px 1px 0 #fff;color:#555;}.g4-cell.g4-col1 label,.g4-cell.g4-col1 h2{padding-left:20px;font-size:13px;}.g4-cell.g4-col1 h2{padding-top:45px;}.chain-label > label,.group-label > label,.inner-panels label{font-size:11px;color:#777;text-shadow:1px 1px 0px #fff;}i.spinner{opacity:0;filter:alpha(opacity=0);}i.spinner.spinner-16{background-image:url(../images/loader-16.gif);}i.spinner.spinner-32{background-image:url(../images/loader-32.gif);width:32px;height:32px;}i.spinner.spinner-64{background-image:url(../images/loader-64.gif);width:64px;height:64px;}i.spinner.spinner-128{background-image:url(../images/loader-128.gif);width:128px;height:128px;}i.published{background-position:0 0;}i.unpublished{background-position:-16px 0;}i.info{background-position:-32px 0;}i.edit{background-position:-48px 0;}i.plus{background-position:-64px 0;}.rok-button-primary i.info{background-position:-32px -16px;}.rok-button-primary i.edit{background-position:-48px -16px;}.rok-button-primary i.plus{background-position:-64px -16px;}.xdebug-var-dump i,.xdebug-error i{background:none;display:inline;width:auto;height:auto;}button{margin:0;font-size:100%;vertical-align:middle;}button{*overflow:visible;line-height:normal;}button::-moz-focus-inner{padding:0;border:0;}button{cursor:pointer;-webkit-appearance:button;}.rok-button{position:relative;font-size:;line-height:1em;min-width:15px;-webkit-border-radius:2px;-moz-border-radius:2px;border-radius:2px;margin-right:4px;padding:7px 6px;color:#65646A;border-width:1px;border-style:solid;border-color:rgba(255,255,255,0.85) rgba(255,255,255,0.85) #e6e6e6;text-shadow:0 1px 0 #ffffff;-webkit-box-shadow:0 0 0 1px #b5b5b5, 0 3px 5px #c6c6c6;-moz-box-shadow:0 0 0 1px #b5b5b5, 0 3px 5px #c6c6c6;box-shadow:0 0 0 1px #b5b5b5, 0 3px 5px #c6c6c6;vertical-align:middle;text-align:center;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;*margin-left:.3em;background-color:#eeeeee;background-image:-moz-linear-gradient(top,#f0f0f0,#ebebeb);background-image:-ms-linear-gradient(top,#f0f0f0,#ebebeb);background-image:-webkit-gradient(linear,0 0,0 100%,from(#f0f0f0),to(#ebebeb));background-image:-webkit-linear-gradient(top,#f0f0f0,#ebebeb);background-image:-o-linear-gradient(top,#f0f0f0,#ebebeb);background-image:linear-gradient(top,#f0f0f0,#ebebeb);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#f0f0f0', endColorstr='#ebebeb', GradientType=0);}.rok-button .caret{margin:5px 0 0;opacity:0.5;filter:alpha(opacity=50);}.rok-button:first-child{*margin-left:0;}.rok-button .caret{display:inline-block;width:0;height:0;vertical-align:top;border-top:4px solid #65646A;border-right:4px solid transparent;border-left:4px solid transparent;content:"";}.rok-button:hover,.rok-button.rok-button-hover{color:#484848;background-color:#f8f8f8;background-image:-moz-linear-gradient(top,#fafafa,#f5f5f5);background-image:-ms-linear-gradient(top,#fafafa,#f5f5f5);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fafafa),to(#f5f5f5));background-image:-webkit-linear-gradient(top,#fafafa,#f5f5f5);background-image:-o-linear-gradient(top,#fafafa,#f5f5f5);background-image:linear-gradient(top,#fafafa,#f5f5f5);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fafafa', endColorstr='#f5f5f5', GradientType=0);}.rok-button:hover .caret,.rok-button.rok-button-hover .caret{display:inline-block;width:0;height:0;vertical-align:top;border-top:4px solid #484848;border-right:4px solid transparent;border-left:4px solid transparent;content:"";}.rok-button:active,.rok-button.rok-button-active{color:#464646;border:0;-webkit-box-shadow:0 0 0 1px #a1a1a1, 0 1px 1px #fff;-moz-box-shadow:0 0 0 1px #a1a1a1, 0 1px 1px #fff;box-shadow:0 0 0 1px #a1a1a1, 0 1px 1px #fff;background-color:#ebebeb;background-image:-moz-linear-gradient(top,#ededed,#e8e8e8);background-image:-ms-linear-gradient(top,#ededed,#e8e8e8);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ededed),to(#e8e8e8));background-image:-webkit-linear-gradient(top,#ededed,#e8e8e8);background-image:-o-linear-gradient(top,#ededed,#e8e8e8);background-image:linear-gradient(top,#ededed,#e8e8e8);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ededed', endColorstr='#e8e8e8', GradientType=0);}.rok-button:active .caret,.rok-button.rok-button-active .caret{display:inline-block;width:0;height:0;vertical-align:top;border-top:4px solid #464646;border-right:4px solid transparent;border-left:4px solid transparent;content:"";}.rok-button.rok-button-disabled,.rok-button.rok-button-disabled:hover,.rok-button.rok-button-disabled:active{cursor:default;color:#929292;border:0;-webkit-box-shadow:0 0 0 1px #bbbbbb, 0 1px 1px #fff;-moz-box-shadow:0 0 0 1px #bbbbbb, 0 1px 1px #fff;box-shadow:0 0 0 1px #bbbbbb, 0 1px 1px #fff;background-color:#ebebeb;background-image:-moz-linear-gradient(top,#ededed,#e8e8e8);background-image:-ms-linear-gradient(top,#ededed,#e8e8e8);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ededed),to(#e8e8e8));background-image:-webkit-linear-gradient(top,#ededed,#e8e8e8);background-image:-o-linear-gradient(top,#ededed,#e8e8e8);background-image:linear-gradient(top,#ededed,#e8e8e8);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ededed', endColorstr='#e8e8e8', GradientType=0);}.rok-button.rok-button-disabled .caret,.rok-button.rok-button-disabled:hover .caret,.rok-button.rok-button-disabled:active .caret{display:inline-block;width:0;height:0;vertical-align:top;border-top:4px solid #464646;border-right:4px solid transparent;border-left:4px solid transparent;content:"";}.rok-button.rok-button-disabled i,.rok-button.rok-button-disabled:hover i,.rok-button.rok-button-disabled:active i{opacity:0.5;filter:alpha(opacity=50);}.rok-button:active,.rok-button.rok-button-active{padding:8px 7px;}.rok-button.rok-button-disabled,.rok-button.rok-button-disabled:hover,.rok-button.rok-button-disabled:active{padding:8px 7px;}.rok-button.rok-button-primary i{opacity:1;filter:alpha(opacity=100);}.rok-button i{margin:-1px 0 -2px;}.rok-button-primary{position:relative;font-size:;line-height:1em;min-width:15px;-webkit-border-radius:2px;-moz-border-radius:2px;border-radius:2px;margin-right:4px;padding:7px 6px;color:#65646A;border-width:1px;border-style:solid;border-color:rgba(255,255,255,0.85) rgba(255,255,255,0.85) #e6e6e6;text-shadow:0 1px 0 #ffffff;-webkit-box-shadow:0 0 0 1px #b5b5b5, 0 3px 5px #c6c6c6;-moz-box-shadow:0 0 0 1px #b5b5b5, 0 3px 5px #c6c6c6;box-shadow:0 0 0 1px #b5b5b5, 0 3px 5px #c6c6c6;vertical-align:middle;text-align:center;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;*margin-left:.3em;background-color:#eeeeee;background-image:-moz-linear-gradient(top,#f0f0f0,#ebebeb);background-image:-ms-linear-gradient(top,#f0f0f0,#ebebeb);background-image:-webkit-gradient(linear,0 0,0 100%,from(#f0f0f0),to(#ebebeb));background-image:-webkit-linear-gradient(top,#f0f0f0,#ebebeb);background-image:-o-linear-gradient(top,#f0f0f0,#ebebeb);background-image:linear-gradient(top,#f0f0f0,#ebebeb);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#f0f0f0', endColorstr='#ebebeb', GradientType=0);color:#fff;border-width:1px;border-style:solid;border-color:rgba(255,255,255,0.45) rgba(255,255,255,0.15) #1c73ac;box-shadow:0 0 0 1px #1573af, 0 3px 5px #c6c6c6;text-shadow:0 -1px 0 #186496;vertical-align:middle;text-align:center;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;*margin-left:.3em;background-color:#258fd2;background-image:-moz-linear-gradient(top,#2a9de6,#1d79b5);background-image:-ms-linear-gradient(top,#2a9de6,#1d79b5);background-image:-webkit-gradient(linear,0 0,0 100%,from(#2a9de6),to(#1d79b5));background-image:-webkit-linear-gradient(top,#2a9de6,#1d79b5);background-image:-o-linear-gradient(top,#2a9de6,#1d79b5);background-image:linear-gradient(top,#2a9de6,#1d79b5);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#2a9de6', endColorstr='#1d79b5', GradientType=0);}.rok-button-primary .caret{margin:5px 0 0;opacity:0.5;filter:alpha(opacity=50);}.rok-button-primary:first-child{*margin-left:0;}.rok-button-primary .caret{display:inline-block;width:0;height:0;vertical-align:top;border-top:4px solid #65646A;border-right:4px solid transparent;border-left:4px solid transparent;content:"";}.rok-button-primary:hover,.rok-button-primary.rok-button-hover{color:#484848;background-color:#f8f8f8;background-image:-moz-linear-gradient(top,#fafafa,#f5f5f5);background-image:-ms-linear-gradient(top,#fafafa,#f5f5f5);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fafafa),to(#f5f5f5));background-image:-webkit-linear-gradient(top,#fafafa,#f5f5f5);background-image:-o-linear-gradient(top,#fafafa,#f5f5f5);background-image:linear-gradient(top,#fafafa,#f5f5f5);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fafafa', endColorstr='#f5f5f5', GradientType=0);}.rok-button-primary:hover .caret,.rok-button-primary.rok-button-hover .caret{display:inline-block;width:0;height:0;vertical-align:top;border-top:4px solid #484848;border-right:4px solid transparent;border-left:4px solid transparent;content:"";}.rok-button-primary:active,.rok-button-primary.rok-button-active{color:#464646;border:0;-webkit-box-shadow:0 0 0 1px #a1a1a1, 0 1px 1px #fff;-moz-box-shadow:0 0 0 1px #a1a1a1, 0 1px 1px #fff;box-shadow:0 0 0 1px #a1a1a1, 0 1px 1px #fff;background-color:#ebebeb;background-image:-moz-linear-gradient(top,#ededed,#e8e8e8);background-image:-ms-linear-gradient(top,#ededed,#e8e8e8);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ededed),to(#e8e8e8));background-image:-webkit-linear-gradient(top,#ededed,#e8e8e8);background-image:-o-linear-gradient(top,#ededed,#e8e8e8);background-image:linear-gradient(top,#ededed,#e8e8e8);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ededed', endColorstr='#e8e8e8', GradientType=0);}.rok-button-primary:active .caret,.rok-button-primary.rok-button-active .caret{display:inline-block;width:0;height:0;vertical-align:top;border-top:4px solid #464646;border-right:4px solid transparent;border-left:4px solid transparent;content:"";}.rok-button-primary.rok-button-disabled,.rok-button-primary.rok-button-disabled:hover,.rok-button-primary.rok-button-disabled:active{cursor:default;color:#929292;border:0;-webkit-box-shadow:0 0 0 1px #bbbbbb, 0 1px 1px #fff;-moz-box-shadow:0 0 0 1px #bbbbbb, 0 1px 1px #fff;box-shadow:0 0 0 1px #bbbbbb, 0 1px 1px #fff;background-color:#ebebeb;background-image:-moz-linear-gradient(top,#ededed,#e8e8e8);background-image:-ms-linear-gradient(top,#ededed,#e8e8e8);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ededed),to(#e8e8e8));background-image:-webkit-linear-gradient(top,#ededed,#e8e8e8);background-image:-o-linear-gradient(top,#ededed,#e8e8e8);background-image:linear-gradient(top,#ededed,#e8e8e8);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ededed', endColorstr='#e8e8e8', GradientType=0);}.rok-button-primary.rok-button-disabled .caret,.rok-button-primary.rok-button-disabled:hover .caret,.rok-button-primary.rok-button-disabled:active .caret{display:inline-block;width:0;height:0;vertical-align:top;border-top:4px solid #464646;border-right:4px solid transparent;border-left:4px solid transparent;content:"";}.rok-button-primary.rok-button-disabled i,.rok-button-primary.rok-button-disabled:hover i,.rok-button-primary.rok-button-disabled:active i{opacity:0.5;filter:alpha(opacity=50);}.rok-button-primary:active,.rok-button-primary.rok-button-active{padding:8px 7px;}.rok-button-primary.rok-button-disabled,.rok-button-primary.rok-button-disabled:hover,.rok-button-primary.rok-button-disabled:active{padding:8px 7px;}.rok-button-primary.rok-button-primary i{opacity:1;filter:alpha(opacity=100);}.rok-button-primary i{margin:-1px 0 -2px;}.rok-button-primary:first-child{*margin-left:0;}.rok-button-primary .caret{display:inline-block;width:0;height:0;vertical-align:top;border-top:4px solid #fff;border-right:4px solid transparent;border-left:4px solid transparent;content:"";}.rok-button-primary:hover,.rok-button-primary.rok-button-hover{color:#fff;background-color:#3697d6;background-image:-moz-linear-gradient(top,#45aae9,#1e7cb9);background-image:-ms-linear-gradient(top,#45aae9,#1e7cb9);background-image:-webkit-gradient(linear,0 0,0 100%,from(#45aae9),to(#1e7cb9));background-image:-webkit-linear-gradient(top,#45aae9,#1e7cb9);background-image:-o-linear-gradient(top,#45aae9,#1e7cb9);background-image:linear-gradient(top,#45aae9,#1e7cb9);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#45aae9', endColorstr='#1e7cb9', GradientType=0);}.rok-button-primary:active,.rok-button-primary.rok-button-active{color:#fff;border:0;-webkit-box-shadow:0 0 0 1px #196a9f, 0 1px 1px #fff;-moz-box-shadow:0 0 0 1px #196a9f, 0 1px 1px #fff;box-shadow:0 0 0 1px #196a9f, 0 1px 1px #fff;background-color:#228cd0;background-image:-moz-linear-gradient(top,#259be5,#1c76b1);background-image:-ms-linear-gradient(top,#259be5,#1c76b1);background-image:-webkit-gradient(linear,0 0,0 100%,from(#259be5),to(#1c76b1));background-image:-webkit-linear-gradient(top,#259be5,#1c76b1);background-image:-o-linear-gradient(top,#259be5,#1c76b1);background-image:linear-gradient(top,#259be5,#1c76b1);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#259be5', endColorstr='#1c76b1', GradientType=0);}.rok-button-primary:active,.rok-button-primary.rok-button-active{background-color:#1a82c4;background-image:-moz-linear-gradient(top,#1a91dd,#196a9f);background-image:-ms-linear-gradient(top,#1a91dd,#196a9f);background-image:-webkit-gradient(linear,0 0,0 100%,from(#1a91dd),to(#196a9f));background-image:-webkit-linear-gradient(top,#1a91dd,#196a9f);background-image:-o-linear-gradient(top,#1a91dd,#196a9f);background-image:linear-gradient(top,#1a91dd,#196a9f);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#1a91dd', endColorstr='#196a9f', GradientType=0);}.rok-button-primary.rok-button-disabled,.rok-button-primary.rok-button-disabled:hover{text-shadow:0 -1px 0 #fff;}.rok-button-secondary{position:relative;font-size:;line-height:1em;min-width:15px;-webkit-border-radius:2px;-moz-border-radius:2px;border-radius:2px;margin-right:4px;padding:7px 6px;color:#65646A;border-width:1px;border-style:solid;border-color:rgba(255,255,255,0.85) rgba(255,255,255,0.85) #e6e6e6;text-shadow:0 1px 0 #ffffff;-webkit-box-shadow:0 0 0 1px #b5b5b5, 0 3px 5px #c6c6c6;-moz-box-shadow:0 0 0 1px #b5b5b5, 0 3px 5px #c6c6c6;box-shadow:0 0 0 1px #b5b5b5, 0 3px 5px #c6c6c6;vertical-align:middle;text-align:center;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;*margin-left:.3em;background-color:#eeeeee;background-image:-moz-linear-gradient(top,#f0f0f0,#ebebeb);background-image:-ms-linear-gradient(top,#f0f0f0,#ebebeb);background-image:-webkit-gradient(linear,0 0,0 100%,from(#f0f0f0),to(#ebebeb));background-image:-webkit-linear-gradient(top,#f0f0f0,#ebebeb);background-image:-o-linear-gradient(top,#f0f0f0,#ebebeb);background-image:linear-gradient(top,#f0f0f0,#ebebeb);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#f0f0f0', endColorstr='#ebebeb', GradientType=0);color:#fff;border-width:1px;border-style:solid;border-color:rgba(255,255,255,0.45) rgba(255,255,255,0.15) #616161;box-shadow:0 0 0 1px #737373, 0 3px 5px #c6c6c6;text-shadow:0 -1px 0 #545454;vertical-align:middle;text-align:center;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;*margin-left:.3em;background-color:#858585;background-image:-moz-linear-gradient(top,#999,#666);background-image:-ms-linear-gradient(top,#999,#666);background-image:-webkit-gradient(linear,0 0,0 100%,from(#999),to(#666));background-image:-webkit-linear-gradient(top,#999,#666);background-image:-o-linear-gradient(top,#999,#666);background-image:linear-gradient(top,#999,#666);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#999999', endColorstr='#666666', GradientType=0);}.rok-button-secondary .caret{margin:5px 0 0;opacity:0.5;filter:alpha(opacity=50);}.rok-button-secondary:first-child{*margin-left:0;}.rok-button-secondary .caret{display:inline-block;width:0;height:0;vertical-align:top;border-top:4px solid #65646A;border-right:4px solid transparent;border-left:4px solid transparent;content:"";}.rok-button-secondary:hover,.rok-button-secondary.rok-button-hover{color:#484848;background-color:#f8f8f8;background-image:-moz-linear-gradient(top,#fafafa,#f5f5f5);background-image:-ms-linear-gradient(top,#fafafa,#f5f5f5);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fafafa),to(#f5f5f5));background-image:-webkit-linear-gradient(top,#fafafa,#f5f5f5);background-image:-o-linear-gradient(top,#fafafa,#f5f5f5);background-image:linear-gradient(top,#fafafa,#f5f5f5);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fafafa', endColorstr='#f5f5f5', GradientType=0);}.rok-button-secondary:hover .caret,.rok-button-secondary.rok-button-hover .caret{display:inline-block;width:0;height:0;vertical-align:top;border-top:4px solid #484848;border-right:4px solid transparent;border-left:4px solid transparent;content:"";}.rok-button-secondary:active,.rok-button-secondary.rok-button-active{color:#464646;border:0;-webkit-box-shadow:0 0 0 1px #a1a1a1, 0 1px 1px #fff;-moz-box-shadow:0 0 0 1px #a1a1a1, 0 1px 1px #fff;box-shadow:0 0 0 1px #a1a1a1, 0 1px 1px #fff;background-color:#ebebeb;background-image:-moz-linear-gradient(top,#ededed,#e8e8e8);background-image:-ms-linear-gradient(top,#ededed,#e8e8e8);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ededed),to(#e8e8e8));background-image:-webkit-linear-gradient(top,#ededed,#e8e8e8);background-image:-o-linear-gradient(top,#ededed,#e8e8e8);background-image:linear-gradient(top,#ededed,#e8e8e8);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ededed', endColorstr='#e8e8e8', GradientType=0);}.rok-button-secondary:active .caret,.rok-button-secondary.rok-button-active .caret{display:inline-block;width:0;height:0;vertical-align:top;border-top:4px solid #464646;border-right:4px solid transparent;border-left:4px solid transparent;content:"";}.rok-button-secondary.rok-button-disabled,.rok-button-secondary.rok-button-disabled:hover,.rok-button-secondary.rok-button-disabled:active{cursor:default;color:#929292;border:0;-webkit-box-shadow:0 0 0 1px #bbbbbb, 0 1px 1px #fff;-moz-box-shadow:0 0 0 1px #bbbbbb, 0 1px 1px #fff;box-shadow:0 0 0 1px #bbbbbb, 0 1px 1px #fff;background-color:#ebebeb;background-image:-moz-linear-gradient(top,#ededed,#e8e8e8);background-image:-ms-linear-gradient(top,#ededed,#e8e8e8);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ededed),to(#e8e8e8));background-image:-webkit-linear-gradient(top,#ededed,#e8e8e8);background-image:-o-linear-gradient(top,#ededed,#e8e8e8);background-image:linear-gradient(top,#ededed,#e8e8e8);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ededed', endColorstr='#e8e8e8', GradientType=0);}.rok-button-secondary.rok-button-disabled .caret,.rok-button-secondary.rok-button-disabled:hover .caret,.rok-button-secondary.rok-button-disabled:active .caret{display:inline-block;width:0;height:0;vertical-align:top;border-top:4px solid #464646;border-right:4px solid transparent;border-left:4px solid transparent;content:"";}.rok-button-secondary.rok-button-disabled i,.rok-button-secondary.rok-button-disabled:hover i,.rok-button-secondary.rok-button-disabled:active i{opacity:0.5;filter:alpha(opacity=50);}.rok-button-secondary:active,.rok-button-secondary.rok-button-active{padding:8px 7px;}.rok-button-secondary.rok-button-disabled,.rok-button-secondary.rok-button-disabled:hover,.rok-button-secondary.rok-button-disabled:active{padding:8px 7px;}.rok-button-secondary.rok-button-primary i{opacity:1;filter:alpha(opacity=100);}.rok-button-secondary i{margin:-1px 0 -2px;}.rok-button-secondary:first-child{*margin-left:0;}.rok-button-secondary .caret{display:inline-block;width:0;height:0;vertical-align:top;border-top:4px solid #fff;border-right:4px solid transparent;border-left:4px solid transparent;content:"";}.rok-button-secondary:hover,.rok-button-secondary.rok-button-hover{color:#fff;background-color:#8f8f8f;background-image:-moz-linear-gradient(top,#a8a8a8,#696969);background-image:-ms-linear-gradient(top,#a8a8a8,#696969);background-image:-webkit-gradient(linear,0 0,0 100%,from(#a8a8a8),to(#696969));background-image:-webkit-linear-gradient(top,#a8a8a8,#696969);background-image:-o-linear-gradient(top,#a8a8a8,#696969);background-image:linear-gradient(top,#a8a8a8,#696969);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#a8a8a8', endColorstr='#696969', GradientType=0);}.rok-button-secondary:active,.rok-button-secondary.rok-button-active{color:#fff;border:0;-webkit-box-shadow:0 0 0 1px #595959, 0 1px 1px #fff;-moz-box-shadow:0 0 0 1px #595959, 0 1px 1px #fff;box-shadow:0 0 0 1px #595959, 0 1px 1px #fff;background-color:#828282;background-image:-moz-linear-gradient(top,#969696,#636363);background-image:-ms-linear-gradient(top,#969696,#636363);background-image:-webkit-gradient(linear,0 0,0 100%,from(#969696),to(#636363));background-image:-webkit-linear-gradient(top,#969696,#636363);background-image:-o-linear-gradient(top,#969696,#636363);background-image:linear-gradient(top,#969696,#636363);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#969696', endColorstr='#636363', GradientType=0);}.rok-button-secondary:active,.rok-button-secondary.rok-button-active{background-color:#727272;background-image:-moz-linear-gradient(top,#616161,#8c8c8c);background-image:-ms-linear-gradient(top,#616161,#8c8c8c);background-image:-webkit-gradient(linear,0 0,0 100%,from(#616161),to(#8c8c8c));background-image:-webkit-linear-gradient(top,#616161,#8c8c8c);background-image:-o-linear-gradient(top,#616161,#8c8c8c);background-image:linear-gradient(top,#616161,#8c8c8c);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#616161', endColorstr='#8c8c8c', GradientType=0);}.rok-buttons-group > *{display:inline-block;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;margin-right:0;margin-left:-3px;}.rok-buttons-group > *:first-child{margin-left:0;-webkit-border-radius:3px 0 0 3px;-moz-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px;}.rok-buttons-group > *:last-child{-webkit-border-radius:0 3px 3px 0;-moz-border-radius:0 3px 3px 0;border-radius:0 3px 3px 0;margin-right:4px;}#g4-toolbar .rok-dropdown-open ul.rok-dropdown{display:block;}#g4-toolbar ul.rok-dropdown{position:absolute;top:100%;left:0;display:none;float:left;list-style:none;-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box;z-index:5;background-color:#fefefe;min-width:160px;top:200%;right:-10px;left:inherit;padding:4px 0;border:1px solid #fff;*border-right-width:2px;*border-bottom-width:2px;-webkit-border-radius:2px 2px 4px 4px;-moz-border-radius:2px 2px 4px 4px;border-radius:2px 2px 4px 4px;-webkit-box-shadow:0 5px 10px rgba(0, 0, 0, .1), 0 0 0 1px rgba(0, 0, 0, 0.20);-moz-box-shadow:0 5px 10px rgba(0, 0, 0, .1), 0 0 0 1px rgba(0, 0, 0, 0.20);box-shadow:0 5px 10px rgba(0, 0, 0, .1), 0 0 0 1px rgba(0, 0, 0, 0.20);}#g4-toolbar ul.rok-dropdown .divider{*width:100%;height:1px;margin:8px 1px;*margin:-5px 0 5px;overflow:hidden;background-color:#e5e5e5;border-bottom:1px solid #fff;}#g4-toolbar ul.rok-dropdown > li{display:block;}#g4-toolbar ul.rok-dropdown a{display:block;clear:both;font-weight:normal;white-space:nowrap;}#g4-toolbar ul.rok-dropdown > li > a:hover,#g4-toolbar ul.rok-dropdown .active > a,#g4-toolbar ul.rok-dropdown .active > a:hover{text-decoration:none;}#g4-toolbar ul.rok-dropdown li{text-align:left;}#g4-toolbar ul.rok-dropdown li a{color:#666;}#g4-toolbar ul.rok-dropdown .divider{background-color:#e5e5e5;border-bottom:1px solid #ffffff;margin:5px 1px;}#g4-toolbar ul.rok-dropdown a{margin:0 -1px;padding:3px 15px;line-height:24px;color:;text-shadow:0 1px 0 #fff;text-decoration:none;}#g4-toolbar ul.rok-dropdown > li > a:hover,#g4-toolbar ul.rok-dropdown .active > a,#g4-toolbar ul.rok-dropdown .active > a:hover{background-color:#258fd2;background-image:-moz-linear-gradient(top,#2a9de6,#1d79b5);background-image:-ms-linear-gradient(top,#2a9de6,#1d79b5);background-image:-webkit-gradient(linear,0 0,0 100%,from(#2a9de6),to(#1d79b5));background-image:-webkit-linear-gradient(top,#2a9de6,#1d79b5);background-image:-o-linear-gradient(top,#2a9de6,#1d79b5);background-image:linear-gradient(top,#2a9de6,#1d79b5);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#2a9de6', endColorstr='#1d79b5', GradientType=0);color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.5);}.text-verylong{width:375px;}.text-long{width:275px;}.text-regular{width:200px;}.text-medium{width:125px;}.text-short{width:50px;}.text-color{width:75px;}textarea.text-textarea{width:350px;height:120px;padding:5px;font-family:Monaco, Menlo, Consolas, "Courier New", monospace;text-indent:0;}.toggle{display:inline-block;width:80px;height:35px;background:url(images/toggle.png);cursor:hand;}.toggle .toggle-input{display:none;}.toggle.toggle-off{background-position:0 0;}.toggle.toggle-on{background-position:0 -40px;}.toggle.toggle-off.disabled{background-position:0 -80px;}.toggle.toggle-on.disabled{background-position:0 -120px;}.selectedset-group{clear:both;position:relative;}.selectset-group-first{border-top:none;}.selectedset-fields,.selectedset-fields .gantry-field{position:relative;}.selectedset-hidden-field{visibility:hidden;position:absolute;top:-2000px;}#g4-panel .navigation li a{color:#444;}#g4-panel .navigation li a:hover{color:#D54E21;}#g4-panel .navigation li.active a,#gantry-panel .navigation li.active a:hover{color:#1578B9;}.position,.slider{width:192px;height:9px;background:url(images/slider.png) 0 0 no-repeat;position:relative;margin-top:10px;}.position2,.slider2{width:192px;height:9px;background:url(images/slider.png) 0 -14px no-repeat;position:absolute;width:0px;}.position .knob,.slider .knob{width:24px;height:24px;top:-8px;left:-8px;background:url(images/slider.png) -195px 0 no-repeat;position:absolute;cursor:pointer;}.position-field .chain-toggle,.position-field .chain-showmax{margin-top:-3px;}#positions-tip{background:url(slider/images/slider-tip.png) no-repeat;font-size:12px;width:117px;height:50px;text-shadow:1px 1px #000;color:#fff;position:absolute;visibility:hidden;text-align:center;padding:0 4px;line-height:38px;letter-spacing:-1px;top:0;z-index:20;}.navigation{color:#666;}.navigation .title,.navigation .list{float:left;}.navigation .title{font-size:100%;}.navigation .list{margin:0;padding:0;list-style:none;}.navigation .list li{display:inline;}.navigation .list li a{display:block;padding:0 7px;text-decoration:none;color:#aaa;float:left;outline:none;}.navigation .list li.active a{font-weight:bold;text-decoration:underline;color:#333;}.mini-container{text-align:center;background:#fff;height:28px;padding:0;color:#555;-webkit-box-shadow:0 2px 2px 0 rgba(0,0,0,0.1) inset, 0 1px 0 0 #fff;-moz-box-shadow:0 2px 2px 0 rgba(0,0,0,0.1) inset, 0 1px 0 0 #fff;box-shadow:0 2px 2px 0 rgba(0,0,0,0.1) inset, 0 1px 0 0 #fff;border:1px solid #cfcfcf;border-top-color:#c6c6c6;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;}.mini-container div{height:28px;line-height:28px;}.mini-container .main{background:#666;text-shadow:1px 1px #1b80a0;color:#fff;}.mini-container{width:192px;}.mini-grid-1,.mini-grid-2,.mini-grid-3,.mini-grid-4,.mini-grid-5,.mini-grid-6,.mini-grid-7,.mini-grid-8,.mini-grid-9,.mini-grid-10,.mini-grid-11,.mini-grid-12,.mini-grid-13,.mini-grid-14,.mini-grid-15,.mini-grid-16{display:inline;float:left;position:relative;}.mini-container .mini-grid{border-left:1px solid #d0d0d0;padding-right:1px;}.mini-container .mini-grid:first-child{border-left:0;padding-left:1px;}.col9 .mini-container .mini-grid-1{width:19px;}.col9 .mini-container .mini-grid-2{width:40px;}.col9 .mini-container .mini-grid-3{width:61px;}.col9 .mini-container .mini-grid-4{width:82px;}.col9 .mini-container .mini-grid-5{width:103px;}.col9 .mini-container .mini-grid-6{width:124px;}.col9 .mini-container .mini-grid-7{width:145px;}.col9 .mini-container .mini-grid-8{width:166px;}.col9 .mini-container .mini-grid-9{width:190px;}.col12 .mini-container .mini-grid-1{width:15px;}.col12 .mini-container .mini-grid-2{width:30px;}.col12 .mini-container .mini-grid-3{width:46px;}.col12 .mini-container .mini-grid-4{width:62px;}.col12 .mini-container .mini-grid-5{width:78px;}.col12 .mini-container .mini-grid-6{width:94px;}.col12 .mini-container .mini-grid-7{width:110px;}.col12 .mini-container .mini-grid-8{width:126px;}.col12 .mini-container .mini-grid-9{width:142px;}.col12 .mini-container .mini-grid-10{width:158px;}.col12 .mini-container .mini-grid-11{width:174px;}.col12 .mini-container .mini-grid-12{width:190px;}.col16 .mini-container .mini-grid-1{width:10px;}.col16 .mini-container .mini-grid-2{width:22px;}.col16 .mini-container .mini-grid-3{width:34px;}.col16 .mini-container .mini-grid-4{width:46px;}.col16 .mini-container .mini-grid-5{width:58px;}.col16 .mini-container .mini-grid-6{width:70px;}.col16 .mini-container .mini-grid-7{width:82px;}.col16 .mini-container .mini-grid-8{width:94px;}.col16 .mini-container .mini-grid-9{width:106px;}.col16 .mini-container .mini-grid-10{width:118px;}.col16 .mini-container .mini-grid-11{width:130px;}.col16 .mini-container .mini-grid-12{width:142px;}.col16 .mini-container .mini-grid-13{width:154px;}.col16 .mini-container .mini-grid-14{width:166px;}.col16 .mini-container .mini-grid-15{width:178px;}.col16 .mini-container .mini-grid-16{width:190px;}.graphic-level{background:url(images/graphic-level.png) no-repeat;padding-top:15px;}.miniatures{float:left;}.current-positions{padding-left:210px;color:#999;}.gradient-preview{width:100%;height:100%;}.presets{position:relative;width:1000px;margin:0 auto;}.presets .scroller{margin-bottom:30px;}.presets .scroller .inner{overflow:hidden;width:100%;}.presets .presets-scrollbar{background:#dedede;-webkit-box-shadow:0 2px 3px rgba(0, 0, 0, 0.2) inset, 0 1px 0 0 #fff;-moz-box-shadow:0 2px 3px rgba(0, 0, 0, 0.2) inset, 0 1px 0 0 #fff;box-shadow:0 2px 3px rgba(0, 0, 0, 0.2) inset, 0 1px 0 0 #fff;position:absolute;width:100%;height:16px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;}.presets .presets-scrollbar .bar{position:absolute;top:-1px;left:-1px;height:16px;width:0;border:1px solid #bbb;-webkit-box-shadow:1px 1px 0 0 #fff inset;-moz-box-shadow:1px 1px 0 0 #fff inset;box-shadow:1px 1px 0 0 #fff inset;-webkit-border-radius:2px;-moz-border-radius:2px;border-radius:2px;background:#fafafa url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAALBAMAAAC5XnFsAAAAA3NCSVQICAjb4U/gAAAAElBMVEX////+/v7Ozs7Nzc3Ly8uMRgCgvID5AAAABnRSTlP//////wCzv6S/AAAACXBIWXMAAAsSAAALEgHS3X78AAAAHHRFWHRTb2Z0d2FyZQBBZG9iZSBGaXJld29ya3MgQ1M26LyyjAAAABR0RVh0Q3JlYXRpb24gVGltZQA4LzMvMTLfrdy9AAAAKUlEQVQImWMIYAVBBigVbAqCDKFgwBAoCpUDMYByQapBqhhyYCrEFQQBMiQPAwBHVdkAAAAASUVORK5CYII=) 50% 2px no-repeat;}.presets .presets-scrollbar{position:absolute;left:0;bottom:-15px;}.presets .wrapper{font-size:0;margin:0 auto;}.presets .wrapper .block{font-size:12px;display:inline-block;cursor:pointer;position:relative;margin:20px 8px 10px;-webkit-box-shadow:0 1px 5px rgba(33,33,33,0.1);-moz-box-shadow:0 1px 5px rgba(33,33,33,0.1);box-shadow:0 1px 5px rgba(33,33,33,0.1);-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;border:1px solid #d9d9d9;padding:1px;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJYAAABGCAMAAAAZ4Z3/AAAAA3NCSVQICAjb4U/gAAAAilBMVEX////+/v79/f38/Pz7+/v39/f29vbz8/Py8vLw8PDv7+/u7u7t7e3s7Ozr6+vq6urp6eno6Ojn5+fi4uLh4eHg4ODf39/b29vY2NjX19fW1tbV1dXU1NTT09PS0tLR0dHQ0NDPz8/Ozs7Nzc3MzMzDw8O5ubmxsbGkpKSampqQkJCLi4uIiIiMRgBq/iXiAAAALnRSTlP///////////////////////////////////////////////////////////8Ago9zVQAAAAlwSFlzAAALEgAACxIB0t1+/AAAABx0RVh0U29mdHdhcmUAQWRvYmUgRmlyZXdvcmtzIENTNui8sowAAAAUdEVYdENyZWF0aW9uIFRpbWUAOC80LzEyQnrkBAAAA5lJREFUaIHtmYt2mzAMhrvFpFcv7Vg2uqVd69YBjP3+rzdJtoEQyDBdgJ3Df1rAMogP3yTChZmlLqYGaNeCFaIFK0QLVogWrBA5rM93N0a8k4TxR+MfNrBuX79fjd8kR1ptn2/tEWE9PK+npKlp/bwhItzcvawmpqm0ernBHWCx2bQVar1jhrDut1OjHGi7MYT143JqkgNdPhrC2kwN0tDOzHI5/WII625qjhYBlvj7WU5SZ7jTsmFFZdHJS5lkfe/y1WK9BWDpuA2Lcx6r4uSlXPO+d3kbgFV4rESK0orbWEdRZCTHGmQ3kZREQkUmtDjdnB/CEnpvsZTOtY5qWFzzHIwJ1aRAo5XyJ6bU0fn5sOAuEWKliOT6jbCY0ibX3JgUjJFOTK5g1GZlkWPd+bAirRAL2wMaJLJWUkwkUAMjTWVgTRNWFc+MZfbQkdIOL3crGvJ4lGM3WUY4EtDL+7J4bixTaGAqcKUQmpVW47EKGHwGBj9nWBOVxWCsb2FYMWLB4Ic75ZW1xIK2gxoAV4Tli/AfOBP7ywJk2IP7amodYkG1xpHHsfNEWYT50HcmuuV0WPBhvOvpGbcLOo23qhikoOAzjoKDzzgKnonjaMEK0X+G5YKcluWK1KLOOqhwdc4PPwnBj+q7sBjnkB5xzgZhcVlhcRcth2C1BR97MrgXmMsxLEBggz8hMLHjVR0ZKbAwIRN6qArLu7M5Y92NDUVCxp1Y3c8gtcoLyFjIP4SWvChyXShVQFSBOsjzIBDDGXRSpKFSHXai8+ZyxsqNvYJB/CrUEdaJ4OOx4CGLvPIHvhOMiGSDfQo5BBrRkBUYxvkBVg5Kypyx7oauwH1+hGVMZ/DxWNZP6S93Nd7GgJsCNG14kjWwpMSE3ueMdTe4IXvc1VptC0RPLEwH/U0gec/SBpZ15nPGI6xaLlnTiXWrDxbD1koOnp23YvmcsYlVpGQfjJXQO0ITS2EyxSqsDMdaG5bPGeturAssD8eCqQTzromVwlKZmFonajS1zUSfM9bc0IZSxBCspqLmtSjGG0WGS1KbfM7YdNPwEIw1puaN1f/NZxwFv/mMow+9+ZxXM3zzuTeE9To1R0PuJ92f8/oB/AqTNsB6mNnnAvdLM9vN6uPKL/wAhQvEzaw+RdGQQqxPm6e5tNf6yX5QtMvp9WbAryr/Xqt4d22PqlX+8c19m12Z3+8THZaaYfBBLVghWrBCtGCFaKZYfwCcAfb/ENSCxAAAAABJRU5ErkJggg==) 50% 60% no-repeat;-webkit-transition:all 0.25s ease-in-out;-moz-transition:all 0.25s ease-in-out;-ms-transition:all 0.25s ease-in-out;-o-transition:all 0.25s ease-in-out;transition:all 0.25s ease-in-out;}.presets .wrapper .block.pulsing{outline:0;border-color:rgba(82,168,236,0.8);-webkit-box-shadow:0 0 8px rgba(82,168,236,0.6);-moz-box-shadow:0 0 8px rgba(82,168,236,0.6);box-shadow:0 0 8px rgba(82,168,236,0.6);-webkit-transition:all 0.25s ease-in-out;-moz-transition:all 0.25s ease-in-out;-ms-transition:all 0.25s ease-in-out;-o-transition:all 0.25s ease-in-out;transition:all 0.25s ease-in-out;}.presets .wrapper .block div.presets-bg{width:180px;height:100px;-webkit-border-radius:0 0 4px 4px;-moz-border-radius:0 0 4px 4px;border-radius:0 0 4px 4px;}.presets .wrapper .block span{display:block;-webkit-border-radius:4px 4px 0 0;-moz-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0;border-top:1px solid #fff;border-bottom:1px solid #d9d9d9;background:#f5f5f5;color:#666;text-align:center;font-weight:bold;padding:4px;font-size:14px;line-height:14px;text-shadow:1px 1px 0 #fff;}.presets .wrapper .block .delete-preset{position:absolute;right:4px;top:4px;background:#ddd;border:1px solid #ccc;-webkit-border-radius:20px;-moz-border-radius:20px;border-radius:20px;padding:1px 4px;cursor:pointer;}.presets .wrapper .block .delete-preset:hover{background:#e83f1f;border:1px solid #cb2417;}.presets .wrapper .block .delete-preset:hover span{color:#fff;text-shadow:1px 1px 0 #2373bd;}.presets .wrapper .block .delete-preset span{border:0;padding:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;background:transparent;}#gantry-layer{position:absolute;top:0;left:0;right:0;bottom:0;background:#000;z-index:900;}.presets-wrapper-table{display:table;width:100%;height:100%;position:absolute;left:0;top:0;right:0;bottom:0;}.presets-wrapper-table .presets-wrapper-row{display:table-row;}.presets-wrapper-table .presets-wrapper-row .presets-wrapper-cell{display:table-cell;vertical-align:middle;}#presets-namer{position:relative;margin:0 auto;background:#fff;padding:15px;width:80%;max-width:500px;z-index:1500;font-size:13px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;}#presets-namer .preset-bottom{text-align:right;}#presets-namer .rok-button{display:inline-block;margin-left:5px;}#presets-namer h2,#presets-namer h3{margin-top:0;margin-bottom:5px;color:#D73D12;font-family:"Oxygen", Arial, sans-serif;}#presets-namer h3{color:#000;text-transform:uppercase;padding-bottom:5px;margin-bottom:10px;position:relative;}#presets-namer h3 span{text-transform:uppercase;color:#C13201;}#presets-namer p{margin:10px 0;}#presets-namer input,#presets-namer input:focus{-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;padding:4px;margin:0;-webkit-box-shadow:0 2px 2px 0 rgba(0,0,0,0.1) inset, 0 1px 0 0 #fff;-moz-box-shadow:0 2px 2px 0 rgba(0,0,0,0.1) inset, 0 1px 0 0 #fff;box-shadow:0 2px 2px 0 rgba(0,0,0,0.1) inset, 0 1px 0 0 #fff;border:1px solid #cfcfcf;border-top-color:#c6c6c6;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;width:100%;}#presets-namer input.example,#presets-namer input:focus.example{color:#999;font-style:italic;}#presets-namer button{font-size:90%;margin-right:10px;}#presets-namer label span{text-align:right;padding-right:10px;float:left;display:block;width:85px;color:#666;text-transform:uppercase;font-size:80%;line-height:25px;}#presets-namer .preset-namer{background:#e9e9e9;padding:15px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;margin-bottom:15px;border:1px solid #ccc;}.gantry-layer-wrapper .preset-namer div{margin:5px 10px;}.gantry-layer-close{color:#f64a4a;font-weight:bold;position:absolute;height:20px;width:20px;line-height:20px;top:2px;right:2px;}.roar-body{position:absolute;color:#fff;text-align:left;z-index:999;}.roar-body .roar{position:absolute;width:300px;cursor:pointer;}.roar-body .roar .roar-bg{position:absolute;z-index:1000;width:100%;height:100%;top:0;left:0;background-color:#000;-webkit-border-radius:8px;-moz-border-radius:8px;border-radius:8px;-webkit-box-shadow:0 0 2px 0 #fff inset, 0 0 5px rgba(0, 0, 0, 0.5);-moz-box-shadow:0 0 2px 0 #fff inset, 0 0 5px rgba(0, 0, 0, 0.5);box-shadow:0 0 2px 0 #fff inset, 0 0 5px rgba(0, 0, 0, 0.5);}.roar-body .roar h3,.roar-body .roar p{position:relative;margin:0;color:#fff;visibility:visible;z-index:1001;font-size:13px;padding:5px 10px;}.roar-body .roar p{font-size:12px;padding-top:0;}
1
+ .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;}.rok-left{float:left;}.rok-right{float:right;}.rok-dropdown-group,.rok-dropdown{position:relative;}.rok-dropdown-open .rok-dropdown{display:block;}.rok-popover-group,.rok-popover{position:relative;}.rok-popover-open .rok-popover{display:block;}i{background-image:url("") !important;background-repeat:no-repeat;background-position:16px 16px;vertical-align:text-top;font-style:normal;display:inline-block;width:16px;height:16px;*margin-right:.3em;}i:last-child{*margin-left:0;}#g4-toolbar ul{list-style:none;margin-right:10px;margin-top:-25px;padding:0;}body{line-height:18px !important;}body div#element-box,body div#element-box div.m{padding:0;border-top:0;border-bottom:0;margin:0 5px;background-color:transparent;-webkit-border-radius:0 0 4px 4px;-moz-border-radius:0 0 4px 4px;border-radius:0 0 4px 4px;}body .subhead-collapse{display:none;}body .container-fluid{padding:0 1px;}body input:focus,body select:focus{background:#fff;}.g4-messages,.g4-messages .message{display:none;}html #mc-component .g4-wrap{margin:-14px -14px;}html #mc-component #g4-master{right:0;}body{padding-left:0 !important;padding-right:0 !important;}body .navbar-fixed-top,body .navbar-fixed-bottom,body .container-fluid,body .header{margin-left:0;margin-right:0;}html{overflow-y:auto !important;}html #toolbar-box{display:none;}html #content-box{font-family:Arial, sans-serif;float:none;border:0;width:auto;margin:0 -10px 10px;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;}html #system-message{position:relative;text-shadow:0 1px 0 #fff;display:none;}html #system-message .close{position:absolute;right:0;top:0;text-align:center;line-height:35px;width:35px;height:35px;cursor:pointer;font-size:130%;display:none;}html #system-message-container #system-message{display:block;}html #system-message-container #system-message .message{display:none;}html #system-message-container #system-message .error.message{display:block;}html h1{margin:0;padding:0;font-family:"Oxygen", Arial, sans-serif;font-size:30px;color:#484848;font-weight:normal;text-shadow:0 1px 0 #fff;}#assignments-panel{display:table;}#assignments-panel .g4-panel-left{display:table;}#assignments-panel .g4-panel-left .assignments-left,#assignments-panel .g4-panel-left .assignments-right{display:table-cell;vertical-align:top;}#assignments-panel .g4-panel-left h2{font-size:1.2em;margin:2px 0;}#assignments-panel .g4-panel-left .assignments-block{margin:10px;padding:10px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 1px 0 0 #ddd inset, 0 2px 0 0 #f4f4f4 inset, 0 -1px 0 0 #ddd inset, 0 -2px 0 0 #f4f4f4 inset, 1px 0 0 0 #ddd inset, 2px 0 0 0 #f4f4f4 inset, -1px 0 0 0 #ddd inset, -2px 0 0 0 #f4f4f4 inset;-moz-box-shadow:0 1px 0 0 #ddd inset, 0 2px 0 0 #f4f4f4 inset, 0 -1px 0 0 #ddd inset, 0 -2px 0 0 #f4f4f4 inset, 1px 0 0 0 #ddd inset, 2px 0 0 0 #f4f4f4 inset, -1px 0 0 0 #ddd inset, -2px 0 0 0 #f4f4f4 inset;box-shadow:0 1px 0 0 #ddd inset, 0 2px 0 0 #f4f4f4 inset, 0 -1px 0 0 #ddd inset, 0 -2px 0 0 #f4f4f4 inset, 1px 0 0 0 #ddd inset, 2px 0 0 0 #f4f4f4 inset, -1px 0 0 0 #ddd inset, -2px 0 0 0 #f4f4f4 inset;}#assignments-panel .g4-panel-left .assignments-block .assignment-search{-webkit-box-shadow:0 2px 2px 0 rgba(0, 0, 0, 0.1) inset, 0 1px 0 0 #fff;-moz-box-shadow:0 2px 2px 0 rgba(0, 0, 0, 0.1) inset, 0 1px 0 0 #fff;box-shadow:0 2px 2px 0 rgba(0, 0, 0, 0.1) inset, 0 1px 0 0 #fff;background:#fff;padding:2px 5px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;margin-top:10px;border:1px solid #cfcfcf;border-top-color:#c6c6c6;opacity:0.5;filter:alpha(opacity=50);}#assignments-panel .g4-panel-left .assignments-block .assignment-search input{background:transparent;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;padding:0;border:0;text-indent:0;width:100%;font-size:11px;}#assignments-panel .g4-panel-left .assignments-block:hover .assignment-search{opacity:1;filter:alpha(opacity=100);}#assignments-panel .g4-panel-left .assignments-block ul ul{margin-left:18px;}#assignments-panel .g4-panel-left .assignments-left{width:70%;}#assignments-panel .g4-panel-left .assignments-left .assignments-block{background:#f6f6f6;-webkit-box-shadow:0 1px 0 0 #ddd inset, 0 2px 0 0 #fff inset, 0 -1px 0 0 #ddd inset, 0 -2px 0 0 #fff inset, 1px 0 0 0 #ddd inset, 2px 0 0 0 #fff inset, -1px 0 0 0 #ddd inset, -2px 0 0 0 #fff inset;-moz-box-shadow:0 1px 0 0 #ddd inset, 0 2px 0 0 #fff inset, 0 -1px 0 0 #ddd inset, 0 -2px 0 0 #fff inset, 1px 0 0 0 #ddd inset, 2px 0 0 0 #fff inset, -1px 0 0 0 #ddd inset, -2px 0 0 0 #fff inset;box-shadow:0 1px 0 0 #ddd inset, 0 2px 0 0 #fff inset, 0 -1px 0 0 #ddd inset, 0 -2px 0 0 #fff inset, 1px 0 0 0 #ddd inset, 2px 0 0 0 #fff inset, -1px 0 0 0 #ddd inset, -2px 0 0 0 #fff inset;float:left;width:28%;}#assignments-panel .g4-panel-left .assignments-left .assignments-block.assignments-block-center{margin-left:0;margin-right:0;}#assignments-panel .g4-panel-left .assignments-left .assignments-block.assignments-block-right{margin-right:0;}#assignments-panel .g4-panel-left .assignments-left .assignments-block h2{min-height:19px;}#assignments-panel .g4-panel-left .assignments-left .assignments-block h2 label{display:inline-block;}#assignments-panel .g4-panel-left .assignments-left .assignments-block h2.added label{display:none;}#assignments-panel .g4-panel-left .assignments-left .assignments-block h2.added{text-decoration:line-through;}#assignments-panel .g4-panel-left .assignments-left .assignments-block .inside{height:250px;overflow:auto;margin:10px 0;}#assignments-panel .g4-panel-left .assignments-left .assignments-block .inside label,#assignments-panel .g4-panel-left .assignments-left .assignments-block .inside a{display:inline;}#assignments-panel .g4-panel-left .assignments-left .assignments-block .inside a{color:#666;text-decoration:none;}#assignments-panel .g4-panel-left .assignments-left .assignments-block .inside li.added > label,#assignments-panel .g4-panel-left .assignments-left .assignments-block .inside.added label{visibility:hidden;}#assignments-panel .g4-panel-left .assignments-left .assignments-block .inside li.added > a,#assignments-panel .g4-panel-left .assignments-left .assignments-block .inside.added a{text-decoration:line-through;color:#999;}#assignments-panel .g4-panel-left .assignments-left .assignments-block .inside p{margin:0;}#assignments-panel .g4-panel-left .assignments-right{width:30%;}#assignments-panel .g4-panel-left .assignments-right .assignments-block{margin:10px 10px 10px 0;background-color:#d6d6d6;background-image:-moz-linear-gradient(top,#ddd,#ccc);background-image:-ms-linear-gradient(top,#ddd,#ccc);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ddd),to(#ccc));background-image:-webkit-linear-gradient(top,#ddd,#ccc);background-image:-o-linear-gradient(top,#ddd,#ccc);background-image:linear-gradient(top,#ddd,#ccc);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#dddddd', endColorstr='#cccccc', GradientType=0);}#assignments-panel .g4-panel-left .assignments-right .assignments-block #assigned-list{margin-top:10px;}#assignments-panel .g4-panel-left .assignments-right .assignments-block h2{color:#D54E21;}#assignments-panel .g4-panel-left .assignments-right .assignments-block li{display:block;background-color:#a3a3a3;background-image:-moz-linear-gradient(top,#aaa,#999);background-image:-ms-linear-gradient(top,#aaa,#999);background-image:-webkit-gradient(linear,0 0,0 100%,from(#aaa),to(#999));background-image:-webkit-linear-gradient(top,#aaa,#999);background-image:-o-linear-gradient(top,#aaa,#999);background-image:linear-gradient(top,#aaa,#999);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#aaaaaa', endColorstr='#999999', GradientType=0);border:1px solid #888;-webkit-border-radius:12px;-moz-border-radius:12px;border-radius:12px;padding:4px 10px;font-size:11px;margin-bottom:5px;margin-left:10px;position:relative;}#assignments-panel .g4-panel-left .assignments-right .assignments-block li.empty{margin-left:0;}#assignments-panel .g4-panel-left .assignments-right .assignments-block li span.link{float:left;color:#111;text-shadow:0 1px 0 #ccc;}#assignments-panel .g4-panel-left .assignments-right .assignments-block li span.link a{text-decoration:none;color:#111;text-shadow:0 1px 0 #ccc;cursor:default;}#assignments-panel .g4-panel-left .assignments-right .assignments-block li span.type{color:#444;border-left:1px solid #888;text-shadow:0 1px 0 #ccc;text-transform:uppercase;padding-left:10px;float:right;}#assignments-panel .g4-panel-left .assignments-right .assignments-block li span.delete-assigned{font-size:15px;position:absolute;font-weight:bold;cursor:pointer;left:-13px;top:3px;color:#666;}#assignments-panel .g4-panel-left .assignments-right .assignments-block li span.delete-assigned:hover{color:#b01c14;}#assignments-panel .g4-panel-left .assignments-right #assigned_override_items{position:absolute;width:1px;height:1px;visibility:hidden;}#assignments-panel .g4-panel-left .footer-block{line-height:2em;}#assignments-panel .g4-panel-left .footer-block .select-all{float:left;}#assignments-panel .g4-panel-left .footer-block .add-button{float:right;}.assignments-search{text-align:center;}.assignments-search label{font-weight:bold;font-size:1.5em;}.assignments-search input{width:50%;font-weight:normal;}.assignments-search,.assignment-search{position:relative;}.assignments-search .assignment-search-clear,.assignment-search .assignment-search-clear{position:absolute;top:3px;right:3px;height:7px;padding:4px;font-weight:bold;line-height:7px !important;border:1px solid #ccc;background:#eee;color:#888;-webkit-border-radius:20px;-moz-border-radius:20px;border-radius:20px;display:none;cursor:pointer;}.assignments-search .assignment-search-clear:hover,.assignment-search .assignment-search-clear:hover{background:#f9f9f9;}.assignments-search-global-wrapper{position:relative;display:inline;}.assignments-search-global-wrapper label{display:inherit !important;}.assignments-search-global-wrapper .assignment-search-clear{top:1px;right:12px;}.g4-wrap{width:100%;}#wpcontent{margin-left:160px;}@media only screen and (max-width: 900px){.auto-fold #wpcontent{margin-left:36px;padding-left:0;}}@media screen and (max-width: 782px){.auto-fold #wpcontent{margin-left:0;}}body .html-field{background:transparent;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;border:none;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;}body #icon-themes{margin:-10px 10px 0;}.g4-wrap input,.g4-wrap textarea{-webkit-box-sizing:inherit !important;-moz-box-sizing:inherit !important;-ms-box-sizing:inherit !important;box-sizing:inherit !important;}.g4-notice{position:relative;}.g4-notice .close{position:absolute;top:6px;right:9px;cursor:pointer;}.g4-actions .spinner{float:left;display:inline-block;display:none;}.inner-tabs{-webkit-box-shadow:0 1px 0 0 #DDD inset, 0 2px 0 0 #FFF inset;-moz-box-shadow:0 1px 0 0 #DDD inset, 0 2px 0 0 #FFF inset;box-shadow:0 1px 0 0 #DDD inset, 0 2px 0 0 #FFF inset;}.inner-tabs li{cursor:pointer;display:inline-block;margin-bottom:-6px;border-right:1px solid #d1d1d1;border-left:1px solid #f1f1f1;}.inner-tabs li label{font-weight:normal;}.inner-tabs li.first{border-left:0;}.inner-tabs li.hover label{color:#000;}.inner-tabs li.active label{color:#2287C7;font-weight:bold;}.inner-tabs li .g4-cell.g4-col1{background:transparent;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;width:auto;}.inner-tabs li .g4-cell.g4-col1 label{padding-left:0;display:inline-block;}.inner-panel > .wrapper{display:table;width:100%;}#overrides-actions{float:left;margin:12px 0 0 8px;min-width:180px;position:relative;z-index:100;}#overrides-actions .add-edit-input{position:absolute;width:85%;height:9px;top:3px;font-size:90%;padding:3px 0;}#overrides-first{padding:3px 30px 4px 12px;line-height:15px;border:1px solid #c0c0c0;-webkit-border-radius:12px;-moz-border-radius:12px;border-radius:12px;background:-moz-linear-gradient(bottom,#e7e7e7,#fff);background:-webkit-gradient(linear,left bottom,left top,from(#e7e7e7),to(#fff));}#overrides-first.slide-down{border-bottom:none;-webkit-border-radius:12px 12px 0 0;-moz-border-radius:12px 12px 0 0;border-radius:12px 12px 0 0;}#overrides-actions a{color:#464646;display:block;font-size:11px;text-decoration:none;padding:3px 5px 3px 10px;}body #overrides-first a{background:url(images/overrides-default.png) 0 50% no-repeat;padding:0 0 0 18px;}#overrides-actions a:hover{color:#000;text-decoration:underline;}#overrides-first a:hover{text-decoration:none;}#overrides-toggle{background:url(images/overrides-arrow.gif) 0 -4px no-repeat;height:22px;position:absolute;right:0px;top:1px;width:28px;cursor:pointer;}#overrides-toggle.hidden{display:none;}#overrides-inside{background-color:#FFFFFF;border-color:#C0C0C0;margin:0;padding:2px 1px;border-width:1px;border-style:solid;position:absolute;z-index:11;display:none;-webkit-border-radius:0 0 12px 12px;-moz-border-radius:0 0 12px 12px;border-radius:0 0 12px 12px;}#overrides-toolbar{float:left;margin:12px 0 0 5px;position:relative;}#overrides-toolbar a{transition:none;}#overrides-toolbar .overrides-button{float:left;width:29px;height:24px;background:url(images/overrides-toolbar.png);cursor:pointer;}#overrides-toolbar .overrides-button span{display:none;}#overrides-toolbar .button-del{background-position:-29px 0;width:28px;}#overrides-toolbar .button-edit{background-position:-57px 0;}#overrides-toolbar .button-add:hover{background-position:0 -24px;}#overrides-toolbar .button-del:hover{background-position:-29px -24px;}#overrides-toolbar .button-edit:hover{background-position:-57px -24px;}.text-button{display:inline-block;height:24px;background:url(images/overrides-buttons-l.png) 0 0 no-repeat;text-decoration:none;}.text-button span{font-size:11px;font-family:"Lucida Grande", Verdana, Arial, "Bitstream Vera Sans", sans-serif;color:#333;display:inline-block;background:url(images/overrides-buttons-r.png) 100% 0 no-repeat;margin-left:20px;padding:0 10px 0 5px;line-height:24px;height:24px;}.text-button:hover span{color:#000;background-position:100% -24px;}.text-button.button-widget{background-position:0 -48px;}.text-button.button-widget:hover{background-position:0 -72px;}#overrides-switch{float:left;margin:12px 0 0 5px;position:relative;}#overrides-switch a{transition:none;}.gantry-pre-mp6 #wpcontent{margin-left:147px;}.g4-wrapper{width:100%;}.clr{clear:both;}.g4-size-60{width:60%;}.g4-size-50{width:50%;}.g4-size-40{width:40%;}.g4-size-35{width:35%;}.g4-size-30{width:30%;}.g4-size-25{width:25%;}.g4-size-20{width:20%;}.g4-size-15{width:15%;}.g4-size-13{width:13%;}#g4-hidden{display:none;}#g4-logo{position:relative;float:right;margin:0 0 0 0;width:160px;height:48px;overflow:hidden;}#g4-logo span{display:block;position:absolute;top:9px;right:23px;width:120px;height:32px;background:url(images/g4-logo-small.png);}.g4-tabs{display:block;height:50px;}.g4-actions{float:right;}.g4-tabs > li,.g4-actions > li{float:left;vertical-align:middle;}.width-100pc{width:100%;}#g4-toolbar{background-color:#f8f8f8;background-image:-moz-linear-gradient(top,#fff,#ededed);background-image:-ms-linear-gradient(top,#fff,#ededed);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fff),to(#ededed));background-image:-webkit-linear-gradient(top,#fff,#ededed);background-image:-o-linear-gradient(top,#fff,#ededed);background-image:linear-gradient(top,#fff,#ededed);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#ededed', GradientType=0);padding:30px 0;width:100%;-webkit-box-shadow:0 -1px 0 0 #cbcbcb inset, 0 -2px 0 0 #fff inset;-moz-box-shadow:0 -1px 0 0 #cbcbcb inset, 0 -2px 0 0 #fff inset;box-shadow:0 -1px 0 0 #cbcbcb inset, 0 -2px 0 0 #fff inset;}#g4-toolbar h1{padding:0 15px;}#g4-toolbar .rok-button{margin-left:5px;font-size:13px;}#g4-toolbar .rok-buttons-group .rok-button:last-child{margin-left:-3px;}#g4-toolbar .rok-buttons-group .caret{height:4px;}#g4-details-wrapper{position:relative;}#g4-master{position:absolute;background-color:#e43e1f;background-image:-moz-linear-gradient(top,#f54221,#ca381c);background-image:-ms-linear-gradient(top,#f54221,#ca381c);background-image:-webkit-gradient(linear,0 0,0 100%,from(#f54221),to(#ca381c));background-image:-webkit-linear-gradient(top,#f54221,#ca381c);background-image:-o-linear-gradient(top,#f54221,#ca381c);background-image:linear-gradient(top,#f54221,#ca381c);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#f54221', endColorstr='#ca381c', GradientType=0);top:-1px;bottom:0px;right:0;z-index:1;border:1px solid #b03018;-webkit-box-shadow:0 2px 8px 0 rgba(0,0,0,0.3) inset;-moz-box-shadow:0 2px 8px 0 rgba(0,0,0,0.3) inset;box-shadow:0 2px 8px 0 rgba(0,0,0,0.3) inset;}#g4-master.g4-flag-override{background-color:#b8b8b8;background-image:-moz-linear-gradient(top,#ccc,#999);background-image:-ms-linear-gradient(top,#ccc,#999);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ccc),to(#999));background-image:-webkit-linear-gradient(top,#ccc,#999);background-image:-o-linear-gradient(top,#ccc,#999);background-image:linear-gradient(top,#ccc,#999);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#cccccc', endColorstr='#999999', GradientType=0);border:1px solid #999;}#g4-master #g4-flag{text-align:center;position:relative;line-height:50px;font-size:17px;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.5);}#g4-master #g4-flag > .rt-arrow,#g4-master #g4-flag > .rt-arrow span{position:absolute;display:block;width:5px;}#g4-master #g4-flag > .rt-arrow{top:50%;right:0;margin-top:-7px;border-top:7px solid transparent;border-bottom:7px solid transparent;border-left:7px solid #ececec;left:-2px;top:50%;z-index:10;}#g4-details{border-top:1px solid #fff;background:#ececec;height:50px;position:relative;}#g4-details.presets-showing{border-bottom:1px solid #cbcbcb;}#g4-presets{background-color:#f4f4f4;background-image:-moz-linear-gradient(top,#ececec,#fff);background-image:-ms-linear-gradient(top,#ececec,#fff);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ececec),to(#fff));background-image:-webkit-linear-gradient(top,#ececec,#fff);background-image:-o-linear-gradient(top,#ececec,#fff);background-image:linear-gradient(top,#ececec,#fff);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ececec', endColorstr='#ffffff', GradientType=0);-webkit-box-shadow:0 1px 0 0 #fff inset;-moz-box-shadow:0 1px 0 0 #fff inset;box-shadow:0 1px 0 0 #fff inset;}#g4-container{margin-top:-2px;padding-bottom:1px;border-bottom:1px solid #ccc;margin:0;-webkit-border-radius:0 0 4px 4px;-moz-border-radius:0 0 4px 4px;border-radius:0 0 4px 4px;}#g4-container .g4-header{border-top:1px solid #bcbcbc;background-color:#e6e6e6;-webkit-box-shadow:0 -1px 0 0 #fefefe inset, 0 -2px 0 0 #d1d1d1 inset, 0 5px 8px #cecece inset, 0 -3px 8px #dedede inset;-moz-box-shadow:0 -1px 0 0 #fefefe inset, 0 -2px 0 0 #d1d1d1 inset, 0 5px 8px #cecece inset, 0 -3px 8px #dedede inset;box-shadow:0 -1px 0 0 #fefefe inset, 0 -2px 0 0 #d1d1d1 inset, 0 5px 8px #cecece inset, 0 -3px 8px #dedede inset;}#g4-container .g4-body{background:#fff;background-color:#fcfcfc;background-image:-webkit-gradient(linear,0 0,0 100%,from(#f3f3f3),color-stop(50%,#fff),to(#f0f0f0));background-image:-webkit-linear-gradient(#f3f3f3,#fff 50%,#f0f0f0);background-image:-moz-linear-gradient(top,#f3f3f3,#fff 50%,#f0f0f0);background-image:-ms-linear-gradient(#f3f3f3,#fff 50%,#f0f0f0);background-image:-o-linear-gradient(#f3f3f3,#fff 50%,#f0f0f0);background-image:linear-gradient(#f3f3f3,#fff 50%,#f0f0f0);background-repeat:no-repeat;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#f3f3f3', endColorstr='#f0f0f0', GradientType=0);}.g4-tabs li{color:#717077;padding:15px 20px;margin:0;text-shadow:0 1px 0 #fff;-webkit-box-shadow:-1px 0 0 0 #f1f1f1 inset, -2px 0 0 0 #d1d1d1 inset;-moz-box-shadow:-1px 0 0 0 #f1f1f1 inset, -2px 0 0 0 #d1d1d1 inset;box-shadow:-1px 0 0 0 #f1f1f1 inset, -2px 0 0 0 #d1d1d1 inset;cursor:pointer;}.g4-tabs li.active .rt-arrow{display:none;}.g4-tabs li:hover{color:#000;}.g4-tabs li.active{margin-top:1px;padding-top:14px;background-color:#e8e8e8;background-image:-moz-linear-gradient(top,#efefef,#ddd);background-image:-ms-linear-gradient(top,#efefef,#ddd);background-image:-webkit-gradient(linear,0 0,0 100%,from(#efefef),to(#ddd));background-image:-webkit-linear-gradient(top,#efefef,#ddd);background-image:-o-linear-gradient(top,#efefef,#ddd);background-image:linear-gradient(top,#efefef,#ddd);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#efefef', endColorstr='#dddddd', GradientType=0);-webkit-box-shadow:-1px 0 0 0 #f1f1f1 inset, -2px 0 0 0 #d1d1d1 inset, 0 2px 2px -1px rgba(0, 0, 0, 0.1) inset;-moz-box-shadow:-1px 0 0 0 #f1f1f1 inset, -2px 0 0 0 #d1d1d1 inset, 0 2px 2px -1px rgba(0, 0, 0, 0.1) inset;box-shadow:-1px 0 0 0 #f1f1f1 inset, -2px 0 0 0 #d1d1d1 inset, 0 2px 2px -1px rgba(0, 0, 0, 0.1) inset;color:#2287c7;position:relative;}.g4-tabs li.active .rt-arrow,.g4-tabs li.active .rt-arrow span{position:absolute;display:block;}.g4-tabs li.active .rt-arrow{top:0;left:50%;margin-left:-7px;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #bbb;bottom:0;top:inherit;}.g4-tabs li.active .rt-arrow span{top:0;left:50%;margin-left:-7px;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #fff;margin-left:-6px;top:1px;}.g4-tabs li.active .rt-arrow span span{top:0;left:50%;margin-left:-7px;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #f6f6f6;top:1px;margin-left:-6px;}.g4-tabs li .badge{padding:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;}#g4-container .presets-involved,#g4-container .overrides-involved,#g4-container .preset-info,#g4-container .menuitems-involved{-webkit-border-radius:20px;-moz-border-radius:20px;border-radius:20px;background-color:#e3461e;background-image:-moz-linear-gradient(top,#D23C12,#FC562F);background-image:-ms-linear-gradient(top,#D23C12,#FC562F);background-image:-webkit-gradient(linear,0 0,0 100%,from(#D23C12),to(#FC562F));background-image:-webkit-linear-gradient(top,#D23C12,#FC562F);background-image:-o-linear-gradient(top,#D23C12,#FC562F);background-image:linear-gradient(top,#D23C12,#FC562F);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#d23c12', endColorstr='#fc562f', GradientType=0);-webkit-box-shadow:0 2px 2px 0 rgba(0,0,0,0.3) inset, 0 1px 0 0 #fff;-moz-box-shadow:0 2px 2px 0 rgba(0,0,0,0.3) inset, 0 1px 0 0 #fff;box-shadow:0 2px 2px 0 rgba(0,0,0,0.3) inset, 0 1px 0 0 #fff;float:right;height:6px;line-height:7px;margin-top:-3px;margin-bottom:-5px;margin-right:-10px;margin-left:10px;padding:9px;color:#fff;text-shadow:none;display:none;opacity:0;visibility:hidden;}#g4-container .preset-info{width:4px;height:4px;padding:4px;line-height:4px;-webkit-border-radius:30px;-moz-border-radius:30px;border-radius:30px;position:absolute;top:17px;left:-5px;margin:0;display:block;opacity:1;filter:alpha(opacity=100);visibility:visible;}#g4-container .overrides-involved{background-color:#2287c9;background-image:-moz-linear-gradient(top,#1d79b5,#2a9de6);background-image:-ms-linear-gradient(top,#1d79b5,#2a9de6);background-image:-webkit-gradient(linear,0 0,0 100%,from(#1d79b5),to(#2a9de6));background-image:-webkit-linear-gradient(top,#1d79b5,#2a9de6);background-image:-o-linear-gradient(top,#1d79b5,#2a9de6);background-image:linear-gradient(top,#1d79b5,#2a9de6);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#1d79b5', endColorstr='#2a9de6', GradientType=0);}#g4-container .menuitems-involved{display:block;opacity:1;visibility:visible;background-color:#adadad;background-image:-moz-linear-gradient(top,#bbb,#999);background-image:-ms-linear-gradient(top,#bbb,#999);background-image:-webkit-gradient(linear,0 0,0 100%,from(#bbb),to(#999));background-image:-webkit-linear-gradient(top,#bbb,#999);background-image:-o-linear-gradient(top,#bbb,#999);background-image:linear-gradient(top,#bbb,#999);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#bbbbbb', endColorstr='#999999', GradientType=0);}#g4-container .double-badge .presets-involved{-webkit-border-radius:0 8px 8px 0;-moz-border-radius:0 8px 8px 0;border-radius:0 8px 8px 0;}#g4-container .double-badge .overrides-involved{-webkit-border-radius:8px 0 0 8px;-moz-border-radius:8px 0 0 8px;border-radius:8px 0 0 8px;}.override-wrap #g4-container .preset-info{left:-15px;}#g4-actions li{margin:0 4px;}#g4-panels{padding-top:20px;}.g4-panel{visibility:hidden;margin-bottom:40px;top:-10000px;left:-10000px;width:100%;border-bottom:1px solid #ddd;-webkit-box-shadow:0 1px 1px 0 #fefefe;-moz-box-shadow:0 1px 1px 0 #fefefe;box-shadow:0 1px 1px 0 #fefefe;}.g4-panel.active-panel{visibility:visible;top:0;left:0;}.g4-panel.panel-overview{border:0;margin-bottom:0;}.g4-panel.panel-overview .panelform .g4-row .g4-col2{-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;background:inherit;}.g4-panel.panel-overview .g4-col1{display:none;}.g4-panel.panel-overview div.template-preview{float:left;margin-right:35px;width:40%;}.g4-panel.panel-overview div.template-preview img{width:100%;margin-top:-10px;}.g4-panel.panel-overview .template-description{margin-left:45%;margin-right:20px;}.g4-panel.panel-overview img.template-preview{float:left;margin-right:30px;margin-bottom:20px;}.g4-panel-left,.g4-panel-right{float:left;position:relative;}.g4-panel-left{width:100%;}.panel-overview .g4-panel-left{width:70%;}.panel-overview .g4-panel-right{width:30%;}.g4-panel-hiddens{position:absolute;visibility:hidden;height:0;}.backgroundpicker{position:relative;}.updater-field,.tips-field,.html-field{background:#eaeaea;border:1px solid #c8c8c8;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;margin-right:20px;margin-bottom:20px;padding:20px;-webkit-box-shadow:0 1px 0 0 #fff, 0 2px 6px 0 rgba(66,66,66,0.2) inset;-moz-box-shadow:0 1px 0 0 #fff, 0 2px 6px 0 rgba(66,66,66,0.2) inset;box-shadow:0 1px 0 0 #fff, 0 2px 6px 0 rgba(66,66,66,0.2) inset;}.updater-field .h2bar,.tips-field .h2bar,.html-field .h2bar{display:block;min-height:36px;margin-bottom:5px;padding:0;}.updater-field{background-color:#258fd2;background-image:-moz-linear-gradient(top,#2A9DE6,#1D79B5);background-image:-ms-linear-gradient(top,#2A9DE6,#1D79B5);background-image:-webkit-gradient(linear,0 0,0 100%,from(#2A9DE6),to(#1D79B5));background-image:-webkit-linear-gradient(top,#2A9DE6,#1D79B5);background-image:-o-linear-gradient(top,#2A9DE6,#1D79B5);background-image:linear-gradient(top,#2A9DE6,#1D79B5);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#2a9de6', endColorstr='#1d79b5', GradientType=0);}.updater-field.update{background-color:#e43e1f;background-image:-moz-linear-gradient(top,#f54221,#ca381c);background-image:-ms-linear-gradient(top,#f54221,#ca381c);background-image:-webkit-gradient(linear,0 0,0 100%,from(#f54221),to(#ca381c));background-image:-webkit-linear-gradient(top,#f54221,#ca381c);background-image:-o-linear-gradient(top,#f54221,#ca381c);background-image:linear-gradient(top,#f54221,#ca381c);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#f54221', endColorstr='#ca381c', GradientType=0);}.tips-field{position:relative;padding-bottom:50px;}.tips-field .gantrytips-controller{position:absolute;bottom:20px;right:10px;}.tips-field .gantrytips-controller .rok-button{font-size:10px;color:#555 !important;}.tips-field .gantrytips-count{position:absolute;bottom:20px;left:20px;color:#999 !important;}.tips-field .gantrytips-wrapper{position:relative;}.tips-field .gantrytips-wrapper .gantrytips-tip{display:none;}.tips-field .gantrytips-wrapper .gantrytips-tip:first-child{display:block;}.panelform{display:table;border-collapse:collapse;width:100%;}.panelform .selectedset-fields{display:table-row-group;}.panelform .selectedset-fields .g4-row:first-child .g4-cell.g4-col2{-webkit-box-shadow:0 1px 0 0 #d1d1d1 inset, 0 2px 0 0 #fbfbfb inset, 2px 0 3px rgba(99,99,99,0.05) inset, 1px 0 0 0 #dddddd inset;-moz-box-shadow:0 1px 0 0 #d1d1d1 inset, 0 2px 0 0 #fbfbfb inset, 2px 0 3px rgba(99,99,99,0.05) inset, 1px 0 0 0 #dddddd inset;box-shadow:0 1px 0 0 #d1d1d1 inset, 0 2px 0 0 #fbfbfb inset, 2px 0 3px rgba(99,99,99,0.05) inset, 1px 0 0 0 #dddddd inset;}.panelform .g4-row{display:table-row;}.panelform .g4-row:first-child .g4-col2{-webkit-box-shadow:0 1px 0 0 #d1d1d1 inset, 0 3px 3px rgba(99,99,99,0.1) inset, 2px 0 3px rgba(99,99,99,0.05) inset, 1px 0 0 0 #dddddd inset;-moz-box-shadow:0 1px 0 0 #d1d1d1 inset, 0 3px 3px rgba(99,99,99,0.1) inset, 2px 0 3px rgba(99,99,99,0.05) inset, 1px 0 0 0 #dddddd inset;box-shadow:0 1px 0 0 #d1d1d1 inset, 0 3px 3px rgba(99,99,99,0.1) inset, 2px 0 3px rgba(99,99,99,0.05) inset, 1px 0 0 0 #dddddd inset;}.panelform .g4-row .g4-col1{font-weight:bold;text-shadow:1px 1px 1px #fff;color:#555;padding:0 20px;}.panelform .g4-row .g4-col1 label{padding:15px 10px 15px 20px;}.panelform .g4-cell{display:table-cell;padding:10px 20px;vertical-align:middle;}.panelform .g4-cell.g4-col1{width:20%;background:#f6f6f6;-webkit-box-shadow:0 1px 0 0 #dddddd inset, 0 2px 0 0 #fff inset;-moz-box-shadow:0 1px 0 0 #dddddd inset, 0 2px 0 0 #fff inset;box-shadow:0 1px 0 0 #dddddd inset, 0 2px 0 0 #fff inset;}.panelform .g4-cell.g4-col2{display:table-cell;padding:0;width:80%;-webkit-box-shadow:0 1px 0 0 #d1d1d1 inset, 0 2px 0 0 #fbfbfb inset, 2px 0 3px rgba(99,99,99,0.05) inset, 1px 0 0 0 #dddddd inset;-moz-box-shadow:0 1px 0 0 #d1d1d1 inset, 0 2px 0 0 #fbfbfb inset, 2px 0 3px rgba(99,99,99,0.05) inset, 1px 0 0 0 #dddddd inset;box-shadow:0 1px 0 0 #d1d1d1 inset, 0 2px 0 0 #fbfbfb inset, 2px 0 3px rgba(99,99,99,0.05) inset, 1px 0 0 0 #dddddd inset;background:#eee;}.panelform .g4-cell.g4-col2 .g4-col2-wrap{padding:10px 20px;position:relative;*zoom:1;}.panelform .g4-cell.g4-col2 .g4-col2-wrap:before,.panelform .g4-cell.g4-col2 .g4-col2-wrap:after{display:table;content:"";}.panelform .g4-cell.g4-col2 .g4-col2-wrap:after{clear:both;}.panelform .g4-cell.g4-col2 .g4-col2-wrap > .rt-arrow,.panelform .g4-cell.g4-col2 .g4-col2-wrap > .rt-arrow span{position:absolute;display:block;width:5px;}.panelform .g4-cell.g4-col2 .g4-col2-wrap > .rt-arrow{top:50%;right:0;margin-top:-6px;border-top:6px solid transparent;border-bottom:6px solid transparent;border-left:6px solid #ccc;left:0px;top:50%;z-index:10;}.panel-overview .panelform .g4-cell.g4-col2 .g4-col2-wrap > .rt-arrow{display:none;}.panelform .g4-cell.g4-col2 .g4-col2-wrap > .rt-arrow span{top:50%;right:0;margin-top:-6px;border-top:6px solid transparent;border-bottom:6px solid transparent;border-left:6px solid #f6f6f6;left:-1px;margin-left:-6px;}.panelform .g4-cell .inherit-checkbox{position:relative;z-index:5;float:left;margin-left:0;margin-top:15px;}.panelform .g4-cell .inherit-overlay{position:absolute;top:1px;right:1px;bottom:1px;left:1px;background:#efefef;z-index:5;}.wrapper .chain{display:inline-block;vertical-align:top;margin-right:20px;}.wrapper .chain.chain-hidden{margin-right:0;}.group{clear:both;height:32px;margin:0 0 10px;}.group .alias-label{float:left;width:150px;padding-top:5px;}.group-left,.group-label,.group .wrapper{float:left;}.group-right{float:left;margin-left:25px;}.group-none{float:none;clear:both;}.g4-wrap .group-label{display:block;position:relative;text-align:right;width:75px;display:block;margin-right:10px;}.g4-wrap .group-label label{display:inline-block;line-height:12px;margin:8px 5px 0 0;width:100%;vertical-align:middle;}.group-right .selectbox-wrapper{margin-right:24px;}.group-none .group-label{width:50%;}.group-gradient{border:1px solid #ccc;padding:1px;height:40px;margin-right:20px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:0 1px 0 0 #fff;-moz-box-shadow:0 1px 0 0 #fff;box-shadow:0 1px 0 0 #fff;}.assignments-field .g4-cell.g4-col1{vertical-align:top;}@media (max-width: 979px){.g4-tabs li{padding:15px 15px;}}@media (max-width: 767px){.btn-subhead{display:none !important;}.container-fluid{margin:0 -20px;}.container-fluid #g4-master{width:90px;height:50px;}.container-fluid #g4-details{height:auto;padding-bottom:15px;}.container-fluid #g4-details .g4-controlgroup{width:100%;}.container-fluid #g4-details .g4-controlgroup .g4-controls{margin-right:130px;}.container-fluid #g4-details .g4-controlgroup select{max-width:120px;}#g4-toolbar ul.g4-actions{float:none;display:block;margin-top:15px;margin-bottom:-10px;margin-left:15px;*zoom:1;}#g4-toolbar ul.g4-actions:before,#g4-toolbar ul.g4-actions:after{display:table;content:"";}#g4-toolbar ul.g4-actions:after{clear:both;}#g4-toolbar ul.g4-actions ul.rok-dropdown{right:inherit;left:-43px;}.g4-tabs li{padding:15px 10px;}.g4-tabs li .menuitems-involved{margin-left:5px !important;margin-right:-5px !important;}.panel-overview .g4-panel-left,.panel-overview .g4-panel-right,.g4-panel.panel-overview div.template-preview,.g4-panel.panel-overview .template-description{float:none;width:100%;}.panel-overview .g4-panel-left .updater-field,.panel-overview .g4-panel-left .tips-field,.panel-overview .g4-panel-left .html-field,.panel-overview .g4-panel-right .updater-field,.panel-overview .g4-panel-right .tips-field,.panel-overview .g4-panel-right .html-field,.g4-panel.panel-overview div.template-preview .updater-field,.g4-panel.panel-overview div.template-preview .tips-field,.g4-panel.panel-overview div.template-preview .html-field,.g4-panel.panel-overview .template-description .updater-field,.g4-panel.panel-overview .template-description .tips-field,.g4-panel.panel-overview .template-description .html-field{margin:10px 20px;}.g4-panel.panel-overview div.template-preview,.g4-panel.panel-overview .template-description{margin:0 0 20px;}.g4-panel.panel-overview div.template-preview img,.g4-panel.panel-overview .template-description img{margin:-10px auto 0;display:block;}}.g4-wrap select,.g4-wrap textarea,.g4-wrap input[type="text"],.g4-wrap input[type="password"],.g4-wrap input[type="datetime"],.g4-wrap input[type="datetime-local"],.g4-wrap input[type="date"],.g4-wrap input[type="month"],.g4-wrap input[type="time"],.g4-wrap input[type="week"],.g4-wrap input[type="number"],.g4-wrap input[type="email"],.g4-wrap input[type="url"],.g4-wrap input[type="search"],.g4-wrap input[type="tel"],.g4-wrap input[type="color"],.g4-wrap .readonly{display:inline-block;height:18px;padding:5px 0px;text-indent:10px;margin-left:0;margin-bottom:0;font-size:12px;background:#fff;line-height:18px;color:#555;-webkit-box-shadow:0 2px 2px 0 rgba(0,0,0,0.1) inset, 0 1px 0 0 #fff;-moz-box-shadow:0 2px 2px 0 rgba(0,0,0,0.1) inset, 0 1px 0 0 #fff;box-shadow:0 2px 2px 0 rgba(0,0,0,0.1) inset, 0 1px 0 0 #fff;border:1px solid #cfcfcf;border-top-color:#c6c6c6;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;z-index:2;}.g4-wrap select{text-indent:0;outline:0;}.g4-wrap select[disabled]{color:#aaa;}.g4-wrap input.required{background:#fff;}.g4-wrap input.readonly,.g4-wrap input.disabled{background:#f3f3f3;color:#6f6f6f;font-weight:normal;-webkit-box-shadow:0 2px 2px 0 rgba(99,99,99,.1) inset, 0 1px 0 0 #fff;-moz-box-shadow:0 2px 2px 0 rgba(99,99,99,.1) inset, 0 1px 0 0 #fff;box-shadow:0 2px 2px 0 rgba(99,99,99,.1) inset, 0 1px 0 0 #fff;border:1px solid #d4d4d4;}.g4-wrap .input-append input[type="text"]{-webkit-border-radius:3px 0 0 3px;-moz-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px;}.g4-wrap .input-append .add-on{-webkit-border-radius:0 3px 3px 0;-moz-border-radius:0 3px 3px 0;border-radius:0 3px 3px 0;margin-left:-1px;}.g4-wrap .input-prepend input[type="text"]{-webkit-border-radius:0 3px 3px 0;-moz-border-radius:0 3px 3px 0;border-radius:0 3px 3px 0;}.g4-wrap .input-prepend .add-on{-webkit-border-radius:3px 0 0 3px;-moz-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px;margin-right:-4px;}.g4-wrap .add-on{display:inline-block;-webkit-box-shadow:0 1px 0 0 #fff;-moz-box-shadow:0 1px 0 0 #fff;box-shadow:0 1px 0 0 #fff;border:1px solid #cfcfcf;border-top-color:#c6c6c6;background:#fafafa;color:#999999;padding:5px 10px;height:18px;width:auto;line-height:18px;}.g4-wrap select,.g4-wrap input[type="file"]{height:30px;line-height:30px;}.g4-wrap label{display:block;position:relative;margin-top:0;margin-bottom:0px;}.g4-wrap .chain-label > label{height:16px;margin-bottom:2px;}.g4-wrap .position-field label{margin-top:3px;}.g4-wrap .chain-positions .chain-label > label{display:none;}.g4-wrap .chain-positions .g-position{height:16px;margin-bottom:0;}.g4-wrap fieldset.adminform{padding:0;margin:0;width:100%;}.g4-wrap fieldset.adminform input,.g4-wrap fieldset.adminform textarea,.g4-wrap fieldset.adminform select,.g4-wrap fieldset.adminform img,.g4-wrap fieldset.adminform button{float:inherit;margin:0 0 9px 0;}.g4-wrap fieldset.adminform label{min-width:inherit;}.g4-wrap .g4-controlgroup:before,.g4-wrap .g4-controlgroup:after{display:table;content:"";}.g4-wrap .g4-horizontal-form label{float:left;width:100px;padding-top:5px !important;text-align:right;}.g4-wrap .g4-horizontal-form .g4-controls{margin-left:120px;cursor:text;}.g4-wrap .g4-horizontal-form .g4-controls input,.g4-wrap .g4-horizontal-form .g4-controls select,.g4-wrap .g4-horizontal-form .g4-controls textarea{width:100%;}.g4-wrap .chzn-done{width:auto;}.g4-wrap .chzn-container-single .chzn-single{height:28px;line-height:29px;}#g4-details fieldset{border:0;}#g4-details fieldset div.g4-controlgroup{float:left;padding-top:10px;}#g4-details fieldset div.g4-controlgroup input#jform_title{font-size:12px;}#g4-details fieldset div.g4-controlgroup input#jform_id{width:40px;background-color:#f3f3f3;font-size:inherit;font-weight:inherit;float:inherit;border:1px solid #d4d4d4;margin:0 0 9px 0;}.panelform div#menu-assignment h3{margin-bottom:10px;}#menu-assignment .menu-links{list-style:none;float:left;width:50%;padding:0;}#menu-assignment ul.menu-links li{margin:0;}#menu-assignment ul.menu-links label{padding:0;text-align:left;display:inline-block;}.assignments-field{margin:0 15px;}.assignments-field #menu-assignment{overflow:hidden;}.assignments-field .menu-padder{height:1px;background:#ccc;display:inline-block;margin:0 5px 4px 0;}.assignments-field h2{float:left;margin-top:0;margin-bottom:0;}.assignments-field h3{border-bottom:1px solid #ccc;margin-right:15px;}.assignments-field .jform-rightbtn{position:relative;font-size:;line-height:1em;min-width:15px;-webkit-border-radius:2px;-moz-border-radius:2px;border-radius:2px;margin-right:4px;padding:7px 6px;color:#65646A;border-width:1px;border-style:solid;border-color:rgba(255,255,255,0.85) rgba(255,255,255,0.85) #e6e6e6;text-shadow:0 1px 0 #ffffff;-webkit-box-shadow:0 0 0 1px #b5b5b5, 0 3px 5px #c6c6c6;-moz-box-shadow:0 0 0 1px #b5b5b5, 0 3px 5px #c6c6c6;box-shadow:0 0 0 1px #b5b5b5, 0 3px 5px #c6c6c6;vertical-align:middle;text-align:center;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;*margin-left:.3em;background-color:#eeeeee;background-image:-moz-linear-gradient(top,#f0f0f0,#ebebeb);background-image:-ms-linear-gradient(top,#f0f0f0,#ebebeb);background-image:-webkit-gradient(linear,0 0,0 100%,from(#f0f0f0),to(#ebebeb));background-image:-webkit-linear-gradient(top,#f0f0f0,#ebebeb);background-image:-o-linear-gradient(top,#f0f0f0,#ebebeb);background-image:linear-gradient(top,#f0f0f0,#ebebeb);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#f0f0f0', endColorstr='#ebebeb', GradientType=0);float:right;}.assignments-field .jform-rightbtn .caret{margin:5px 0 0;opacity:0.5;filter:alpha(opacity=50);}.assignments-field .jform-rightbtn:first-child{*margin-left:0;}.assignments-field .jform-rightbtn .caret{display:inline-block;width:0;height:0;vertical-align:top;border-top:4px solid #65646A;border-right:4px solid transparent;border-left:4px solid transparent;content:"";}.assignments-field .jform-rightbtn:hover,.assignments-field .jform-rightbtn.rok-button-hover{color:#484848;background-color:#f8f8f8;background-image:-moz-linear-gradient(top,#fafafa,#f5f5f5);background-image:-ms-linear-gradient(top,#fafafa,#f5f5f5);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fafafa),to(#f5f5f5));background-image:-webkit-linear-gradient(top,#fafafa,#f5f5f5);background-image:-o-linear-gradient(top,#fafafa,#f5f5f5);background-image:linear-gradient(top,#fafafa,#f5f5f5);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fafafa', endColorstr='#f5f5f5', GradientType=0);}.assignments-field .jform-rightbtn:hover .caret,.assignments-field .jform-rightbtn.rok-button-hover .caret{display:inline-block;width:0;height:0;vertical-align:top;border-top:4px solid #484848;border-right:4px solid transparent;border-left:4px solid transparent;content:"";}.assignments-field .jform-rightbtn:active,.assignments-field .jform-rightbtn.rok-button-active{color:#464646;border:0;-webkit-box-shadow:0 0 0 1px #a1a1a1, 0 1px 1px #fff;-moz-box-shadow:0 0 0 1px #a1a1a1, 0 1px 1px #fff;box-shadow:0 0 0 1px #a1a1a1, 0 1px 1px #fff;background-color:#ebebeb;background-image:-moz-linear-gradient(top,#ededed,#e8e8e8);background-image:-ms-linear-gradient(top,#ededed,#e8e8e8);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ededed),to(#e8e8e8));background-image:-webkit-linear-gradient(top,#ededed,#e8e8e8);background-image:-o-linear-gradient(top,#ededed,#e8e8e8);background-image:linear-gradient(top,#ededed,#e8e8e8);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ededed', endColorstr='#e8e8e8', GradientType=0);}.assignments-field .jform-rightbtn:active .caret,.assignments-field .jform-rightbtn.rok-button-active .caret{display:inline-block;width:0;height:0;vertical-align:top;border-top:4px solid #464646;border-right:4px solid transparent;border-left:4px solid transparent;content:"";}.assignments-field .jform-rightbtn.rok-button-disabled,.assignments-field .jform-rightbtn.rok-button-disabled:hover,.assignments-field .jform-rightbtn.rok-button-disabled:active{cursor:default;color:#929292;border:0;-webkit-box-shadow:0 0 0 1px #bbbbbb, 0 1px 1px #fff;-moz-box-shadow:0 0 0 1px #bbbbbb, 0 1px 1px #fff;box-shadow:0 0 0 1px #bbbbbb, 0 1px 1px #fff;background-color:#ebebeb;background-image:-moz-linear-gradient(top,#ededed,#e8e8e8);background-image:-ms-linear-gradient(top,#ededed,#e8e8e8);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ededed),to(#e8e8e8));background-image:-webkit-linear-gradient(top,#ededed,#e8e8e8);background-image:-o-linear-gradient(top,#ededed,#e8e8e8);background-image:linear-gradient(top,#ededed,#e8e8e8);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ededed', endColorstr='#e8e8e8', GradientType=0);}.assignments-field .jform-rightbtn.rok-button-disabled .caret,.assignments-field .jform-rightbtn.rok-button-disabled:hover .caret,.assignments-field .jform-rightbtn.rok-button-disabled:active .caret{display:inline-block;width:0;height:0;vertical-align:top;border-top:4px solid #464646;border-right:4px solid transparent;border-left:4px solid transparent;content:"";}.assignments-field .jform-rightbtn.rok-button-disabled i,.assignments-field .jform-rightbtn.rok-button-disabled:hover i,.assignments-field .jform-rightbtn.rok-button-disabled:active i{opacity:0.5;filter:alpha(opacity=50);}.assignments-field .jform-rightbtn:active,.assignments-field .jform-rightbtn.rok-button-active{padding:8px 7px;}.assignments-field .jform-rightbtn.rok-button-disabled,.assignments-field .jform-rightbtn.rok-button-disabled:hover,.assignments-field .jform-rightbtn.rok-button-disabled:active{padding:8px 7px;}.assignments-field .jform-rightbtn.rok-button-primary i{opacity:1;filter:alpha(opacity=100);}.assignments-field .jform-rightbtn i{margin:-1px 0 -2px;}@font-face{font-family:'OxygenRegular';src:url('../fonts/Oxygen-webfont.eot');src:url('../fonts/Oxygen-webfont.eot?#iefix') format('embedded-opentype'), url('../fonts/Oxygen-webfont.woff') format('woff'), url('../fonts/Oxygen-webfont.ttf') format('truetype'), url('../fonts/Oxygen-webfont.svg#OxygenRegular') format('svg');font-weight:normal;font-style:normal;}@font-face{font-family:'OxygenItalic';src:url('../fonts/Oxygen-Italic-webfont.eot');src:url('../fonts/Oxygen-Italic-webfont.eot?#iefix') format('embedded-opentype'), url('../fonts/Oxygen-Italic-webfont.woff') format('woff'), url('../fonts/Oxygen-Italic-webfont.ttf') format('truetype'), url('../fonts/Oxygen-Italic-webfont.svg#OxygenItalic') format('svg');font-weight:normal;font-style:normal;}@font-face{font-family:'OxygenBold';src:url('../fonts/Oxygen-Bold-webfont.eot');src:url('../fonts/Oxygen-Bold-webfont.eot?#iefix') format('embedded-opentype'), url('../fonts/Oxygen-Bold-webfont.woff') format('woff'), url('../fonts/Oxygen-Bold-webfont.ttf') format('truetype'), url('../fonts/Oxygen-Bold-webfont.svg#OxygenBold') format('svg');font-weight:normal;font-style:normal;}@font-face{font-family:'OxygenBoldItalic';src:url('../fonts/Oxygen-BoldItalic-webfont.eot');src:url('../fonts/Oxygen-BoldItalic-webfont.eot?#iefix') format('embedded-opentype'), url('../fonts/Oxygen-BoldItalic-webfont.woff') format('woff'), url('../fonts/Oxygen-BoldItalic-webfont.ttf') format('truetype'), url('../fonts/Oxygen-BoldItalic-webfont.svg#OxygenBoldItalic') format('svg');font-weight:normal;font-style:normal;}#g4-logo{font-size:200px;line-height:0px;color:rgba(0,0,0,0.05);text-indent:40px;font-weight:bold;}.g4-wrap{font-size:12px;line-height:18px;}.g4-wrap ul{margin:0;padding:0;list-style:none;}.g4-wrap p{margin:20px 0;font-size:13px;color:#555;}h1 small{color:#9b9b9b;font-size:16px;}.g4-tabs li{font-size:14px;}#g4-sidebar .g4-content h2{font-size:16px;color:#3e3e3e;margin:0;padding:15px 15px 5px;}.g4-tabs .presets-involved,.g4-tabs overrides-involved,.g4-tabs .preset-info,.g4-tabs .menuitems-involved{font-size:13px;font-weight:bold;}#g4-panels h1{font-size:38px;line-height:38px;font-weight:bold;}#g4-panels h1 .g4-version,#g4-panels h1 > span{color:#3680be;font-weight:normal;}#g4-panels h1+h2{margin-top:10px;color:#555;font-weight:normal;}div.template-preview h2,div.template-preview ul{margin:10px 0 10px 10px;}div.template-preview ul{list-style:disc;}div.template-preview ul li{margin-left:20px;margin-bottom:3px;}.gantrytips-tip ul{list-style:disc;margin:10px 0 10px 10px;}.gantrytips-tip ul li{margin-left:10px;margin-bottom:3px;}.tips-field,.html-field{font-size:13px;color:#333;text-shadow:1px 1px 1px #fff;}.tips-field .h2bar,.html-field .h2bar{line-height:26px;font-size:22px;font-weight:bold;color:#555;}#updater #updater-bar{color:#eee;font-size:13px;line-height:26px;font-size:22px;font-weight:bold;text-shadow:0px -1px 0 #1d5792;}#updater #updater-bar span{color:#fff;}#updater #updater-desc{color:#eee;text-shadow:0px -1px 0 #1d5792;}#updater #updater-desc a{color:#fff;}#updater.update #updater-bar,#updater.update #updater-desc{text-shadow:0px -1px 0 #a71f14;}.g4-cell.g4-col1{font-weight:bold;text-shadow:1px 1px 0 #fff;color:#555;}.g4-cell.g4-col1 label,.g4-cell.g4-col1 h2{padding-left:20px;font-size:13px;}.g4-cell.g4-col1 h2{padding-top:45px;}.chain-label > label,.group-label > label,.inner-panels label{font-size:11px;color:#777;text-shadow:1px 1px 0px #fff;}i.spinner{opacity:0;filter:alpha(opacity=0);}i.spinner.spinner-16{background-image:url(../images/loader-16.gif);}i.spinner.spinner-32{background-image:url(../images/loader-32.gif);width:32px;height:32px;}i.spinner.spinner-64{background-image:url(../images/loader-64.gif);width:64px;height:64px;}i.spinner.spinner-128{background-image:url(../images/loader-128.gif);width:128px;height:128px;}i.published{background-position:0 0;}i.unpublished{background-position:-16px 0;}i.info{background-position:-32px 0;}i.edit{background-position:-48px 0;}i.plus{background-position:-64px 0;}.rok-button-primary i.info{background-position:-32px -16px;}.rok-button-primary i.edit{background-position:-48px -16px;}.rok-button-primary i.plus{background-position:-64px -16px;}.xdebug-var-dump i,.xdebug-error i{background:none;display:inline;width:auto;height:auto;}button{margin:0;font-size:100%;vertical-align:middle;}button{*overflow:visible;line-height:normal;}button::-moz-focus-inner{padding:0;border:0;}button{cursor:pointer;-webkit-appearance:button;}.rok-button{position:relative;font-size:;line-height:1em;min-width:15px;-webkit-border-radius:2px;-moz-border-radius:2px;border-radius:2px;margin-right:4px;padding:7px 6px;color:#65646A;border-width:1px;border-style:solid;border-color:rgba(255,255,255,0.85) rgba(255,255,255,0.85) #e6e6e6;text-shadow:0 1px 0 #ffffff;-webkit-box-shadow:0 0 0 1px #b5b5b5, 0 3px 5px #c6c6c6;-moz-box-shadow:0 0 0 1px #b5b5b5, 0 3px 5px #c6c6c6;box-shadow:0 0 0 1px #b5b5b5, 0 3px 5px #c6c6c6;vertical-align:middle;text-align:center;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;*margin-left:.3em;background-color:#eeeeee;background-image:-moz-linear-gradient(top,#f0f0f0,#ebebeb);background-image:-ms-linear-gradient(top,#f0f0f0,#ebebeb);background-image:-webkit-gradient(linear,0 0,0 100%,from(#f0f0f0),to(#ebebeb));background-image:-webkit-linear-gradient(top,#f0f0f0,#ebebeb);background-image:-o-linear-gradient(top,#f0f0f0,#ebebeb);background-image:linear-gradient(top,#f0f0f0,#ebebeb);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#f0f0f0', endColorstr='#ebebeb', GradientType=0);}.rok-button .caret{margin:5px 0 0;opacity:0.5;filter:alpha(opacity=50);}.rok-button:first-child{*margin-left:0;}.rok-button .caret{display:inline-block;width:0;height:0;vertical-align:top;border-top:4px solid #65646A;border-right:4px solid transparent;border-left:4px solid transparent;content:"";}.rok-button:hover,.rok-button.rok-button-hover{color:#484848;background-color:#f8f8f8;background-image:-moz-linear-gradient(top,#fafafa,#f5f5f5);background-image:-ms-linear-gradient(top,#fafafa,#f5f5f5);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fafafa),to(#f5f5f5));background-image:-webkit-linear-gradient(top,#fafafa,#f5f5f5);background-image:-o-linear-gradient(top,#fafafa,#f5f5f5);background-image:linear-gradient(top,#fafafa,#f5f5f5);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fafafa', endColorstr='#f5f5f5', GradientType=0);}.rok-button:hover .caret,.rok-button.rok-button-hover .caret{display:inline-block;width:0;height:0;vertical-align:top;border-top:4px solid #484848;border-right:4px solid transparent;border-left:4px solid transparent;content:"";}.rok-button:active,.rok-button.rok-button-active{color:#464646;border:0;-webkit-box-shadow:0 0 0 1px #a1a1a1, 0 1px 1px #fff;-moz-box-shadow:0 0 0 1px #a1a1a1, 0 1px 1px #fff;box-shadow:0 0 0 1px #a1a1a1, 0 1px 1px #fff;background-color:#ebebeb;background-image:-moz-linear-gradient(top,#ededed,#e8e8e8);background-image:-ms-linear-gradient(top,#ededed,#e8e8e8);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ededed),to(#e8e8e8));background-image:-webkit-linear-gradient(top,#ededed,#e8e8e8);background-image:-o-linear-gradient(top,#ededed,#e8e8e8);background-image:linear-gradient(top,#ededed,#e8e8e8);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ededed', endColorstr='#e8e8e8', GradientType=0);}.rok-button:active .caret,.rok-button.rok-button-active .caret{display:inline-block;width:0;height:0;vertical-align:top;border-top:4px solid #464646;border-right:4px solid transparent;border-left:4px solid transparent;content:"";}.rok-button.rok-button-disabled,.rok-button.rok-button-disabled:hover,.rok-button.rok-button-disabled:active{cursor:default;color:#929292;border:0;-webkit-box-shadow:0 0 0 1px #bbbbbb, 0 1px 1px #fff;-moz-box-shadow:0 0 0 1px #bbbbbb, 0 1px 1px #fff;box-shadow:0 0 0 1px #bbbbbb, 0 1px 1px #fff;background-color:#ebebeb;background-image:-moz-linear-gradient(top,#ededed,#e8e8e8);background-image:-ms-linear-gradient(top,#ededed,#e8e8e8);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ededed),to(#e8e8e8));background-image:-webkit-linear-gradient(top,#ededed,#e8e8e8);background-image:-o-linear-gradient(top,#ededed,#e8e8e8);background-image:linear-gradient(top,#ededed,#e8e8e8);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ededed', endColorstr='#e8e8e8', GradientType=0);}.rok-button.rok-button-disabled .caret,.rok-button.rok-button-disabled:hover .caret,.rok-button.rok-button-disabled:active .caret{display:inline-block;width:0;height:0;vertical-align:top;border-top:4px solid #464646;border-right:4px solid transparent;border-left:4px solid transparent;content:"";}.rok-button.rok-button-disabled i,.rok-button.rok-button-disabled:hover i,.rok-button.rok-button-disabled:active i{opacity:0.5;filter:alpha(opacity=50);}.rok-button:active,.rok-button.rok-button-active{padding:8px 7px;}.rok-button.rok-button-disabled,.rok-button.rok-button-disabled:hover,.rok-button.rok-button-disabled:active{padding:8px 7px;}.rok-button.rok-button-primary i{opacity:1;filter:alpha(opacity=100);}.rok-button i{margin:-1px 0 -2px;}.rok-button-primary{position:relative;font-size:;line-height:1em;min-width:15px;-webkit-border-radius:2px;-moz-border-radius:2px;border-radius:2px;margin-right:4px;padding:7px 6px;color:#65646A;border-width:1px;border-style:solid;border-color:rgba(255,255,255,0.85) rgba(255,255,255,0.85) #e6e6e6;text-shadow:0 1px 0 #ffffff;-webkit-box-shadow:0 0 0 1px #b5b5b5, 0 3px 5px #c6c6c6;-moz-box-shadow:0 0 0 1px #b5b5b5, 0 3px 5px #c6c6c6;box-shadow:0 0 0 1px #b5b5b5, 0 3px 5px #c6c6c6;vertical-align:middle;text-align:center;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;*margin-left:.3em;background-color:#eeeeee;background-image:-moz-linear-gradient(top,#f0f0f0,#ebebeb);background-image:-ms-linear-gradient(top,#f0f0f0,#ebebeb);background-image:-webkit-gradient(linear,0 0,0 100%,from(#f0f0f0),to(#ebebeb));background-image:-webkit-linear-gradient(top,#f0f0f0,#ebebeb);background-image:-o-linear-gradient(top,#f0f0f0,#ebebeb);background-image:linear-gradient(top,#f0f0f0,#ebebeb);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#f0f0f0', endColorstr='#ebebeb', GradientType=0);color:#fff;border-width:1px;border-style:solid;border-color:rgba(255,255,255,0.45) rgba(255,255,255,0.15) #1c73ac;box-shadow:0 0 0 1px #1573af, 0 3px 5px #c6c6c6;text-shadow:0 -1px 0 #186496;vertical-align:middle;text-align:center;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;*margin-left:.3em;background-color:#258fd2;background-image:-moz-linear-gradient(top,#2a9de6,#1d79b5);background-image:-ms-linear-gradient(top,#2a9de6,#1d79b5);background-image:-webkit-gradient(linear,0 0,0 100%,from(#2a9de6),to(#1d79b5));background-image:-webkit-linear-gradient(top,#2a9de6,#1d79b5);background-image:-o-linear-gradient(top,#2a9de6,#1d79b5);background-image:linear-gradient(top,#2a9de6,#1d79b5);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#2a9de6', endColorstr='#1d79b5', GradientType=0);}.rok-button-primary .caret{margin:5px 0 0;opacity:0.5;filter:alpha(opacity=50);}.rok-button-primary:first-child{*margin-left:0;}.rok-button-primary .caret{display:inline-block;width:0;height:0;vertical-align:top;border-top:4px solid #65646A;border-right:4px solid transparent;border-left:4px solid transparent;content:"";}.rok-button-primary:hover,.rok-button-primary.rok-button-hover{color:#484848;background-color:#f8f8f8;background-image:-moz-linear-gradient(top,#fafafa,#f5f5f5);background-image:-ms-linear-gradient(top,#fafafa,#f5f5f5);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fafafa),to(#f5f5f5));background-image:-webkit-linear-gradient(top,#fafafa,#f5f5f5);background-image:-o-linear-gradient(top,#fafafa,#f5f5f5);background-image:linear-gradient(top,#fafafa,#f5f5f5);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fafafa', endColorstr='#f5f5f5', GradientType=0);}.rok-button-primary:hover .caret,.rok-button-primary.rok-button-hover .caret{display:inline-block;width:0;height:0;vertical-align:top;border-top:4px solid #484848;border-right:4px solid transparent;border-left:4px solid transparent;content:"";}.rok-button-primary:active,.rok-button-primary.rok-button-active{color:#464646;border:0;-webkit-box-shadow:0 0 0 1px #a1a1a1, 0 1px 1px #fff;-moz-box-shadow:0 0 0 1px #a1a1a1, 0 1px 1px #fff;box-shadow:0 0 0 1px #a1a1a1, 0 1px 1px #fff;background-color:#ebebeb;background-image:-moz-linear-gradient(top,#ededed,#e8e8e8);background-image:-ms-linear-gradient(top,#ededed,#e8e8e8);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ededed),to(#e8e8e8));background-image:-webkit-linear-gradient(top,#ededed,#e8e8e8);background-image:-o-linear-gradient(top,#ededed,#e8e8e8);background-image:linear-gradient(top,#ededed,#e8e8e8);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ededed', endColorstr='#e8e8e8', GradientType=0);}.rok-button-primary:active .caret,.rok-button-primary.rok-button-active .caret{display:inline-block;width:0;height:0;vertical-align:top;border-top:4px solid #464646;border-right:4px solid transparent;border-left:4px solid transparent;content:"";}.rok-button-primary.rok-button-disabled,.rok-button-primary.rok-button-disabled:hover,.rok-button-primary.rok-button-disabled:active{cursor:default;color:#929292;border:0;-webkit-box-shadow:0 0 0 1px #bbbbbb, 0 1px 1px #fff;-moz-box-shadow:0 0 0 1px #bbbbbb, 0 1px 1px #fff;box-shadow:0 0 0 1px #bbbbbb, 0 1px 1px #fff;background-color:#ebebeb;background-image:-moz-linear-gradient(top,#ededed,#e8e8e8);background-image:-ms-linear-gradient(top,#ededed,#e8e8e8);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ededed),to(#e8e8e8));background-image:-webkit-linear-gradient(top,#ededed,#e8e8e8);background-image:-o-linear-gradient(top,#ededed,#e8e8e8);background-image:linear-gradient(top,#ededed,#e8e8e8);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ededed', endColorstr='#e8e8e8', GradientType=0);}.rok-button-primary.rok-button-disabled .caret,.rok-button-primary.rok-button-disabled:hover .caret,.rok-button-primary.rok-button-disabled:active .caret{display:inline-block;width:0;height:0;vertical-align:top;border-top:4px solid #464646;border-right:4px solid transparent;border-left:4px solid transparent;content:"";}.rok-button-primary.rok-button-disabled i,.rok-button-primary.rok-button-disabled:hover i,.rok-button-primary.rok-button-disabled:active i{opacity:0.5;filter:alpha(opacity=50);}.rok-button-primary:active,.rok-button-primary.rok-button-active{padding:8px 7px;}.rok-button-primary.rok-button-disabled,.rok-button-primary.rok-button-disabled:hover,.rok-button-primary.rok-button-disabled:active{padding:8px 7px;}.rok-button-primary.rok-button-primary i{opacity:1;filter:alpha(opacity=100);}.rok-button-primary i{margin:-1px 0 -2px;}.rok-button-primary:first-child{*margin-left:0;}.rok-button-primary .caret{display:inline-block;width:0;height:0;vertical-align:top;border-top:4px solid #fff;border-right:4px solid transparent;border-left:4px solid transparent;content:"";}.rok-button-primary:hover,.rok-button-primary.rok-button-hover{color:#fff;background-color:#3697d6;background-image:-moz-linear-gradient(top,#45aae9,#1e7cb9);background-image:-ms-linear-gradient(top,#45aae9,#1e7cb9);background-image:-webkit-gradient(linear,0 0,0 100%,from(#45aae9),to(#1e7cb9));background-image:-webkit-linear-gradient(top,#45aae9,#1e7cb9);background-image:-o-linear-gradient(top,#45aae9,#1e7cb9);background-image:linear-gradient(top,#45aae9,#1e7cb9);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#45aae9', endColorstr='#1e7cb9', GradientType=0);}.rok-button-primary:active,.rok-button-primary.rok-button-active{color:#fff;border:0;-webkit-box-shadow:0 0 0 1px #196a9f, 0 1px 1px #fff;-moz-box-shadow:0 0 0 1px #196a9f, 0 1px 1px #fff;box-shadow:0 0 0 1px #196a9f, 0 1px 1px #fff;background-color:#228cd0;background-image:-moz-linear-gradient(top,#259be5,#1c76b1);background-image:-ms-linear-gradient(top,#259be5,#1c76b1);background-image:-webkit-gradient(linear,0 0,0 100%,from(#259be5),to(#1c76b1));background-image:-webkit-linear-gradient(top,#259be5,#1c76b1);background-image:-o-linear-gradient(top,#259be5,#1c76b1);background-image:linear-gradient(top,#259be5,#1c76b1);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#259be5', endColorstr='#1c76b1', GradientType=0);}.rok-button-primary:active,.rok-button-primary.rok-button-active{background-color:#1a82c4;background-image:-moz-linear-gradient(top,#1a91dd,#196a9f);background-image:-ms-linear-gradient(top,#1a91dd,#196a9f);background-image:-webkit-gradient(linear,0 0,0 100%,from(#1a91dd),to(#196a9f));background-image:-webkit-linear-gradient(top,#1a91dd,#196a9f);background-image:-o-linear-gradient(top,#1a91dd,#196a9f);background-image:linear-gradient(top,#1a91dd,#196a9f);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#1a91dd', endColorstr='#196a9f', GradientType=0);}.rok-button-primary.rok-button-disabled,.rok-button-primary.rok-button-disabled:hover{text-shadow:0 -1px 0 #fff;}.rok-button-secondary{position:relative;font-size:;line-height:1em;min-width:15px;-webkit-border-radius:2px;-moz-border-radius:2px;border-radius:2px;margin-right:4px;padding:7px 6px;color:#65646A;border-width:1px;border-style:solid;border-color:rgba(255,255,255,0.85) rgba(255,255,255,0.85) #e6e6e6;text-shadow:0 1px 0 #ffffff;-webkit-box-shadow:0 0 0 1px #b5b5b5, 0 3px 5px #c6c6c6;-moz-box-shadow:0 0 0 1px #b5b5b5, 0 3px 5px #c6c6c6;box-shadow:0 0 0 1px #b5b5b5, 0 3px 5px #c6c6c6;vertical-align:middle;text-align:center;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;*margin-left:.3em;background-color:#eeeeee;background-image:-moz-linear-gradient(top,#f0f0f0,#ebebeb);background-image:-ms-linear-gradient(top,#f0f0f0,#ebebeb);background-image:-webkit-gradient(linear,0 0,0 100%,from(#f0f0f0),to(#ebebeb));background-image:-webkit-linear-gradient(top,#f0f0f0,#ebebeb);background-image:-o-linear-gradient(top,#f0f0f0,#ebebeb);background-image:linear-gradient(top,#f0f0f0,#ebebeb);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#f0f0f0', endColorstr='#ebebeb', GradientType=0);color:#fff;border-width:1px;border-style:solid;border-color:rgba(255,255,255,0.45) rgba(255,255,255,0.15) #616161;box-shadow:0 0 0 1px #737373, 0 3px 5px #c6c6c6;text-shadow:0 -1px 0 #545454;vertical-align:middle;text-align:center;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;*margin-left:.3em;background-color:#858585;background-image:-moz-linear-gradient(top,#999,#666);background-image:-ms-linear-gradient(top,#999,#666);background-image:-webkit-gradient(linear,0 0,0 100%,from(#999),to(#666));background-image:-webkit-linear-gradient(top,#999,#666);background-image:-o-linear-gradient(top,#999,#666);background-image:linear-gradient(top,#999,#666);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#999999', endColorstr='#666666', GradientType=0);}.rok-button-secondary .caret{margin:5px 0 0;opacity:0.5;filter:alpha(opacity=50);}.rok-button-secondary:first-child{*margin-left:0;}.rok-button-secondary .caret{display:inline-block;width:0;height:0;vertical-align:top;border-top:4px solid #65646A;border-right:4px solid transparent;border-left:4px solid transparent;content:"";}.rok-button-secondary:hover,.rok-button-secondary.rok-button-hover{color:#484848;background-color:#f8f8f8;background-image:-moz-linear-gradient(top,#fafafa,#f5f5f5);background-image:-ms-linear-gradient(top,#fafafa,#f5f5f5);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fafafa),to(#f5f5f5));background-image:-webkit-linear-gradient(top,#fafafa,#f5f5f5);background-image:-o-linear-gradient(top,#fafafa,#f5f5f5);background-image:linear-gradient(top,#fafafa,#f5f5f5);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fafafa', endColorstr='#f5f5f5', GradientType=0);}.rok-button-secondary:hover .caret,.rok-button-secondary.rok-button-hover .caret{display:inline-block;width:0;height:0;vertical-align:top;border-top:4px solid #484848;border-right:4px solid transparent;border-left:4px solid transparent;content:"";}.rok-button-secondary:active,.rok-button-secondary.rok-button-active{color:#464646;border:0;-webkit-box-shadow:0 0 0 1px #a1a1a1, 0 1px 1px #fff;-moz-box-shadow:0 0 0 1px #a1a1a1, 0 1px 1px #fff;box-shadow:0 0 0 1px #a1a1a1, 0 1px 1px #fff;background-color:#ebebeb;background-image:-moz-linear-gradient(top,#ededed,#e8e8e8);background-image:-ms-linear-gradient(top,#ededed,#e8e8e8);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ededed),to(#e8e8e8));background-image:-webkit-linear-gradient(top,#ededed,#e8e8e8);background-image:-o-linear-gradient(top,#ededed,#e8e8e8);background-image:linear-gradient(top,#ededed,#e8e8e8);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ededed', endColorstr='#e8e8e8', GradientType=0);}.rok-button-secondary:active .caret,.rok-button-secondary.rok-button-active .caret{display:inline-block;width:0;height:0;vertical-align:top;border-top:4px solid #464646;border-right:4px solid transparent;border-left:4px solid transparent;content:"";}.rok-button-secondary.rok-button-disabled,.rok-button-secondary.rok-button-disabled:hover,.rok-button-secondary.rok-button-disabled:active{cursor:default;color:#929292;border:0;-webkit-box-shadow:0 0 0 1px #bbbbbb, 0 1px 1px #fff;-moz-box-shadow:0 0 0 1px #bbbbbb, 0 1px 1px #fff;box-shadow:0 0 0 1px #bbbbbb, 0 1px 1px #fff;background-color:#ebebeb;background-image:-moz-linear-gradient(top,#ededed,#e8e8e8);background-image:-ms-linear-gradient(top,#ededed,#e8e8e8);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ededed),to(#e8e8e8));background-image:-webkit-linear-gradient(top,#ededed,#e8e8e8);background-image:-o-linear-gradient(top,#ededed,#e8e8e8);background-image:linear-gradient(top,#ededed,#e8e8e8);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ededed', endColorstr='#e8e8e8', GradientType=0);}.rok-button-secondary.rok-button-disabled .caret,.rok-button-secondary.rok-button-disabled:hover .caret,.rok-button-secondary.rok-button-disabled:active .caret{display:inline-block;width:0;height:0;vertical-align:top;border-top:4px solid #464646;border-right:4px solid transparent;border-left:4px solid transparent;content:"";}.rok-button-secondary.rok-button-disabled i,.rok-button-secondary.rok-button-disabled:hover i,.rok-button-secondary.rok-button-disabled:active i{opacity:0.5;filter:alpha(opacity=50);}.rok-button-secondary:active,.rok-button-secondary.rok-button-active{padding:8px 7px;}.rok-button-secondary.rok-button-disabled,.rok-button-secondary.rok-button-disabled:hover,.rok-button-secondary.rok-button-disabled:active{padding:8px 7px;}.rok-button-secondary.rok-button-primary i{opacity:1;filter:alpha(opacity=100);}.rok-button-secondary i{margin:-1px 0 -2px;}.rok-button-secondary:first-child{*margin-left:0;}.rok-button-secondary .caret{display:inline-block;width:0;height:0;vertical-align:top;border-top:4px solid #fff;border-right:4px solid transparent;border-left:4px solid transparent;content:"";}.rok-button-secondary:hover,.rok-button-secondary.rok-button-hover{color:#fff;background-color:#8f8f8f;background-image:-moz-linear-gradient(top,#a8a8a8,#696969);background-image:-ms-linear-gradient(top,#a8a8a8,#696969);background-image:-webkit-gradient(linear,0 0,0 100%,from(#a8a8a8),to(#696969));background-image:-webkit-linear-gradient(top,#a8a8a8,#696969);background-image:-o-linear-gradient(top,#a8a8a8,#696969);background-image:linear-gradient(top,#a8a8a8,#696969);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#a8a8a8', endColorstr='#696969', GradientType=0);}.rok-button-secondary:active,.rok-button-secondary.rok-button-active{color:#fff;border:0;-webkit-box-shadow:0 0 0 1px #595959, 0 1px 1px #fff;-moz-box-shadow:0 0 0 1px #595959, 0 1px 1px #fff;box-shadow:0 0 0 1px #595959, 0 1px 1px #fff;background-color:#828282;background-image:-moz-linear-gradient(top,#969696,#636363);background-image:-ms-linear-gradient(top,#969696,#636363);background-image:-webkit-gradient(linear,0 0,0 100%,from(#969696),to(#636363));background-image:-webkit-linear-gradient(top,#969696,#636363);background-image:-o-linear-gradient(top,#969696,#636363);background-image:linear-gradient(top,#969696,#636363);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#969696', endColorstr='#636363', GradientType=0);}.rok-button-secondary:active,.rok-button-secondary.rok-button-active{background-color:#727272;background-image:-moz-linear-gradient(top,#616161,#8c8c8c);background-image:-ms-linear-gradient(top,#616161,#8c8c8c);background-image:-webkit-gradient(linear,0 0,0 100%,from(#616161),to(#8c8c8c));background-image:-webkit-linear-gradient(top,#616161,#8c8c8c);background-image:-o-linear-gradient(top,#616161,#8c8c8c);background-image:linear-gradient(top,#616161,#8c8c8c);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#616161', endColorstr='#8c8c8c', GradientType=0);}.rok-buttons-group > *{display:inline-block;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;margin-right:0;margin-left:-3px;}.rok-buttons-group > *:first-child{margin-left:0;-webkit-border-radius:3px 0 0 3px;-moz-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px;}.rok-buttons-group > *:last-child{-webkit-border-radius:0 3px 3px 0;-moz-border-radius:0 3px 3px 0;border-radius:0 3px 3px 0;margin-right:4px;}#g4-toolbar .rok-dropdown-open ul.rok-dropdown{display:block;}#g4-toolbar ul.rok-dropdown{position:absolute;top:100%;left:0;display:none;float:left;list-style:none;-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box;z-index:5;background-color:#fefefe;min-width:160px;top:200%;right:-10px;left:inherit;padding:4px 0;border:1px solid #fff;*border-right-width:2px;*border-bottom-width:2px;-webkit-border-radius:2px 2px 4px 4px;-moz-border-radius:2px 2px 4px 4px;border-radius:2px 2px 4px 4px;-webkit-box-shadow:0 5px 10px rgba(0, 0, 0, .1), 0 0 0 1px rgba(0, 0, 0, 0.20);-moz-box-shadow:0 5px 10px rgba(0, 0, 0, .1), 0 0 0 1px rgba(0, 0, 0, 0.20);box-shadow:0 5px 10px rgba(0, 0, 0, .1), 0 0 0 1px rgba(0, 0, 0, 0.20);}#g4-toolbar ul.rok-dropdown .divider{*width:100%;height:1px;margin:8px 1px;*margin:-5px 0 5px;overflow:hidden;background-color:#e5e5e5;border-bottom:1px solid #fff;}#g4-toolbar ul.rok-dropdown > li{display:block;}#g4-toolbar ul.rok-dropdown a{display:block;clear:both;font-weight:normal;white-space:nowrap;}#g4-toolbar ul.rok-dropdown > li > a:hover,#g4-toolbar ul.rok-dropdown .active > a,#g4-toolbar ul.rok-dropdown .active > a:hover{text-decoration:none;}#g4-toolbar ul.rok-dropdown li{text-align:left;}#g4-toolbar ul.rok-dropdown li a{color:#666;}#g4-toolbar ul.rok-dropdown .divider{background-color:#e5e5e5;border-bottom:1px solid #ffffff;margin:5px 1px;}#g4-toolbar ul.rok-dropdown a{margin:0 -1px;padding:3px 15px;line-height:24px;color:;text-shadow:0 1px 0 #fff;text-decoration:none;}#g4-toolbar ul.rok-dropdown > li > a:hover,#g4-toolbar ul.rok-dropdown .active > a,#g4-toolbar ul.rok-dropdown .active > a:hover{background-color:#258fd2;background-image:-moz-linear-gradient(top,#2a9de6,#1d79b5);background-image:-ms-linear-gradient(top,#2a9de6,#1d79b5);background-image:-webkit-gradient(linear,0 0,0 100%,from(#2a9de6),to(#1d79b5));background-image:-webkit-linear-gradient(top,#2a9de6,#1d79b5);background-image:-o-linear-gradient(top,#2a9de6,#1d79b5);background-image:linear-gradient(top,#2a9de6,#1d79b5);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#2a9de6', endColorstr='#1d79b5', GradientType=0);color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.5);}.text-verylong{width:375px;}.text-long{width:275px;}.text-regular{width:200px;}.text-medium{width:125px;}.text-short{width:50px;}.text-color{width:75px;}textarea.text-textarea{width:350px;height:120px;padding:5px;font-family:Monaco, Menlo, Consolas, "Courier New", monospace;text-indent:0;}.toggle{display:inline-block;width:80px;height:35px;background:url(images/toggle.png);cursor:hand;}.toggle .toggle-input{display:none;}.toggle.toggle-off{background-position:0 0;}.toggle.toggle-on{background-position:0 -40px;}.toggle.toggle-off.disabled{background-position:0 -80px;}.toggle.toggle-on.disabled{background-position:0 -120px;}.selectedset-group{clear:both;position:relative;}.selectset-group-first{border-top:none;}.selectedset-fields,.selectedset-fields .gantry-field{position:relative;}.selectedset-hidden-field{visibility:hidden;position:absolute;top:-2000px;}#g4-panel .navigation li a{color:#444;}#g4-panel .navigation li a:hover{color:#D54E21;}#g4-panel .navigation li.active a,#gantry-panel .navigation li.active a:hover{color:#1578B9;}.position,.slider{width:192px;height:9px;background:url(images/slider.png) 0 0 no-repeat;position:relative;margin-top:10px;}.position2,.slider2{width:192px;height:9px;background:url(images/slider.png) 0 -14px no-repeat;position:absolute;width:0px;}.position .knob,.slider .knob{width:24px;height:24px;top:-8px;left:-8px;background:url(images/slider.png) -195px 0 no-repeat;position:absolute;cursor:pointer;}.position-field .chain-toggle,.position-field .chain-showmax{margin-top:-3px;}#positions-tip{background:url(slider/images/slider-tip.png) no-repeat;font-size:12px;width:117px;height:50px;text-shadow:1px 1px #000;color:#fff;position:absolute;visibility:hidden;text-align:center;padding:0 4px;line-height:38px;letter-spacing:-1px;top:0;z-index:20;}.navigation{color:#666;}.navigation .title,.navigation .list{float:left;}.navigation .title{font-size:100%;}.navigation .list{margin:0;padding:0;list-style:none;}.navigation .list li{display:inline;}.navigation .list li a{display:block;padding:0 7px;text-decoration:none;color:#aaa;float:left;outline:none;}.navigation .list li.active a{font-weight:bold;text-decoration:underline;color:#333;}.mini-container{text-align:center;background:#fff;height:28px;padding:0;color:#555;-webkit-box-shadow:0 2px 2px 0 rgba(0,0,0,0.1) inset, 0 1px 0 0 #fff;-moz-box-shadow:0 2px 2px 0 rgba(0,0,0,0.1) inset, 0 1px 0 0 #fff;box-shadow:0 2px 2px 0 rgba(0,0,0,0.1) inset, 0 1px 0 0 #fff;border:1px solid #cfcfcf;border-top-color:#c6c6c6;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;}.mini-container div{height:28px;line-height:28px;}.mini-container .main{background:#666;text-shadow:1px 1px #1b80a0;color:#fff;}.mini-container{width:192px;}.mini-grid-1,.mini-grid-2,.mini-grid-3,.mini-grid-4,.mini-grid-5,.mini-grid-6,.mini-grid-7,.mini-grid-8,.mini-grid-9,.mini-grid-10,.mini-grid-11,.mini-grid-12,.mini-grid-13,.mini-grid-14,.mini-grid-15,.mini-grid-16{display:inline;float:left;position:relative;}.mini-container .mini-grid{border-left:1px solid #d0d0d0;padding-right:1px;}.mini-container .mini-grid:first-child{border-left:0;padding-left:1px;}.col9 .mini-container .mini-grid-1{width:19px;}.col9 .mini-container .mini-grid-2{width:40px;}.col9 .mini-container .mini-grid-3{width:61px;}.col9 .mini-container .mini-grid-4{width:82px;}.col9 .mini-container .mini-grid-5{width:103px;}.col9 .mini-container .mini-grid-6{width:124px;}.col9 .mini-container .mini-grid-7{width:145px;}.col9 .mini-container .mini-grid-8{width:166px;}.col9 .mini-container .mini-grid-9{width:190px;}.col12 .mini-container .mini-grid-1{width:15px;}.col12 .mini-container .mini-grid-2{width:30px;}.col12 .mini-container .mini-grid-3{width:46px;}.col12 .mini-container .mini-grid-4{width:62px;}.col12 .mini-container .mini-grid-5{width:78px;}.col12 .mini-container .mini-grid-6{width:94px;}.col12 .mini-container .mini-grid-7{width:110px;}.col12 .mini-container .mini-grid-8{width:126px;}.col12 .mini-container .mini-grid-9{width:142px;}.col12 .mini-container .mini-grid-10{width:158px;}.col12 .mini-container .mini-grid-11{width:174px;}.col12 .mini-container .mini-grid-12{width:190px;}.col16 .mini-container .mini-grid-1{width:10px;}.col16 .mini-container .mini-grid-2{width:22px;}.col16 .mini-container .mini-grid-3{width:34px;}.col16 .mini-container .mini-grid-4{width:46px;}.col16 .mini-container .mini-grid-5{width:58px;}.col16 .mini-container .mini-grid-6{width:70px;}.col16 .mini-container .mini-grid-7{width:82px;}.col16 .mini-container .mini-grid-8{width:94px;}.col16 .mini-container .mini-grid-9{width:106px;}.col16 .mini-container .mini-grid-10{width:118px;}.col16 .mini-container .mini-grid-11{width:130px;}.col16 .mini-container .mini-grid-12{width:142px;}.col16 .mini-container .mini-grid-13{width:154px;}.col16 .mini-container .mini-grid-14{width:166px;}.col16 .mini-container .mini-grid-15{width:178px;}.col16 .mini-container .mini-grid-16{width:190px;}.graphic-level{background:url(images/graphic-level.png) no-repeat;padding-top:15px;}.miniatures{float:left;}.current-positions{padding-left:210px;color:#999;}.gradient-preview{width:100%;height:100%;}.presets{position:relative;width:1000px;margin:0 auto;}.presets .scroller{margin-bottom:30px;}.presets .scroller .inner{overflow:hidden;width:100%;}.presets .presets-scrollbar{background:#dedede;-webkit-box-shadow:0 2px 3px rgba(0, 0, 0, 0.2) inset, 0 1px 0 0 #fff;-moz-box-shadow:0 2px 3px rgba(0, 0, 0, 0.2) inset, 0 1px 0 0 #fff;box-shadow:0 2px 3px rgba(0, 0, 0, 0.2) inset, 0 1px 0 0 #fff;position:absolute;width:100%;height:16px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;}.presets .presets-scrollbar .bar{position:absolute;top:-1px;left:-1px;height:16px;width:0;border:1px solid #bbb;-webkit-box-shadow:1px 1px 0 0 #fff inset;-moz-box-shadow:1px 1px 0 0 #fff inset;box-shadow:1px 1px 0 0 #fff inset;-webkit-border-radius:2px;-moz-border-radius:2px;border-radius:2px;background:#fafafa url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAALBAMAAAC5XnFsAAAAA3NCSVQICAjb4U/gAAAAElBMVEX////+/v7Ozs7Nzc3Ly8uMRgCgvID5AAAABnRSTlP//////wCzv6S/AAAACXBIWXMAAAsSAAALEgHS3X78AAAAHHRFWHRTb2Z0d2FyZQBBZG9iZSBGaXJld29ya3MgQ1M26LyyjAAAABR0RVh0Q3JlYXRpb24gVGltZQA4LzMvMTLfrdy9AAAAKUlEQVQImWMIYAVBBigVbAqCDKFgwBAoCpUDMYByQapBqhhyYCrEFQQBMiQPAwBHVdkAAAAASUVORK5CYII=) 50% 2px no-repeat;}.presets .presets-scrollbar{position:absolute;left:0;bottom:-15px;}.presets .wrapper{font-size:0;margin:0 auto;}.presets .wrapper .block{font-size:12px;display:inline-block;cursor:pointer;position:relative;margin:20px 8px 10px;-webkit-box-shadow:0 1px 5px rgba(33,33,33,0.1);-moz-box-shadow:0 1px 5px rgba(33,33,33,0.1);box-shadow:0 1px 5px rgba(33,33,33,0.1);-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;border:1px solid #d9d9d9;padding:1px;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJYAAABGCAMAAAAZ4Z3/AAAAA3NCSVQICAjb4U/gAAAAilBMVEX////+/v79/f38/Pz7+/v39/f29vbz8/Py8vLw8PDv7+/u7u7t7e3s7Ozr6+vq6urp6eno6Ojn5+fi4uLh4eHg4ODf39/b29vY2NjX19fW1tbV1dXU1NTT09PS0tLR0dHQ0NDPz8/Ozs7Nzc3MzMzDw8O5ubmxsbGkpKSampqQkJCLi4uIiIiMRgBq/iXiAAAALnRSTlP///////////////////////////////////////////////////////////8Ago9zVQAAAAlwSFlzAAALEgAACxIB0t1+/AAAABx0RVh0U29mdHdhcmUAQWRvYmUgRmlyZXdvcmtzIENTNui8sowAAAAUdEVYdENyZWF0aW9uIFRpbWUAOC80LzEyQnrkBAAAA5lJREFUaIHtmYt2mzAMhrvFpFcv7Vg2uqVd69YBjP3+rzdJtoEQyDBdgJ3Df1rAMogP3yTChZmlLqYGaNeCFaIFK0QLVogWrBA5rM93N0a8k4TxR+MfNrBuX79fjd8kR1ptn2/tEWE9PK+npKlp/bwhItzcvawmpqm0ernBHWCx2bQVar1jhrDut1OjHGi7MYT143JqkgNdPhrC2kwN0tDOzHI5/WII625qjhYBlvj7WU5SZ7jTsmFFZdHJS5lkfe/y1WK9BWDpuA2Lcx6r4uSlXPO+d3kbgFV4rESK0orbWEdRZCTHGmQ3kZREQkUmtDjdnB/CEnpvsZTOtY5qWFzzHIwJ1aRAo5XyJ6bU0fn5sOAuEWKliOT6jbCY0ibX3JgUjJFOTK5g1GZlkWPd+bAirRAL2wMaJLJWUkwkUAMjTWVgTRNWFc+MZfbQkdIOL3crGvJ4lGM3WUY4EtDL+7J4bixTaGAqcKUQmpVW47EKGHwGBj9nWBOVxWCsb2FYMWLB4Ic75ZW1xIK2gxoAV4Tli/AfOBP7ywJk2IP7amodYkG1xpHHsfNEWYT50HcmuuV0WPBhvOvpGbcLOo23qhikoOAzjoKDzzgKnonjaMEK0X+G5YKcluWK1KLOOqhwdc4PPwnBj+q7sBjnkB5xzgZhcVlhcRcth2C1BR97MrgXmMsxLEBggz8hMLHjVR0ZKbAwIRN6qArLu7M5Y92NDUVCxp1Y3c8gtcoLyFjIP4SWvChyXShVQFSBOsjzIBDDGXRSpKFSHXai8+ZyxsqNvYJB/CrUEdaJ4OOx4CGLvPIHvhOMiGSDfQo5BBrRkBUYxvkBVg5Kypyx7oauwH1+hGVMZ/DxWNZP6S93Nd7GgJsCNG14kjWwpMSE3ueMdTe4IXvc1VptC0RPLEwH/U0gec/SBpZ15nPGI6xaLlnTiXWrDxbD1koOnp23YvmcsYlVpGQfjJXQO0ITS2EyxSqsDMdaG5bPGeturAssD8eCqQTzromVwlKZmFonajS1zUSfM9bc0IZSxBCspqLmtSjGG0WGS1KbfM7YdNPwEIw1puaN1f/NZxwFv/mMow+9+ZxXM3zzuTeE9To1R0PuJ92f8/oB/AqTNsB6mNnnAvdLM9vN6uPKL/wAhQvEzaw+RdGQQqxPm6e5tNf6yX5QtMvp9WbAryr/Xqt4d22PqlX+8c19m12Z3+8THZaaYfBBLVghWrBCtGCFaKZYfwCcAfb/ENSCxAAAAABJRU5ErkJggg==) 50% 60% no-repeat;-webkit-transition:all 0.25s ease-in-out;-moz-transition:all 0.25s ease-in-out;-ms-transition:all 0.25s ease-in-out;-o-transition:all 0.25s ease-in-out;transition:all 0.25s ease-in-out;}.presets .wrapper .block.pulsing{outline:0;border-color:rgba(82,168,236,0.8);-webkit-box-shadow:0 0 8px rgba(82,168,236,0.6);-moz-box-shadow:0 0 8px rgba(82,168,236,0.6);box-shadow:0 0 8px rgba(82,168,236,0.6);-webkit-transition:all 0.25s ease-in-out;-moz-transition:all 0.25s ease-in-out;-ms-transition:all 0.25s ease-in-out;-o-transition:all 0.25s ease-in-out;transition:all 0.25s ease-in-out;}.presets .wrapper .block div.presets-bg{width:180px;height:100px;-webkit-border-radius:0 0 4px 4px;-moz-border-radius:0 0 4px 4px;border-radius:0 0 4px 4px;}.presets .wrapper .block span{display:block;-webkit-border-radius:4px 4px 0 0;-moz-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0;border-top:1px solid #fff;border-bottom:1px solid #d9d9d9;background:#f5f5f5;color:#666;text-align:center;font-weight:bold;padding:4px;font-size:14px;line-height:14px;text-shadow:1px 1px 0 #fff;}.presets .wrapper .block .delete-preset{position:absolute;right:4px;top:4px;background:#ddd;border:1px solid #ccc;-webkit-border-radius:20px;-moz-border-radius:20px;border-radius:20px;padding:1px 4px;cursor:pointer;}.presets .wrapper .block .delete-preset:hover{background:#e83f1f;border:1px solid #cb2417;}.presets .wrapper .block .delete-preset:hover span{color:#fff;text-shadow:1px 1px 0 #2373bd;}.presets .wrapper .block .delete-preset span{border:0;padding:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;background:transparent;}#gantry-layer{position:absolute;top:0;left:0;right:0;bottom:0;background:#000;z-index:900;}.presets-wrapper-table{display:table;width:100%;height:100%;position:absolute;left:0;top:0;right:0;bottom:0;}.presets-wrapper-table .presets-wrapper-row{display:table-row;}.presets-wrapper-table .presets-wrapper-row .presets-wrapper-cell{display:table-cell;vertical-align:middle;}#presets-namer{position:relative;margin:0 auto;background:#fff;padding:15px;width:80%;max-width:500px;z-index:1500;font-size:13px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;}#presets-namer .preset-bottom{text-align:right;}#presets-namer .rok-button{display:inline-block;margin-left:5px;}#presets-namer h2,#presets-namer h3{margin-top:0;margin-bottom:5px;color:#D73D12;font-family:"Oxygen", Arial, sans-serif;}#presets-namer h3{color:#000;text-transform:uppercase;padding-bottom:5px;margin-bottom:10px;position:relative;}#presets-namer h3 span{text-transform:uppercase;color:#C13201;}#presets-namer p{margin:10px 0;}#presets-namer input,#presets-namer input:focus{-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;padding:4px;margin:0;-webkit-box-shadow:0 2px 2px 0 rgba(0,0,0,0.1) inset, 0 1px 0 0 #fff;-moz-box-shadow:0 2px 2px 0 rgba(0,0,0,0.1) inset, 0 1px 0 0 #fff;box-shadow:0 2px 2px 0 rgba(0,0,0,0.1) inset, 0 1px 0 0 #fff;border:1px solid #cfcfcf;border-top-color:#c6c6c6;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;width:100%;}#presets-namer input.example,#presets-namer input:focus.example{color:#999;font-style:italic;}#presets-namer button{font-size:90%;margin-right:10px;}#presets-namer label span{text-align:right;padding-right:10px;float:left;display:block;width:85px;color:#666;text-transform:uppercase;font-size:80%;line-height:25px;}#presets-namer .preset-namer{background:#e9e9e9;padding:15px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;margin-bottom:15px;border:1px solid #ccc;}.gantry-layer-wrapper .preset-namer div{margin:5px 10px;}.gantry-layer-close{color:#f64a4a;font-weight:bold;position:absolute;height:20px;width:20px;line-height:20px;top:2px;right:2px;}.roar-body{position:absolute;color:#fff;text-align:left;z-index:999;}.roar-body .roar{position:absolute;width:300px;cursor:pointer;}.roar-body .roar .roar-bg{position:absolute;z-index:1000;width:100%;height:100%;top:0;left:0;background-color:#000;-webkit-border-radius:8px;-moz-border-radius:8px;border-radius:8px;-webkit-box-shadow:0 0 2px 0 #fff inset, 0 0 5px rgba(0, 0, 0, 0.5);-moz-box-shadow:0 0 2px 0 #fff inset, 0 0 5px rgba(0, 0, 0, 0.5);box-shadow:0 0 2px 0 #fff inset, 0 0 5px rgba(0, 0, 0, 0.5);}.roar-body .roar h3,.roar-body .roar p{position:relative;margin:0;color:#fff;visibility:visible;z-index:1001;font-size:13px;padding:5px 10px;}.roar-body .roar p{font-size:12px;padding-top:0;}
admin/widgets/gantry-widgets.css CHANGED
@@ -1,5 +1,5 @@
1
  /**
2
- * @version $Id: gantry-widgets.css 58595 2012-12-11 19:59:45Z btowles $
3
  * @author RocketTheme http://www.rockettheme.com
4
  * @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
5
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
@@ -7,51 +7,61 @@
7
  #screen-meta {z-index:5;}
8
  #screen-meta-links {position: relative; z-index: 2;}
9
  #screen-meta .screen-meta-toggle {background:#f4f4f4;}
10
- input.override-checkbox {float:left;margin:10px -5px 0 8px;}
 
11
  h3 input.override-checkbox {float:none;margin:-4px 4px 0 -3px;}
12
 
13
- #screen-meta #screen-meta-links {margin:0 18px 0;}
14
  #screen-meta #screen-options-wrap, #screen-meta #contextual-help-wrap {margin:0 18px 0 10px;}
15
  #screen-meta #screen-options-wrap, #screen-meta #contextual-help-wrap { -moz-border-radius-bottomleft: 0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;}
16
  #screen-meta-links #screen-options-link-wrap, #screen-meta-links #contextual-help-link-wrap {border:1px solid #ccc;border-top:0;}
17
 
18
- #gantry-overrides {margin: 0 18px 0 10px;border: 1px solid #D7D7D7;-moz-border-radius-bottomleft: 5px;-webkit-border-bottom-left-radius: 5px;border-bottom-left-radius: 5px;-moz-border-radius-bottomright: 5px;-webkit-border-bottom-right-radius: 5px;border-bottom-right-radius: 5px;border-top:0;}
19
- #gantry-overrides .overrides-inner {position: relative;height:44px;border-bottom: 1px solid #eee;-moz-border-radius-bottomleft: 5px;-webkit-border-bottom-left-radius: 5px;border-bottom-left-radius: 5px;-moz-border-radius-bottomright: 5px;-webkit-border-bottom-right-radius: 5px;border-bottom-right-radius: 5px;background: #e4e4e4;background:-moz-linear-gradient(center top,#e3e3e3 0%,#d0d0d0 80%,#c3c3c3 95%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0, #e3e3e3),color-stop(0.8, #d0d0d0),color-stop(0.95, #c3c3c3));border-bottom:0;}
 
20
  #overrides-actions {float:left;margin:10px 0 0 8px;min-width:180px;position:relative;z-index:1000;}
21
- #overrides-actions .add-edit-input {position: absolute;width:85%;height:18px;top:2px;}
22
- #overrides-first {padding:3px 30px 4px 12px;line-height:15px;border: 1px solid #c0c0c0;-moz-border-radius: 12px;-webkit-border-radius: 12px;border-radius:12px;background: -moz-linear-gradient(bottom, #e7e7e7, #fff);background: -webkit-gradient(linear, left bottom, left top, from(#e7e7e7), to(#fff));}
23
  #overrides-first.slide-down {border-bottom: none;-webkit-border-bottom-right-radius: 0;-webkit-border-bottom-left-radius: 0;border-bottom-right-radius: 0;border-bottom-left-radius: 0;-moz-border-radius-bottomright: 0;-moz-border-radius-bottomleft:0;}
24
 
25
- #overrides-actions a {color: #464646;display:block;font-size:11px;text-decoration:none;padding:3px 5px 3px 10px}
26
- #overrides-first a {background: url(images/overrides-default.png) 0 50% no-repeat;padding: 0 0 0 18px;}
 
27
  #overrides-actions a:hover {color:#000;text-decoration:underline;}
28
  #overrides-first a:hover {text-decoration:none;}
29
- #overrides-toggle {background:url(images/overrides-arrow.gif) 0 -4px no-repeat;height: 22px;position:absolute;right:0px;top:1px; width:28px;cursor:pointer;}
 
30
  #overrides-toggle.hidden {display:none;}
31
- #overrides-inside {background-color:#FFFFFF;border-color:#C0C0C0;margin:0;padding:2px 1px;border-width:1px;border-style:solid;position:absolute;z-index:11;display:none;-moz-border-radius:0 0 12px 12px;-webkit-border-bottom-right-radius:12px;-webkit-border-bottom-left-radius:12px;-khtml-border-bottom-right-radius:12px;-khtml-border-bottom-left-radius:12px;border-bottom-right-radius:12px;border-bottom-left-radius:12px;}
32
 
33
- #overrides-toolbar {float:left;margin:10px 0 0 10px;position:relative;}
34
- #overrides-toolbar .ajax-loading {float:left;margin:4px;}
35
- #overrides-toolbar .overrides-button {float: left;width:29px; height:24px;background:url(images/overrides-toolbar.png);cursor:pointer;}
 
 
36
  #overrides-toolbar .overrides-button span {display:none;}
37
- #overrides-toolbar .button-del {background-position:-29px 0;width:28px;}
38
- #overrides-toolbar .button-edit {background-position:-57px 0;}
39
- #overrides-toolbar .button-add:hover {background-position: 0 -24px;}
40
- #overrides-toolbar .button-del:hover {background-position: -29px -24px;}
41
- #overrides-toolbar .button-edit:hover {background-position: -57px -24px;}
42
 
43
- #overrides-switch {float:left;margin:10px 0 0 10px;position:relative;}
 
 
 
 
 
 
44
 
45
  .gantry-notice {position:relative;}
46
  .gantry-notice .close {position: absolute;right: 9px;top:10px;width: 10px;height:11px;display:block;background:url(images/delete.png) no-repeat;cursor:pointer;}
47
  .gantry-notice .close span {display:none;}
48
 
49
- .text-button {display: inline-block;height: 24px;background: url(images/overrides-buttons-l.png) 0 0 no-repeat;text-decoration:none;}
50
- .text-button span {font-size:11px;font-family: "Lucida Grande", Verdana, Arial, "Bitstream Vera Sans", sans-serif;color:#333;display: inline-block;background: url(images/overrides-buttons-r.png) 100% 0 no-repeat;margin-left: 20px;padding:0 10px 0 5px;line-height:24px;height:24px;}
 
 
51
  .text-button:hover span {color:#000;background-position: 100% -24px;}
52
 
53
- .text-button.button-widget { background-position: 0 -48px;}
54
- .text-button.button-widget:hover { background-position: 0 -72px;}
 
55
 
56
  .widget fieldset.panelform .field-wrapper {margin-bottom: 10px;}
57
 
@@ -60,4 +70,43 @@ h3 input.override-checkbox {float:none;margin:-4px 4px 0 -3px;}
60
 
61
  /* WordPress */
62
 
63
- #adminmenu li .wp-submenu, .folded #adminmenu .wp-has-current-submenu .wp-submenu {z-index: 1001;}
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  /**
2
+ * @version $Id: gantry-widgets.css 60299 2013-12-11 10:21:10Z jakub $
3
  * @author RocketTheme http://www.rockettheme.com
4
  * @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
5
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
7
  #screen-meta {z-index:5;}
8
  #screen-meta-links {position: relative; z-index: 2;}
9
  #screen-meta .screen-meta-toggle {background:#f4f4f4;}
10
+ input.override-checkbox {float:left;margin:16px -2px 0 8px;}
11
+ #wp_inactive_widgets input#override-wp_inactive_widgets {margin:11px 5px 0 0;}
12
  h3 input.override-checkbox {float:none;margin:-4px 4px 0 -3px;}
13
 
14
+ #screen-meta-links {margin:0 30px 0;}
15
  #screen-meta #screen-options-wrap, #screen-meta #contextual-help-wrap {margin:0 18px 0 10px;}
16
  #screen-meta #screen-options-wrap, #screen-meta #contextual-help-wrap { -moz-border-radius-bottomleft: 0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;}
17
  #screen-meta-links #screen-options-link-wrap, #screen-meta-links #contextual-help-link-wrap {border:1px solid #ccc;border-top:0;}
18
 
19
+ #gantry-overrides {margin: 0 20px 0 0;border: 1px solid #E1E1E1; border-top:0;box-shadow: 0 1px 1px rgba(0, 0, 0, 0.04);}
20
+ #gantry-overrides .overrides-inner {position: relative;height:44px;background: #FAFAFA;}
21
+ #gantry-overrides .overrides-inner a {transition: none;}
22
  #overrides-actions {float:left;margin:10px 0 0 8px;min-width:180px;position:relative;z-index:1000;}
23
+ #overrides-actions .add-edit-input {position: absolute;width:90%;height:20px;top:2px;z-index: 2;}
24
+ #overrides-first {padding:3px 32px 1px 7px;line-height:15px;border: 1px solid #CCC;box-shadow: 0 1px 1px -1px rgba(0, 0, 0, 0.1);}
25
  #overrides-first.slide-down {border-bottom: none;-webkit-border-bottom-right-radius: 0;-webkit-border-bottom-left-radius: 0;border-bottom-right-radius: 0;border-bottom-left-radius: 0;-moz-border-radius-bottomright: 0;-moz-border-radius-bottomleft:0;}
26
 
27
+ #overrides-actions a {color: #444444;display:block;font-size:12px;text-decoration:none;padding:3px 5px 3px 10px}
28
+ #overrides-first a {padding: 0;}
29
+ .gantry-mp6 #overrides-first a:before {content: "\f111";font: normal 20px/1 'dashicons';speak: none;display: inline-block;padding: 0 5px 0 0;bottom: 2px;position: relative;vertical-align: middle;-webkit-font-smoothing: antialiased;-moz-osx-font-smoothing: grayscale;text-decoration: none !important;}
30
  #overrides-actions a:hover {color:#000;text-decoration:underline;}
31
  #overrides-first a:hover {text-decoration:none;}
32
+ #overrides-toggle {height: 24px;position:absolute;right:0px;top:1px; width:28px;cursor:pointer; border-left: 1px solid #CCC;}
33
+ .gantry-mp6 #overrides-toggle:before {content: "\f140";font: normal 20px/1 'dashicons';speak: none;display: inline-block;top: 1px;left: 2px;position: relative;vertical-align: middle;-webkit-font-smoothing: antialiased;-moz-osx-font-smoothing: grayscale;text-decoration: none !important;}
34
  #overrides-toggle.hidden {display:none;}
35
+ #overrides-inside {background-color:#FFFFFF;border-color:#CCC;margin:0;padding:2px 1px;border-width:1px;border-style:solid;position:absolute;z-index:11;display:none;box-shadow: 0 1px 1px rgba(0, 0, 0, 0.04);}
36
 
37
+ #overrides-toolbar {float:left;margin:10px 0 0 10px;position:relative; border: 1px solid #CCC;box-shadow: 0 1px 1px -1px rgba(0, 0, 0, 0.1);}
38
+ .gantry-mp6 #overrides-toolbar a, .gantry-mp6 #overrides-toolbar .overrides-button.button-edit {color: #444;text-decoration: none !important;}
39
+ .gantry-mp6 #overrides-toolbar a:hover, .gantry-mp6 #overrides-toolbar .overrides-button.button-edit:hover {color: #000;}
40
+ #overrides-toolbar .ajax-loading {float:left;border-left:1px solid #CCC;padding:4px 6px;}
41
+ #overrides-toolbar .overrides-button {float: left;width:29px; height:24px;cursor:pointer;}
42
  #overrides-toolbar .overrides-button span {display:none;}
 
 
 
 
 
43
 
44
+ .gantry-mp6 #overrides-toolbar .overrides-button.button-add:before {content: "\f132";font: normal 18px/1 'dashicons';speak: none;display: inline-block;top: 3px;left: 5px;position: relative;vertical-align: middle;-webkit-font-smoothing: antialiased;-moz-osx-font-smoothing: grayscale;text-decoration: none !important;}
45
+ .gantry-mp6 #overrides-toolbar .overrides-button.button-del {border-left: 1px solid #CCC;}
46
+ .gantry-mp6 #overrides-toolbar .overrides-button.button-del:before {content: "\f158";font: normal 20px/1 'dashicons';speak: none;display: inline-block;top: 2px;left: 4px;position: relative;vertical-align: middle;-webkit-font-smoothing: antialiased;-moz-osx-font-smoothing: grayscale;text-decoration: none !important;}
47
+ .gantry-mp6 #overrides-toolbar .overrides-button.button-edit {border-left: 1px solid #CCC;}
48
+ .gantry-mp6 #overrides-toolbar .overrides-button.button-edit:before {content: "\f327";font: normal 16px/1 'dashicons';speak: none;display: inline-block;top: 2px;left: 6px;position: relative;vertical-align: middle;-webkit-font-smoothing: antialiased;-moz-osx-font-smoothing: grayscale;text-decoration: none !important;}
49
+
50
+ #overrides-switch {float:left;margin:10px 0 0 10px;position:relative;border: 1px solid #CCC;box-shadow: 0 1px 1px -1px rgba(0, 0, 0, 0.1);}
51
 
52
  .gantry-notice {position:relative;}
53
  .gantry-notice .close {position: absolute;right: 9px;top:10px;width: 10px;height:11px;display:block;background:url(images/delete.png) no-repeat;cursor:pointer;}
54
  .gantry-notice .close span {display:none;}
55
 
56
+ .text-button {display: inline-block;height: 24px;text-decoration:none;color: #444444;}
57
+ .gantry-mp6 .text-button:hover {color: #000;}
58
+ #overrides-toggle.hidden {display:none;}
59
+ .text-button span {font-size:11px;font-family: "Lucida Grande", Verdana, Arial, "Bitstream Vera Sans", sans-serif;color:#333;display: inline-block; padding:0 10px 0 5px;line-height:24px;height:24px;}
60
  .text-button:hover span {color:#000;background-position: 100% -24px;}
61
 
62
+ .gantry-mp6 #overrides-toolbar .text-button.button-add, .gantry-mp6 #overrides-switch .text-button.button-widget {padding-left: 1px;}
63
+ .gantry-mp6 #overrides-toolbar .text-button.button-add:before {content: "\f132";font: normal 20px/1 'dashicons';speak: none;display: inline-block;top: 1px;left: 2px;position: relative;vertical-align: middle;-webkit-font-smoothing: antialiased;-moz-osx-font-smoothing: grayscale;text-decoration: none !important;}
64
+ .gantry-mp6 #overrides-switch .text-button.button-widget:before {content: "\f113";font: normal 20px/1 'dashicons';speak: none;display: inline-block;top: 0;left: 2px;position: relative;vertical-align: middle;-webkit-font-smoothing: antialiased;-moz-osx-font-smoothing: grayscale;text-decoration: none !important;}
65
 
66
  .widget fieldset.panelform .field-wrapper {margin-bottom: 10px;}
67
 
70
 
71
  /* WordPress */
72
 
73
+ #adminmenu li .wp-submenu, .folded #adminmenu .wp-has-current-submenu .wp-submenu {z-index: 1001;}
74
+
75
+ /** WordPress < 3.8 Compatibility **/
76
+
77
+ .gantry-pre-mp6 input.override-checkbox {margin:10px -5px 0 8px;}
78
+
79
+ .gantry-pre-mp6 #screen-meta #screen-meta-links {margin:0 18px 0;}
80
+
81
+ .gantry-pre-mp6 #gantry-overrides {margin: 0 18px 0 10px;border: 1px solid #D7D7D7;-moz-border-radius-bottomleft: 5px;-webkit-border-bottom-left-radius: 5px;border-bottom-left-radius: 5px;-moz-border-radius-bottomright: 5px;-webkit-border-bottom-right-radius: 5px;border-bottom-right-radius: 5px;border-top:0;}
82
+ .gantry-pre-mp6 #gantry-overrides .overrides-inner {position: relative;height:44px;border-bottom: 1px solid #eee;-moz-border-radius-bottomleft: 5px;-webkit-border-bottom-left-radius: 5px;border-bottom-left-radius: 5px;-moz-border-radius-bottomright: 5px;-webkit-border-bottom-right-radius: 5px;border-bottom-right-radius: 5px;background: #e4e4e4;background:-moz-linear-gradient(center top,#e3e3e3 0%,#d0d0d0 80%,#c3c3c3 95%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0, #e3e3e3),color-stop(0.8, #d0d0d0),color-stop(0.95, #c3c3c3));border-bottom:0;}
83
+
84
+ .gantry-pre-mp6 #overrides-actions .add-edit-input {width:85%; height:18px; z-index: 0;}
85
+
86
+ .gantry-pre-mp6 #overrides-first {padding:3px 30px 4px 12px;line-height:15px;border: 1px solid #c0c0c0;-moz-border-radius: 12px;-webkit-border-radius: 12px;border-radius:12px;background: -moz-linear-gradient(bottom, #e7e7e7, #fff);background: -webkit-gradient(linear, left bottom, left top, from(#e7e7e7), to(#fff));}
87
+ .gantry-pre-mp6 #overrides-actions a {color: #464646;display:block;font-size:11px;padding:3px 5px 3px 10px}
88
+ .gantry-pre-mp6 #overrides-first a {background: url(images/overrides-default.png) 0 50% no-repeat;padding: 0 0 0 18px;}
89
+
90
+ .gantry-pre-mp6 #overrides-inside {background-color:#FFFFFF;border-color:#C0C0C0;margin:0;padding:2px 1px;border-width:1px;border-style:solid;position:absolute;z-index:11;display:none;-moz-border-radius:0 0 12px 12px;-webkit-border-bottom-right-radius:12px;-webkit-border-bottom-left-radius:12px;-khtml-border-bottom-right-radius:12px;-khtml-border-bottom-left-radius:12px;border-bottom-right-radius:12px;border-bottom-left-radius:12px;box-shadow: none;}
91
+
92
+ .gantry-pre-mp6 #overrides-toggle {background:url(images/overrides-arrow.gif) 0 -4px no-repeat;height: 22px;position:absolute;right:0px;top:1px; width:28px;cursor:pointer; border-left: none;}
93
+
94
+ .gantry-pre-mp6 #overrides-toolbar {border: none;}
95
+ .gantry-pre-mp6 #overrides-toolbar .ajax-loading {border-left:none;margin:4px;padding:0;}
96
+
97
+ .gantry-pre-mp6 #overrides-toolbar .overrides-button {float: left;width:29px; height:24px;background:url(images/overrides-toolbar.png);cursor:pointer;}
98
+ .gantry-pre-mp6 #overrides-toolbar .overrides-button span {display:none;}
99
+ .gantry-pre-mp6 #overrides-toolbar .button-del {background-position:-29px 0;width:28px;}
100
+ .gantry-pre-mp6 #overrides-toolbar .button-edit {background-position:-57px 0;}
101
+ .gantry-pre-mp6 #overrides-toolbar .button-add:hover {background-position: 0 -24px;}
102
+ .gantry-pre-mp6 #overrides-toolbar .button-del:hover {background-position: -29px -24px;}
103
+ .gantry-pre-mp6 #overrides-toolbar .button-edit:hover {background-position: -57px -24px;}
104
+
105
+ .gantry-pre-mp6 .text-button {display: inline-block;height: 24px;background: url(images/overrides-buttons-l.png) 0 0 no-repeat;text-decoration:none;}
106
+ .gantry-pre-mp6 .text-button span {font-size:11px;font-family: "Lucida Grande", Verdana, Arial, "Bitstream Vera Sans", sans-serif;color:#333;display: inline-block;background: url(images/overrides-buttons-r.png) 100% 0 no-repeat;margin-left: 20px;padding:0 10px 0 5px;line-height:24px;height:24px;}
107
+ .gantry-pre-mp6 .text-button:hover span {color:#000;background-position: 100% -24px;}
108
+
109
+ .gantry-pre-mp6 .text-button.button-widget { background-position: 0 -48px;}
110
+ .gantry-pre-mp6 .text-button.button-widget:hover { background-position: 0 -72px;}
111
+
112
+ .gantry-pre-mp6 #overrides-switch {border:none;}
admin/widgets/gantry-widgets.js CHANGED
@@ -1,5 +1,5 @@
1
  /**
2
- * @version $Id: gantry-widgets.js 59698 2013-05-17 18:08:39Z djamil $
3
  * @author RocketTheme http://www.rockettheme.com
4
  * @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
5
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
@@ -193,7 +193,7 @@ var GantryWidgets = {
193
  else topbar = $(topbar);
194
 
195
  topbar.click(function(){
196
- var c = $(this).siblings('.widgets-sortables'), p = $(this).parent();
197
  if ( !p.hasClass('closed') ) {
198
  c.sortable('disable');
199
  p.addClass('closed');
1
  /**
2
+ * @version $Id: gantry-widgets.js 60296 2013-12-10 22:31:32Z jakub $
3
  * @author RocketTheme http://www.rockettheme.com
4
  * @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
5
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
193
  else topbar = $(topbar);
194
 
195
  topbar.click(function(){
196
+ var c = $(this).siblings('.widgets-sortables'), p = $(this).parent('.widgets-holder-wrap') || $(this).parent();
197
  if ( !p.hasClass('closed') ) {
198
  c.sortable('disable');
199
  p.addClass('closed');
admin/widgets/gantry.css CHANGED
@@ -1,5 +1,5 @@
1
  #gantry-panel .gantry-field > label/**
2
- * @version $Id: gantry.css 58595 2012-12-11 19:59:45Z btowles $
3
  * @author RocketTheme http://www.rockettheme.com
4
  * @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
5
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
@@ -304,7 +304,7 @@ body #overrides-first a {background: url(images/overrides-default.png) 0 50% no-
304
  .selectbox {float: left;}
305
  .selectbox ul {margin:0;padding:0;list-style:none;}
306
  .selectbox-top .selected {background: url(selectbox/images/select-left.png) top left no-repeat;height:23px;padding:0 10px;white-space:nowrap;}
307
- .selectbox-top .arrow {background: url(selectbox/images/select-right.png) center left no-repeat;height:23px;width:24px;right:-24px;top:0;position:absolute;}
308
  .selectbox-dropdown {background: url(selectbox/images/dropdown-left.png) top left no-repeat;position:absolute;margin-top: 0px;visibility:hidden;z-index:200;}
309
  .selectbox-dropdown-bottom {background: url(selectbox/images/dropdown-left.png) bottom left no-repeat;height: 5px;position:relative;}
310
  .selectbox-dropdown-bottomright {background: url(selectbox/images/dropdown-right.png) bottom left no-repeat;height: 5px;position:absolute;right:0;bottom:0;z-index:2;width:5px;}
@@ -318,10 +318,10 @@ body #overrides-first a {background: url(images/overrides-default.png) 0 50% no-
318
  .selectbox-dropdown ul li.google span {background: url(images/google_favicon.png) 4px center no-repeat;}
319
 
320
  .selectbox-wrapper.disabled .selectbox-top .selected {background-position: top left;}
321
- .selectbox-wrapper.disabled .selectbox-top .arrow {background-position: top left;}
322
 
323
  .selectbox-wrapper.pushed .selectbox-top .selected {background-position: bottom left;color:#d06712;}
324
- .selectbox-wrapper.pushed .selectbox-top .arrow {background-position: bottom left;}
325
 
326
  /* InputText */
327
  body .text-short, body .text-medium, body .text-regular, body .text-long,body .text-color, body .text-textarea {-moz-box-sizing: inherit; -webkit-box-sizing: inherit; -ms-box-sizing: inherit; box-sizing: inherit; -moz-border-radius: 0; -moz-border-radius: 0px; -khtml-border-radius: 0px; -webkit-border-radius: 0px; border-radius: 0px; border: none;}
1
  #gantry-panel .gantry-field > label/**
2
+ * @version $Id: gantry.css 60288 2013-12-10 13:10:52Z jakub $
3
  * @author RocketTheme http://www.rockettheme.com
4
  * @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
5
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
304
  .selectbox {float: left;}
305
  .selectbox ul {margin:0;padding:0;list-style:none;}
306
  .selectbox-top .selected {background: url(selectbox/images/select-left.png) top left no-repeat;height:23px;padding:0 10px;white-space:nowrap;}
307
+ .selectbox-top .rt-arrow {background: url(selectbox/images/select-right.png) center left no-repeat;height:23px;width:24px;right:-24px;top:0;position:absolute;}
308
  .selectbox-dropdown {background: url(selectbox/images/dropdown-left.png) top left no-repeat;position:absolute;margin-top: 0px;visibility:hidden;z-index:200;}
309
  .selectbox-dropdown-bottom {background: url(selectbox/images/dropdown-left.png) bottom left no-repeat;height: 5px;position:relative;}
310
  .selectbox-dropdown-bottomright {background: url(selectbox/images/dropdown-right.png) bottom left no-repeat;height: 5px;position:absolute;right:0;bottom:0;z-index:2;width:5px;}
318
  .selectbox-dropdown ul li.google span {background: url(images/google_favicon.png) 4px center no-repeat;}
319
 
320
  .selectbox-wrapper.disabled .selectbox-top .selected {background-position: top left;}
321
+ .selectbox-wrapper.disabled .selectbox-top .rt-arrow {background-position: top left;}
322
 
323
  .selectbox-wrapper.pushed .selectbox-top .selected {background-position: bottom left;color:#d06712;}
324
+ .selectbox-wrapper.pushed .selectbox-top .rt-arrow {background-position: bottom left;}
325
 
326
  /* InputText */
327
  body .text-short, body .text-medium, body .text-regular, body .text-long,body .text-color, body .text-textarea {-moz-box-sizing: inherit; -webkit-box-sizing: inherit; -ms-box-sizing: inherit; box-sizing: inherit; -moz-border-radius: 0; -moz-border-radius: 0px; -khtml-border-radius: 0px; -webkit-border-radius: 0px; border-radius: 0px; border: none;}
admin/widgets/images/divider-bar-old.png ADDED
Binary file
admin/widgets/images/divider-bar.png CHANGED
Binary file
admin/widgets/selectbox/js/selectbox.js CHANGED
@@ -56,7 +56,7 @@ var SelectBox = new Class({
56
  selected: element.getElement('.selectbox-top .selected span'),
57
  top: element.getElement('.selectbox-top'),
58
  dropdown: element.getElement('.selectbox-dropdown'),
59
- arrow: element.getElement('.arrow'),
60
  ul: element.getElement('ul'),
61
  list: element.getElements('li'),
62
  real: element.getParent().getElement('select'),
56
  selected: element.getElement('.selectbox-top .selected span'),
57
  top: element.getElement('.selectbox-top'),
58
  dropdown: element.getElement('.selectbox-dropdown'),
59
+ arrow: element.getElement('.rt-arrow'),
60
  ul: element.getElement('ul'),
61
  list: element.getElements('li'),
62
  real: element.getParent().getElement('select'),
admin_functions.php CHANGED
@@ -1,6 +1,6 @@
1
  <?php
2
  /**
3
- * @version $Id: admin_functions.php 59475 2013-04-08 18:32:06Z jakub $
4
  * @author RocketTheme http://www.rockettheme.com
5
  * @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
6
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
@@ -94,6 +94,24 @@ function gantryLang()
94
  // ";
95
  }
96
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
97
  function gantry_admin_menu()
98
  {
99
  /** @global $gantry Gantry */
@@ -613,6 +631,13 @@ function gantry_widgets_admin_add_page_title_filter()
613
  function gantry_widgets_admin_insert_override_header()
614
  {
615
  global $current_screen, $gantry, $ajaxurl;
 
 
 
 
 
 
 
616
  if ($current_screen->id == 'widgets') {
617
  $isDefault = !(isset($_GET['override_id']));
618
  $override_id = 0;
@@ -661,7 +686,7 @@ function gantry_widgets_admin_insert_override_header()
661
  $buffer .= " <a class=\"overrides-button button-del\"
662
  href=\"" . admin_url('admin-post.php?action=gantry_theme_delete_override&amp;from=widgets&amp;override_id=' . $override_id) . "\"><span>Delete</span></a>\n
663
  <div class=\"overrides-button button-edit\"></div>\n
664
- <img width=\"16\" height=\"16\" src=\"images/wpspin_light.gif\" style=\"display: none;\" class=\"ajax-loading\">\n";
665
  }
666
  $buffer .= " </div>\n";
667
  $buffer .= " <div id=\"overrides-switch\">\n";
1
  <?php
2
  /**
3
+ * @version $Id: admin_functions.php 60294 2013-12-10 19:52:14Z jakub $
4
  * @author RocketTheme http://www.rockettheme.com
5
  * @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
6
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
94
  // ";
95
  }
96
 
97
+ function gantry_add_old_ui_class( $classes ) {
98
+ if ( version_compare( $GLOBALS['wp_version'], '3.8-alpha', '<' ) ) {
99
+ $classes = explode( " ", $classes );
100
+ if ( ! in_array( 'gantry-pre-mp6', $classes ) ) {
101
+ $classes[] = 'gantry-pre-mp6';
102
+ }
103
+ $classes = implode( " ", $classes );
104
+ } else {
105
+ $classes = explode( " ", $classes );
106
+ if ( ! in_array( 'gantry-mp6', $classes ) ) {
107
+ $classes[] = 'gantry-mp6';
108
+ }
109
+ $classes = implode( " ", $classes );
110
+ }
111
+
112
+ return $classes;
113
+ }
114
+
115
  function gantry_admin_menu()
116
  {
117
  /** @global $gantry Gantry */
631
  function gantry_widgets_admin_insert_override_header()
632
  {
633
  global $current_screen, $gantry, $ajaxurl;
634
+
635
+ if ( version_compare( $GLOBALS['wp_version'], '3.8-alpha', '<' ) ) {
636
+ $spinner = 'wpspin_light.gif';
637
+ } else {
638
+ $spinner = 'spinner.gif';
639
+ }
640
+
641
  if ($current_screen->id == 'widgets') {
642
  $isDefault = !(isset($_GET['override_id']));
643
  $override_id = 0;
686
  $buffer .= " <a class=\"overrides-button button-del\"
687
  href=\"" . admin_url('admin-post.php?action=gantry_theme_delete_override&amp;from=widgets&amp;override_id=' . $override_id) . "\"><span>Delete</span></a>\n
688
  <div class=\"overrides-button button-edit\"></div>\n
689
+ <img width=\"16\" height=\"16\" src=\"images/$spinner\" style=\"display: none;\" class=\"ajax-loading\">\n";
690
  }
691
  $buffer .= " </div>\n";
692
  $buffer .= " <div id=\"overrides-switch\">\n";
assets/jui/fonts/font-awesome4/FontAwesome.otf ADDED
Binary file
assets/jui/fonts/font-awesome4/fontawesome-webfont.eot ADDED
Binary file
assets/jui/fonts/font-awesome4/fontawesome-webfont.svg ADDED
@@ -0,0 +1,414 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" standalone="no"?>
2
+ <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
3
+ <svg xmlns="http://www.w3.org/2000/svg">
4
+ <metadata></metadata>
5
+ <defs>
6
+ <font id="fontawesomeregular" horiz-adv-x="1536" >
7
+ <font-face units-per-em="1792" ascent="1536" descent="-256" />
8
+ <missing-glyph horiz-adv-x="448" />
9
+ <glyph unicode=" " horiz-adv-x="448" />
10
+ <glyph unicode="&#x09;" horiz-adv-x="448" />
11
+ <glyph unicode="&#xa0;" horiz-adv-x="448" />
12
+ <glyph unicode="&#xa8;" horiz-adv-x="1792" />
13
+ <glyph unicode="&#xa9;" horiz-adv-x="1792" />
14
+ <glyph unicode="&#xae;" horiz-adv-x="1792" />
15
+ <glyph unicode="&#xb4;" horiz-adv-x="1792" />
16
+ <glyph unicode="&#xc6;" horiz-adv-x="1792" />
17
+ <glyph unicode="&#x2000;" horiz-adv-x="768" />
18
+ <glyph unicode="&#x2001;" />
19
+ <glyph unicode="&#x2002;" horiz-adv-x="768" />
20
+ <glyph unicode="&#x2003;" />
21
+ <glyph unicode="&#x2004;" horiz-adv-x="512" />
22
+ <glyph unicode="&#x2005;" horiz-adv-x="384" />
23
+ <glyph unicode="&#x2006;" horiz-adv-x="256" />
24
+ <glyph unicode="&#x2007;" horiz-adv-x="256" />
25
+ <glyph unicode="&#x2008;" horiz-adv-x="192" />
26
+ <glyph unicode="&#x2009;" horiz-adv-x="307" />
27
+ <glyph unicode="&#x200a;" horiz-adv-x="85" />
28
+ <glyph unicode="&#x202f;" horiz-adv-x="307" />
29
+ <glyph unicode="&#x205f;" horiz-adv-x="384" />
30
+ <glyph unicode="&#x2122;" horiz-adv-x="1792" />
31
+ <glyph unicode="&#x221e;" horiz-adv-x="1792" />
32
+ <glyph unicode="&#x2260;" horiz-adv-x="1792" />
33
+ <glyph unicode="&#xe000;" horiz-adv-x="500" d="M0 0z" />
34
+ <glyph unicode="&#xf000;" horiz-adv-x="1792" d="M1699 1350q0 -35 -43 -78l-632 -632v-768h320q26 0 45 -19t19 -45t-19 -45t-45 -19h-896q-26 0 -45 19t-19 45t19 45t45 19h320v768l-632 632q-43 43 -43 78q0 23 18 36.5t38 17.5t43 4h1408q23 0 43 -4t38 -17.5t18 -36.5z" />
35
+ <glyph unicode="&#xf001;" d="M1536 1312v-1120q0 -50 -34 -89t-86 -60.5t-103.5 -32t-96.5 -10.5t-96.5 10.5t-103.5 32t-86 60.5t-34 89t34 89t86 60.5t103.5 32t96.5 10.5q105 0 192 -39v537l-768 -237v-709q0 -50 -34 -89t-86 -60.5t-103.5 -32t-96.5 -10.5t-96.5 10.5t-103.5 32t-86 60.5t-34 89 t34 89t86 60.5t103.5 32t96.5 10.5q105 0 192 -39v967q0 31 19 56.5t49 35.5l832 256q12 4 28 4q40 0 68 -28t28 -68z" />
36
+ <glyph unicode="&#xf002;" horiz-adv-x="1664" d="M1152 704q0 185 -131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5t316.5 131.5t131.5 316.5zM1664 -128q0 -52 -38 -90t-90 -38q-54 0 -90 38l-343 342q-179 -124 -399 -124q-143 0 -273.5 55.5t-225 150t-150 225t-55.5 273.5 t55.5 273.5t150 225t225 150t273.5 55.5t273.5 -55.5t225 -150t150 -225t55.5 -273.5q0 -220 -124 -399l343 -343q37 -37 37 -90z" />
37
+ <glyph unicode="&#xf003;" horiz-adv-x="1792" d="M1664 32v768q-32 -36 -69 -66q-268 -206 -426 -338q-51 -43 -83 -67t-86.5 -48.5t-102.5 -24.5h-1h-1q-48 0 -102.5 24.5t-86.5 48.5t-83 67q-158 132 -426 338q-37 30 -69 66v-768q0 -13 9.5 -22.5t22.5 -9.5h1472q13 0 22.5 9.5t9.5 22.5zM1664 1083v11v13.5t-0.5 13 t-3 12.5t-5.5 9t-9 7.5t-14 2.5h-1472q-13 0 -22.5 -9.5t-9.5 -22.5q0 -168 147 -284q193 -152 401 -317q6 -5 35 -29.5t46 -37.5t44.5 -31.5t50.5 -27.5t43 -9h1h1q20 0 43 9t50.5 27.5t44.5 31.5t46 37.5t35 29.5q208 165 401 317q54 43 100.5 115.5t46.5 131.5z M1792 1120v-1088q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h1472q66 0 113 -47t47 -113z" />
38
+ <glyph unicode="&#xf004;" horiz-adv-x="1792" d="M896 -128q-26 0 -44 18l-624 602q-10 8 -27.5 26t-55.5 65.5t-68 97.5t-53.5 121t-23.5 138q0 220 127 344t351 124q62 0 126.5 -21.5t120 -58t95.5 -68.5t76 -68q36 36 76 68t95.5 68.5t120 58t126.5 21.5q224 0 351 -124t127 -344q0 -221 -229 -450l-623 -600 q-18 -18 -44 -18z" />
39
+ <glyph unicode="&#xf005;" horiz-adv-x="1664" d="M1664 889q0 -22 -26 -48l-363 -354l86 -500q1 -7 1 -20q0 -21 -10.5 -35.5t-30.5 -14.5q-19 0 -40 12l-449 236l-449 -236q-22 -12 -40 -12q-21 0 -31.5 14.5t-10.5 35.5q0 6 2 20l86 500l-364 354q-25 27 -25 48q0 37 56 46l502 73l225 455q19 41 49 41t49 -41l225 -455 l502 -73q56 -9 56 -46z" />
40
+ <glyph unicode="&#xf006;" horiz-adv-x="1664" d="M1137 532l306 297l-422 62l-189 382l-189 -382l-422 -62l306 -297l-73 -421l378 199l377 -199zM1664 889q0 -22 -26 -48l-363 -354l86 -500q1 -7 1 -20q0 -50 -41 -50q-19 0 -40 12l-449 236l-449 -236q-22 -12 -40 -12q-21 0 -31.5 14.5t-10.5 35.5q0 6 2 20l86 500 l-364 354q-25 27 -25 48q0 37 56 46l502 73l225 455q19 41 49 41t49 -41l225 -455l502 -73q56 -9 56 -46z" />
41
+ <glyph unicode="&#xf007;" horiz-adv-x="1408" d="M1408 131q0 -120 -73 -189.5t-194 -69.5h-874q-121 0 -194 69.5t-73 189.5q0 53 3.5 103.5t14 109t26.5 108.5t43 97.5t62 81t85.5 53.5t111.5 20q9 0 42 -21.5t74.5 -48t108 -48t133.5 -21.5t133.5 21.5t108 48t74.5 48t42 21.5q61 0 111.5 -20t85.5 -53.5t62 -81 t43 -97.5t26.5 -108.5t14 -109t3.5 -103.5zM1088 1024q0 -159 -112.5 -271.5t-271.5 -112.5t-271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5t271.5 -112.5t112.5 -271.5z" />
42
+ <glyph unicode="&#xf008;" horiz-adv-x="1920" d="M384 -64v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM384 320v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM384 704v128q0 26 -19 45t-45 19h-128 q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1408 -64v512q0 26 -19 45t-45 19h-768q-26 0 -45 -19t-19 -45v-512q0 -26 19 -45t45 -19h768q26 0 45 19t19 45zM384 1088v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45 t45 -19h128q26 0 45 19t19 45zM1792 -64v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1408 704v512q0 26 -19 45t-45 19h-768q-26 0 -45 -19t-19 -45v-512q0 -26 19 -45t45 -19h768q26 0 45 19t19 45zM1792 320v128 q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1792 704v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1792 1088v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19 t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1920 1248v-1344q0 -66 -47 -113t-113 -47h-1600q-66 0 -113 47t-47 113v1344q0 66 47 113t113 47h1600q66 0 113 -47t47 -113z" />
43
+ <glyph unicode="&#xf009;" horiz-adv-x="1664" d="M768 512v-384q0 -52 -38 -90t-90 -38h-512q-52 0 -90 38t-38 90v384q0 52 38 90t90 38h512q52 0 90 -38t38 -90zM768 1280v-384q0 -52 -38 -90t-90 -38h-512q-52 0 -90 38t-38 90v384q0 52 38 90t90 38h512q52 0 90 -38t38 -90zM1664 512v-384q0 -52 -38 -90t-90 -38 h-512q-52 0 -90 38t-38 90v384q0 52 38 90t90 38h512q52 0 90 -38t38 -90zM1664 1280v-384q0 -52 -38 -90t-90 -38h-512q-52 0 -90 38t-38 90v384q0 52 38 90t90 38h512q52 0 90 -38t38 -90z" />
44
+ <glyph unicode="&#xf00a;" horiz-adv-x="1792" d="M512 288v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM512 800v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1152 288v-192q0 -40 -28 -68t-68 -28h-320 q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM512 1312v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1152 800v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28 h320q40 0 68 -28t28 -68zM1792 288v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1152 1312v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1792 800v-192 q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1792 1312v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68z" />
45
+ <glyph unicode="&#xf00b;" horiz-adv-x="1792" d="M512 288v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM512 800v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1792 288v-192q0 -40 -28 -68t-68 -28h-960 q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h960q40 0 68 -28t28 -68zM512 1312v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1792 800v-192q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v192q0 40 28 68t68 28 h960q40 0 68 -28t28 -68zM1792 1312v-192q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h960q40 0 68 -28t28 -68z" />
46
+ <glyph unicode="&#xf00c;" horiz-adv-x="1792" d="M1671 970q0 -40 -28 -68l-724 -724l-136 -136q-28 -28 -68 -28t-68 28l-136 136l-362 362q-28 28 -28 68t28 68l136 136q28 28 68 28t68 -28l294 -295l656 657q28 28 68 28t68 -28l136 -136q28 -28 28 -68z" />
47
+ <glyph unicode="&#xf00d;" horiz-adv-x="1408" d="M1298 214q0 -40 -28 -68l-136 -136q-28 -28 -68 -28t-68 28l-294 294l-294 -294q-28 -28 -68 -28t-68 28l-136 136q-28 28 -28 68t28 68l294 294l-294 294q-28 28 -28 68t28 68l136 136q28 28 68 28t68 -28l294 -294l294 294q28 28 68 28t68 -28l136 -136q28 -28 28 -68 t-28 -68l-294 -294l294 -294q28 -28 28 -68z" />
48
+ <glyph unicode="&#xf00e;" horiz-adv-x="1664" d="M1024 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-224v-224q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v224h-224q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h224v224q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5v-224h224 q13 0 22.5 -9.5t9.5 -22.5zM1152 704q0 185 -131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5t316.5 131.5t131.5 316.5zM1664 -128q0 -53 -37.5 -90.5t-90.5 -37.5q-54 0 -90 38l-343 342q-179 -124 -399 -124q-143 0 -273.5 55.5 t-225 150t-150 225t-55.5 273.5t55.5 273.5t150 225t225 150t273.5 55.5t273.5 -55.5t225 -150t150 -225t55.5 -273.5q0 -220 -124 -399l343 -343q37 -37 37 -90z" />
49
+ <glyph unicode="&#xf010;" horiz-adv-x="1664" d="M1024 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-576q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h576q13 0 22.5 -9.5t9.5 -22.5zM1152 704q0 185 -131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5t316.5 131.5t131.5 316.5z M1664 -128q0 -53 -37.5 -90.5t-90.5 -37.5q-54 0 -90 38l-343 342q-179 -124 -399 -124q-143 0 -273.5 55.5t-225 150t-150 225t-55.5 273.5t55.5 273.5t150 225t225 150t273.5 55.5t273.5 -55.5t225 -150t150 -225t55.5 -273.5q0 -220 -124 -399l343 -343q37 -37 37 -90z " />
50
+ <glyph unicode="&#xf011;" d="M1536 640q0 -156 -61 -298t-164 -245t-245 -164t-298 -61t-298 61t-245 164t-164 245t-61 298q0 182 80.5 343t226.5 270q43 32 95.5 25t83.5 -50q32 -42 24.5 -94.5t-49.5 -84.5q-98 -74 -151.5 -181t-53.5 -228q0 -104 40.5 -198.5t109.5 -163.5t163.5 -109.5 t198.5 -40.5t198.5 40.5t163.5 109.5t109.5 163.5t40.5 198.5q0 121 -53.5 228t-151.5 181q-42 32 -49.5 84.5t24.5 94.5q31 43 84 50t95 -25q146 -109 226.5 -270t80.5 -343zM896 1408v-640q0 -52 -38 -90t-90 -38t-90 38t-38 90v640q0 52 38 90t90 38t90 -38t38 -90z" />
51
+ <glyph unicode="&#xf012;" horiz-adv-x="1792" d="M256 96v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM640 224v-320q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v320q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1024 480v-576q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23 v576q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1408 864v-960q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v960q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1792 1376v-1472q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v1472q0 14 9 23t23 9h192q14 0 23 -9t9 -23z" />
52
+ <glyph unicode="&#xf013;" d="M1024 640q0 106 -75 181t-181 75t-181 -75t-75 -181t75 -181t181 -75t181 75t75 181zM1536 749v-222q0 -12 -8 -23t-20 -13l-185 -28q-19 -54 -39 -91q35 -50 107 -138q10 -12 10 -25t-9 -23q-27 -37 -99 -108t-94 -71q-12 0 -26 9l-138 108q-44 -23 -91 -38 q-16 -136 -29 -186q-7 -28 -36 -28h-222q-14 0 -24.5 8.5t-11.5 21.5l-28 184q-49 16 -90 37l-141 -107q-10 -9 -25 -9q-14 0 -25 11q-126 114 -165 168q-7 10 -7 23q0 12 8 23q15 21 51 66.5t54 70.5q-27 50 -41 99l-183 27q-13 2 -21 12.5t-8 23.5v222q0 12 8 23t19 13 l186 28q14 46 39 92q-40 57 -107 138q-10 12 -10 24q0 10 9 23q26 36 98.5 107.5t94.5 71.5q13 0 26 -10l138 -107q44 23 91 38q16 136 29 186q7 28 36 28h222q14 0 24.5 -8.5t11.5 -21.5l28 -184q49 -16 90 -37l142 107q9 9 24 9q13 0 25 -10q129 -119 165 -170q7 -8 7 -22 q0 -12 -8 -23q-15 -21 -51 -66.5t-54 -70.5q26 -50 41 -98l183 -28q13 -2 21 -12.5t8 -23.5z" />
53
+ <glyph unicode="&#xf014;" horiz-adv-x="1408" d="M512 800v-576q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v576q0 14 9 23t23 9h64q14 0 23 -9t9 -23zM768 800v-576q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v576q0 14 9 23t23 9h64q14 0 23 -9t9 -23zM1024 800v-576q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v576 q0 14 9 23t23 9h64q14 0 23 -9t9 -23zM1152 76v948h-896v-948q0 -22 7 -40.5t14.5 -27t10.5 -8.5h832q3 0 10.5 8.5t14.5 27t7 40.5zM480 1152h448l-48 117q-7 9 -17 11h-317q-10 -2 -17 -11zM1408 1120v-64q0 -14 -9 -23t-23 -9h-96v-948q0 -83 -47 -143.5t-113 -60.5h-832 q-66 0 -113 58.5t-47 141.5v952h-96q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h309l70 167q15 37 54 63t79 26h320q40 0 79 -26t54 -63l70 -167h309q14 0 23 -9t9 -23z" />
54
+ <glyph unicode="&#xf015;" horiz-adv-x="1664" d="M1408 544v-480q0 -26 -19 -45t-45 -19h-384v384h-256v-384h-384q-26 0 -45 19t-19 45v480q0 1 0.5 3t0.5 3l575 474l575 -474q1 -2 1 -6zM1631 613l-62 -74q-8 -9 -21 -11h-3q-13 0 -21 7l-692 577l-692 -577q-12 -8 -24 -7q-13 2 -21 11l-62 74q-8 10 -7 23.5t11 21.5 l719 599q32 26 76 26t76 -26l244 -204v195q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-408l219 -182q10 -8 11 -21.5t-7 -23.5z" />
55
+ <glyph unicode="&#xf016;" horiz-adv-x="1280" d="M128 0h1024v768h-416q-40 0 -68 28t-28 68v416h-512v-1280zM768 896h376q-10 29 -22 41l-313 313q-12 12 -41 22v-376zM1280 864v-896q0 -40 -28 -68t-68 -28h-1088q-40 0 -68 28t-28 68v1344q0 40 28 68t68 28h640q40 0 88 -20t76 -48l312 -312q28 -28 48 -76t20 -88z " />
56
+ <glyph unicode="&#xf017;" d="M896 992v-448q0 -14 -9 -23t-23 -9h-320q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h224v352q0 14 9 23t23 9h64q14 0 23 -9t9 -23zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
57
+ <glyph unicode="&#xf018;" horiz-adv-x="1920" d="M1111 540v4l-24 320q-1 13 -11 22.5t-23 9.5h-186q-13 0 -23 -9.5t-11 -22.5l-24 -320v-4q-1 -12 8 -20t21 -8h244q12 0 21 8t8 20zM1870 73q0 -73 -46 -73h-704q13 0 22 9.5t8 22.5l-20 256q-1 13 -11 22.5t-23 9.5h-272q-13 0 -23 -9.5t-11 -22.5l-20 -256 q-1 -13 8 -22.5t22 -9.5h-704q-46 0 -46 73q0 54 26 116l417 1044q8 19 26 33t38 14h339q-13 0 -23 -9.5t-11 -22.5l-15 -192q-1 -14 8 -23t22 -9h166q13 0 22 9t8 23l-15 192q-1 13 -11 22.5t-23 9.5h339q20 0 38 -14t26 -33l417 -1044q26 -62 26 -116z" />
58
+ <glyph unicode="&#xf019;" horiz-adv-x="1664" d="M1280 192q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1536 192q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1664 416v-320q0 -40 -28 -68t-68 -28h-1472q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h465l135 -136 q58 -56 136 -56t136 56l136 136h464q40 0 68 -28t28 -68zM1339 985q17 -41 -14 -70l-448 -448q-18 -19 -45 -19t-45 19l-448 448q-31 29 -14 70q17 39 59 39h256v448q0 26 19 45t45 19h256q26 0 45 -19t19 -45v-448h256q42 0 59 -39z" />
59
+ <glyph unicode="&#xf01a;" d="M1120 608q0 -12 -10 -24l-319 -319q-11 -9 -23 -9t-23 9l-320 320q-15 16 -7 35q8 20 30 20h192v352q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-352h192q14 0 23 -9t9 -23zM768 1184q-148 0 -273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273 t-73 273t-198 198t-273 73zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
60
+ <glyph unicode="&#xf01b;" d="M1118 660q-8 -20 -30 -20h-192v-352q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v352h-192q-14 0 -23 9t-9 23q0 12 10 24l319 319q11 9 23 9t23 -9l320 -320q15 -16 7 -35zM768 1184q-148 0 -273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198 t73 273t-73 273t-198 198t-273 73zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
61
+ <glyph unicode="&#xf01c;" d="M1023 576h316q-1 3 -2.5 8t-2.5 8l-212 496h-708l-212 -496q-1 -2 -2.5 -8t-2.5 -8h316l95 -192h320zM1536 546v-482q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45v482q0 62 25 123l238 552q10 25 36.5 42t52.5 17h832q26 0 52.5 -17t36.5 -42l238 -552 q25 -61 25 -123z" />
62
+ <glyph unicode="&#xf01d;" d="M1184 640q0 -37 -32 -55l-544 -320q-15 -9 -32 -9q-16 0 -32 8q-32 19 -32 56v640q0 37 32 56q33 18 64 -1l544 -320q32 -18 32 -55zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
63
+ <glyph unicode="&#xf01e;" d="M1536 1280v-448q0 -26 -19 -45t-45 -19h-448q-42 0 -59 40q-17 39 14 69l138 138q-148 137 -349 137q-104 0 -198.5 -40.5t-163.5 -109.5t-109.5 -163.5t-40.5 -198.5t40.5 -198.5t109.5 -163.5t163.5 -109.5t198.5 -40.5q119 0 225 52t179 147q7 10 23 12q14 0 25 -9 l137 -138q9 -8 9.5 -20.5t-7.5 -22.5q-109 -132 -264 -204.5t-327 -72.5q-156 0 -298 61t-245 164t-164 245t-61 298t61 298t164 245t245 164t298 61q147 0 284.5 -55.5t244.5 -156.5l130 129q29 31 70 14q39 -17 39 -59z" />
64
+ <glyph unicode="&#xf021;" d="M1511 480q0 -5 -1 -7q-64 -268 -268 -434.5t-478 -166.5q-146 0 -282.5 55t-243.5 157l-129 -129q-19 -19 -45 -19t-45 19t-19 45v448q0 26 19 45t45 19h448q26 0 45 -19t19 -45t-19 -45l-137 -137q71 -66 161 -102t187 -36q134 0 250 65t186 179q11 17 53 117 q8 23 30 23h192q13 0 22.5 -9.5t9.5 -22.5zM1536 1280v-448q0 -26 -19 -45t-45 -19h-448q-26 0 -45 19t-19 45t19 45l138 138q-148 137 -349 137q-134 0 -250 -65t-186 -179q-11 -17 -53 -117q-8 -23 -30 -23h-199q-13 0 -22.5 9.5t-9.5 22.5v7q65 268 270 434.5t480 166.5 q146 0 284 -55.5t245 -156.5l130 129q19 19 45 19t45 -19t19 -45z" />
65
+ <glyph unicode="&#xf022;" horiz-adv-x="1792" d="M384 352v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 608v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M384 864v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM1536 352v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-960q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h960q13 0 22.5 -9.5t9.5 -22.5z M1536 608v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-960q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h960q13 0 22.5 -9.5t9.5 -22.5zM1536 864v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-960q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h960q13 0 22.5 -9.5 t9.5 -22.5zM1664 160v832q0 13 -9.5 22.5t-22.5 9.5h-1472q-13 0 -22.5 -9.5t-9.5 -22.5v-832q0 -13 9.5 -22.5t22.5 -9.5h1472q13 0 22.5 9.5t9.5 22.5zM1792 1248v-1088q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h1472q66 0 113 -47 t47 -113z" />
66
+ <glyph unicode="&#xf023;" horiz-adv-x="1152" d="M320 768h512v192q0 106 -75 181t-181 75t-181 -75t-75 -181v-192zM1152 672v-576q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v576q0 40 28 68t68 28h32v192q0 184 132 316t316 132t316 -132t132 -316v-192h32q40 0 68 -28t28 -68z" />
67
+ <glyph unicode="&#xf024;" horiz-adv-x="1792" d="M320 1280q0 -72 -64 -110v-1266q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v1266q-64 38 -64 110q0 53 37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1792 1216v-763q0 -25 -12.5 -38.5t-39.5 -27.5q-215 -116 -369 -116q-61 0 -123.5 22t-108.5 48 t-115.5 48t-142.5 22q-192 0 -464 -146q-17 -9 -33 -9q-26 0 -45 19t-19 45v742q0 32 31 55q21 14 79 43q236 120 421 120q107 0 200 -29t219 -88q38 -19 88 -19q54 0 117.5 21t110 47t88 47t54.5 21q26 0 45 -19t19 -45z" />
68
+ <glyph unicode="&#xf025;" horiz-adv-x="1664" d="M1664 650q0 -166 -60 -314l-20 -49l-185 -33q-22 -83 -90.5 -136.5t-156.5 -53.5v-32q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v576q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-32q71 0 130 -35.5t93 -95.5l68 12q29 95 29 193q0 148 -88 279t-236.5 209t-315.5 78 t-315.5 -78t-236.5 -209t-88 -279q0 -98 29 -193l68 -12q34 60 93 95.5t130 35.5v32q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-576q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v32q-88 0 -156.5 53.5t-90.5 136.5l-185 33l-20 49q-60 148 -60 314q0 151 67 291t179 242.5 t266 163.5t320 61t320 -61t266 -163.5t179 -242.5t67 -291z" />
69
+ <glyph unicode="&#xf026;" horiz-adv-x="768" d="M768 1184v-1088q0 -26 -19 -45t-45 -19t-45 19l-333 333h-262q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h262l333 333q19 19 45 19t45 -19t19 -45z" />
70
+ <glyph unicode="&#xf027;" horiz-adv-x="1152" d="M768 1184v-1088q0 -26 -19 -45t-45 -19t-45 19l-333 333h-262q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h262l333 333q19 19 45 19t45 -19t19 -45zM1152 640q0 -76 -42.5 -141.5t-112.5 -93.5q-10 -5 -25 -5q-26 0 -45 18.5t-19 45.5q0 21 12 35.5t29 25t34 23t29 35.5 t12 57t-12 57t-29 35.5t-34 23t-29 25t-12 35.5q0 27 19 45.5t45 18.5q15 0 25 -5q70 -27 112.5 -93t42.5 -142z" />
71
+ <glyph unicode="&#xf028;" horiz-adv-x="1664" d="M768 1184v-1088q0 -26 -19 -45t-45 -19t-45 19l-333 333h-262q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h262l333 333q19 19 45 19t45 -19t19 -45zM1152 640q0 -76 -42.5 -141.5t-112.5 -93.5q-10 -5 -25 -5q-26 0 -45 18.5t-19 45.5q0 21 12 35.5t29 25t34 23t29 35.5 t12 57t-12 57t-29 35.5t-34 23t-29 25t-12 35.5q0 27 19 45.5t45 18.5q15 0 25 -5q70 -27 112.5 -93t42.5 -142zM1408 640q0 -153 -85 -282.5t-225 -188.5q-13 -5 -25 -5q-27 0 -46 19t-19 45q0 39 39 59q56 29 76 44q74 54 115.5 135.5t41.5 173.5t-41.5 173.5 t-115.5 135.5q-20 15 -76 44q-39 20 -39 59q0 26 19 45t45 19q13 0 26 -5q140 -59 225 -188.5t85 -282.5zM1664 640q0 -230 -127 -422.5t-338 -283.5q-13 -5 -26 -5q-26 0 -45 19t-19 45q0 36 39 59q7 4 22.5 10.5t22.5 10.5q46 25 82 51q123 91 192 227t69 289t-69 289 t-192 227q-36 26 -82 51q-7 4 -22.5 10.5t-22.5 10.5q-39 23 -39 59q0 26 19 45t45 19q13 0 26 -5q211 -91 338 -283.5t127 -422.5z" />
72
+ <glyph unicode="&#xf029;" horiz-adv-x="1408" d="M384 384v-128h-128v128h128zM384 1152v-128h-128v128h128zM1152 1152v-128h-128v128h128zM128 129h384v383h-384v-383zM128 896h384v384h-384v-384zM896 896h384v384h-384v-384zM640 640v-640h-640v640h640zM1152 128v-128h-128v128h128zM1408 128v-128h-128v128h128z M1408 640v-384h-384v128h-128v-384h-128v640h384v-128h128v128h128zM640 1408v-640h-640v640h640zM1408 1408v-640h-640v640h640z" />
73
+ <glyph unicode="&#xf02a;" horiz-adv-x="1792" d="M63 0h-63v1408h63v-1408zM126 1h-32v1407h32v-1407zM220 1h-31v1407h31v-1407zM377 1h-31v1407h31v-1407zM534 1h-62v1407h62v-1407zM660 1h-31v1407h31v-1407zM723 1h-31v1407h31v-1407zM786 1h-31v1407h31v-1407zM943 1h-63v1407h63v-1407zM1100 1h-63v1407h63v-1407z M1226 1h-63v1407h63v-1407zM1352 1h-63v1407h63v-1407zM1446 1h-63v1407h63v-1407zM1635 1h-94v1407h94v-1407zM1698 1h-32v1407h32v-1407zM1792 0h-63v1408h63v-1408z" />
74
+ <glyph unicode="&#xf02b;" d="M448 1088q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1515 512q0 -53 -37 -90l-491 -492q-39 -37 -91 -37q-53 0 -90 37l-715 716q-38 37 -64.5 101t-26.5 117v416q0 52 38 90t90 38h416q53 0 117 -26.5t102 -64.5 l715 -714q37 -39 37 -91z" />
75
+ <glyph unicode="&#xf02c;" horiz-adv-x="1920" d="M448 1088q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1515 512q0 -53 -37 -90l-491 -492q-39 -37 -91 -37q-53 0 -90 37l-715 716q-38 37 -64.5 101t-26.5 117v416q0 52 38 90t90 38h416q53 0 117 -26.5t102 -64.5 l715 -714q37 -39 37 -91zM1899 512q0 -53 -37 -90l-491 -492q-39 -37 -91 -37q-36 0 -59 14t-53 45l470 470q37 37 37 90q0 52 -37 91l-715 714q-38 38 -102 64.5t-117 26.5h224q53 0 117 -26.5t102 -64.5l715 -714q37 -39 37 -91z" />
76
+ <glyph unicode="&#xf02d;" horiz-adv-x="1664" d="M1639 1058q40 -57 18 -129l-275 -906q-19 -64 -76.5 -107.5t-122.5 -43.5h-923q-77 0 -148.5 53.5t-99.5 131.5q-24 67 -2 127q0 4 3 27t4 37q1 8 -3 21.5t-3 19.5q2 11 8 21t16.5 23.5t16.5 23.5q23 38 45 91.5t30 91.5q3 10 0.5 30t-0.5 28q3 11 17 28t17 23 q21 36 42 92t25 90q1 9 -2.5 32t0.5 28q4 13 22 30.5t22 22.5q19 26 42.5 84.5t27.5 96.5q1 8 -3 25.5t-2 26.5q2 8 9 18t18 23t17 21q8 12 16.5 30.5t15 35t16 36t19.5 32t26.5 23.5t36 11.5t47.5 -5.5l-1 -3q38 9 51 9h761q74 0 114 -56t18 -130l-274 -906 q-36 -119 -71.5 -153.5t-128.5 -34.5h-869q-27 0 -38 -15q-11 -16 -1 -43q24 -70 144 -70h923q29 0 56 15.5t35 41.5l300 987q7 22 5 57q38 -15 59 -43zM575 1056q-4 -13 2 -22.5t20 -9.5h608q13 0 25.5 9.5t16.5 22.5l21 64q4 13 -2 22.5t-20 9.5h-608q-13 0 -25.5 -9.5 t-16.5 -22.5zM492 800q-4 -13 2 -22.5t20 -9.5h608q13 0 25.5 9.5t16.5 22.5l21 64q4 13 -2 22.5t-20 9.5h-608q-13 0 -25.5 -9.5t-16.5 -22.5z" />
77
+ <glyph unicode="&#xf02e;" horiz-adv-x="1280" d="M1164 1408q23 0 44 -9q33 -13 52.5 -41t19.5 -62v-1289q0 -34 -19.5 -62t-52.5 -41q-19 -8 -44 -8q-48 0 -83 32l-441 424l-441 -424q-36 -33 -83 -33q-23 0 -44 9q-33 13 -52.5 41t-19.5 62v1289q0 34 19.5 62t52.5 41q21 9 44 9h1048z" />
78
+ <glyph unicode="&#xf02f;" horiz-adv-x="1664" d="M384 0h896v256h-896v-256zM384 640h896v384h-160q-40 0 -68 28t-28 68v160h-640v-640zM1536 576q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1664 576v-416q0 -13 -9.5 -22.5t-22.5 -9.5h-224v-160q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68 v160h-224q-13 0 -22.5 9.5t-9.5 22.5v416q0 79 56.5 135.5t135.5 56.5h64v544q0 40 28 68t68 28h672q40 0 88 -20t76 -48l152 -152q28 -28 48 -76t20 -88v-256h64q79 0 135.5 -56.5t56.5 -135.5z" />
79
+ <glyph unicode="&#xf030;" horiz-adv-x="1920" d="M960 864q119 0 203.5 -84.5t84.5 -203.5t-84.5 -203.5t-203.5 -84.5t-203.5 84.5t-84.5 203.5t84.5 203.5t203.5 84.5zM1664 1280q106 0 181 -75t75 -181v-896q0 -106 -75 -181t-181 -75h-1408q-106 0 -181 75t-75 181v896q0 106 75 181t181 75h224l51 136 q19 49 69.5 84.5t103.5 35.5h512q53 0 103.5 -35.5t69.5 -84.5l51 -136h224zM960 128q185 0 316.5 131.5t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5z" />
80
+ <glyph unicode="&#xf031;" horiz-adv-x="1664" d="M725 977l-170 -450q73 -1 153.5 -2t119 -1.5t52.5 -0.5l29 2q-32 95 -92 241q-53 132 -92 211zM21 -128h-21l2 79q22 7 80 18q89 16 110 31q20 16 48 68l237 616l280 724h75h53l11 -21l205 -480q103 -242 124 -297q39 -102 96 -235q26 -58 65 -164q24 -67 65 -149 q22 -49 35 -57q22 -19 69 -23q47 -6 103 -27q6 -39 6 -57q0 -14 -1 -26q-80 0 -192 8q-93 8 -189 8q-79 0 -135 -2l-200 -11l-58 -2q0 45 4 78l131 28q56 13 68 23q12 12 12 27t-6 32l-47 114l-92 228l-450 2q-29 -65 -104 -274q-23 -64 -23 -84q0 -31 17 -43 q26 -21 103 -32q3 0 13.5 -2t30 -5t40.5 -6q1 -28 1 -58q0 -17 -2 -27q-66 0 -349 20l-48 -8q-81 -14 -167 -14z" />
81
+ <glyph unicode="&#xf032;" horiz-adv-x="1408" d="M555 15q76 -32 140 -32q131 0 216 41t122 113q38 70 38 181q0 114 -41 180q-58 94 -141 126q-80 32 -247 32q-74 0 -101 -10v-144l-1 -173l3 -270q0 -15 12 -44zM541 761q43 -7 109 -7q175 0 264 65t89 224q0 112 -85 187q-84 75 -255 75q-52 0 -130 -13q0 -44 2 -77 q7 -122 6 -279l-1 -98q0 -43 1 -77zM0 -128l2 94q45 9 68 12q77 12 123 31q17 27 21 51q9 66 9 194l-2 497q-5 256 -9 404q-1 87 -11 109q-1 4 -12 12q-18 12 -69 15q-30 2 -114 13l-4 83l260 6l380 13l45 1q5 0 14 0.5t14 0.5q1 0 21.5 -0.5t40.5 -0.5h74q88 0 191 -27 q43 -13 96 -39q57 -29 102 -76q44 -47 65 -104t21 -122q0 -70 -32 -128t-95 -105q-26 -20 -150 -77q177 -41 267 -146q92 -106 92 -236q0 -76 -29 -161q-21 -62 -71 -117q-66 -72 -140 -108q-73 -36 -203 -60q-82 -15 -198 -11l-197 4q-84 2 -298 -11q-33 -3 -272 -11z" />
82
+ <glyph unicode="&#xf033;" horiz-adv-x="1024" d="M0 -126l17 85q4 1 77 20q76 19 116 39q29 37 41 101l27 139l56 268l12 64q8 44 17 84.5t16 67t12.5 46.5t9 30.5t3.5 11.5l29 157l16 63l22 135l8 50v38q-41 22 -144 28q-28 2 -38 4l19 103l317 -14q39 -2 73 -2q66 0 214 9q33 2 68 4.5t36 2.5q-2 -19 -6 -38 q-7 -29 -13 -51q-55 -19 -109 -31q-64 -16 -101 -31q-12 -31 -24 -88q-9 -44 -13 -82q-44 -199 -66 -306l-61 -311l-38 -158l-43 -235l-12 -45q-2 -7 1 -27q64 -15 119 -21q36 -5 66 -10q-1 -29 -7 -58q-7 -31 -9 -41q-18 0 -23 -1q-24 -2 -42 -2q-9 0 -28 3q-19 4 -145 17 l-198 2q-41 1 -174 -11q-74 -7 -98 -9z" />
83
+ <glyph unicode="&#xf034;" horiz-adv-x="1792" d="M81 1407l54 -27q20 -5 211 -5h130l19 3l115 1l215 -1h293l34 -2q14 -1 28 7t21 16l7 8l42 1q15 0 28 -1v-104.5t1 -131.5l1 -100l-1 -58q0 -32 -4 -51q-39 -15 -68 -18q-25 43 -54 128q-8 24 -15.5 62.5t-11.5 65.5t-6 29q-13 15 -27 19q-7 2 -42.5 2t-103.5 -1t-111 -1 q-34 0 -67 -5q-10 -97 -8 -136l1 -152v-332l3 -359l-1 -147q-1 -46 11 -85q49 -25 89 -32q2 0 18 -5t44 -13t43 -12q30 -8 50 -18q5 -45 5 -50q0 -10 -3 -29q-14 -1 -34 -1q-110 0 -187 10q-72 8 -238 8q-88 0 -233 -14q-48 -4 -70 -4q-2 22 -2 26l-1 26v9q21 33 79 49 q139 38 159 50q9 21 12 56q8 192 6 433l-5 428q-1 62 -0.5 118.5t0.5 102.5t-2 57t-6 15q-6 5 -14 6q-38 6 -148 6q-43 0 -100 -13.5t-73 -24.5q-13 -9 -22 -33t-22 -75t-24 -84q-6 -19 -19.5 -32t-20.5 -13q-44 27 -56 44v297v86zM1744 128q33 0 42 -18.5t-11 -44.5 l-126 -162q-20 -26 -49 -26t-49 26l-126 162q-20 26 -11 44.5t42 18.5h80v1024h-80q-33 0 -42 18.5t11 44.5l126 162q20 26 49 26t49 -26l126 -162q20 -26 11 -44.5t-42 -18.5h-80v-1024h80z" />
84
+ <glyph unicode="&#xf035;" d="M81 1407l54 -27q20 -5 211 -5h130l19 3l115 1l446 -1h318l34 -2q14 -1 28 7t21 16l7 8l42 1q15 0 28 -1v-104.5t1 -131.5l1 -100l-1 -58q0 -32 -4 -51q-39 -15 -68 -18q-25 43 -54 128q-8 24 -15.5 62.5t-11.5 65.5t-6 29q-13 15 -27 19q-7 2 -58.5 2t-138.5 -1t-128 -1 q-94 0 -127 -5q-10 -97 -8 -136l1 -152v52l3 -359l-1 -147q-1 -46 11 -85q49 -25 89 -32q2 0 18 -5t44 -13t43 -12q30 -8 50 -18q5 -45 5 -50q0 -10 -3 -29q-14 -1 -34 -1q-110 0 -187 10q-72 8 -238 8q-82 0 -233 -13q-45 -5 -70 -5q-2 22 -2 26l-1 26v9q21 33 79 49 q139 38 159 50q9 21 12 56q6 137 6 433l-5 44q0 265 -2 278q-2 11 -6 15q-6 5 -14 6q-38 6 -148 6q-50 0 -168.5 -14t-132.5 -24q-13 -9 -22 -33t-22 -75t-24 -84q-6 -19 -19.5 -32t-20.5 -13q-44 27 -56 44v297v86zM1505 113q26 -20 26 -49t-26 -49l-162 -126 q-26 -20 -44.5 -11t-18.5 42v80h-1024v-80q0 -33 -18.5 -42t-44.5 11l-162 126q-26 20 -26 49t26 49l162 126q26 20 44.5 11t18.5 -42v-80h1024v80q0 33 18.5 42t44.5 -11z" />
85
+ <glyph unicode="&#xf036;" horiz-adv-x="1792" d="M1792 192v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1408 576v-128q0 -26 -19 -45t-45 -19h-1280q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1280q26 0 45 -19t19 -45zM1664 960v-128q0 -26 -19 -45 t-45 -19h-1536q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1536q26 0 45 -19t19 -45zM1280 1344v-128q0 -26 -19 -45t-45 -19h-1152q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1152q26 0 45 -19t19 -45z" />
86
+ <glyph unicode="&#xf037;" horiz-adv-x="1792" d="M1792 192v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1408 576v-128q0 -26 -19 -45t-45 -19h-896q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h896q26 0 45 -19t19 -45zM1664 960v-128q0 -26 -19 -45t-45 -19 h-1408q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1408q26 0 45 -19t19 -45zM1280 1344v-128q0 -26 -19 -45t-45 -19h-640q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h640q26 0 45 -19t19 -45z" />
87
+ <glyph unicode="&#xf038;" horiz-adv-x="1792" d="M1792 192v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 576v-128q0 -26 -19 -45t-45 -19h-1280q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1280q26 0 45 -19t19 -45zM1792 960v-128q0 -26 -19 -45 t-45 -19h-1536q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1536q26 0 45 -19t19 -45zM1792 1344v-128q0 -26 -19 -45t-45 -19h-1152q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1152q26 0 45 -19t19 -45z" />
88
+ <glyph unicode="&#xf039;" horiz-adv-x="1792" d="M1792 192v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 576v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 960v-128q0 -26 -19 -45 t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 1344v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45z" />
89
+ <glyph unicode="&#xf03a;" horiz-adv-x="1792" d="M256 224v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-192q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5 -9.5t9.5 -22.5zM256 608v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-192q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5 -9.5 t9.5 -22.5zM256 992v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-192q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5 -9.5t9.5 -22.5zM1792 224v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1344 q13 0 22.5 -9.5t9.5 -22.5zM256 1376v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-192q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5 -9.5t9.5 -22.5zM1792 608v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5 t22.5 9.5h1344q13 0 22.5 -9.5t9.5 -22.5zM1792 992v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1344q13 0 22.5 -9.5t9.5 -22.5zM1792 1376v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5v192 q0 13 9.5 22.5t22.5 9.5h1344q13 0 22.5 -9.5t9.5 -22.5z" />
90
+ <glyph unicode="&#xf03b;" horiz-adv-x="1792" d="M384 992v-576q0 -13 -9.5 -22.5t-22.5 -9.5q-14 0 -23 9l-288 288q-9 9 -9 23t9 23l288 288q9 9 23 9q13 0 22.5 -9.5t9.5 -22.5zM1792 224v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1728q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1728q13 0 22.5 -9.5 t9.5 -22.5zM1792 608v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1088q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1088q13 0 22.5 -9.5t9.5 -22.5zM1792 992v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1088q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1088 q13 0 22.5 -9.5t9.5 -22.5zM1792 1376v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1728q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1728q13 0 22.5 -9.5t9.5 -22.5z" />
91
+ <glyph unicode="&#xf03c;" horiz-adv-x="1792" d="M352 704q0 -14 -9 -23l-288 -288q-9 -9 -23 -9q-13 0 -22.5 9.5t-9.5 22.5v576q0 13 9.5 22.5t22.5 9.5q14 0 23 -9l288 -288q9 -9 9 -23zM1792 224v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1728q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1728q13 0 22.5 -9.5 t9.5 -22.5zM1792 608v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1088q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1088q13 0 22.5 -9.5t9.5 -22.5zM1792 992v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1088q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1088 q13 0 22.5 -9.5t9.5 -22.5zM1792 1376v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1728q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1728q13 0 22.5 -9.5t9.5 -22.5z" />
92
+ <glyph unicode="&#xf03d;" horiz-adv-x="1792" d="M1792 1184v-1088q0 -42 -39 -59q-13 -5 -25 -5q-27 0 -45 19l-403 403v-166q0 -119 -84.5 -203.5t-203.5 -84.5h-704q-119 0 -203.5 84.5t-84.5 203.5v704q0 119 84.5 203.5t203.5 84.5h704q119 0 203.5 -84.5t84.5 -203.5v-165l403 402q18 19 45 19q12 0 25 -5 q39 -17 39 -59z" />
93
+ <glyph unicode="&#xf03e;" horiz-adv-x="1920" d="M640 960q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM1664 576v-448h-1408v192l320 320l160 -160l512 512zM1760 1280h-1600q-13 0 -22.5 -9.5t-9.5 -22.5v-1216q0 -13 9.5 -22.5t22.5 -9.5h1600q13 0 22.5 9.5t9.5 22.5v1216 q0 13 -9.5 22.5t-22.5 9.5zM1920 1248v-1216q0 -66 -47 -113t-113 -47h-1600q-66 0 -113 47t-47 113v1216q0 66 47 113t113 47h1600q66 0 113 -47t47 -113z" />
94
+ <glyph unicode="&#xf040;" d="M363 0l91 91l-235 235l-91 -91v-107h128v-128h107zM886 928q0 22 -22 22q-10 0 -17 -7l-542 -542q-7 -7 -7 -17q0 -22 22 -22q10 0 17 7l542 542q7 7 7 17zM832 1120l416 -416l-832 -832h-416v416zM1515 1024q0 -53 -37 -90l-166 -166l-416 416l166 165q36 38 90 38 q53 0 91 -38l235 -234q37 -39 37 -91z" />
95
+ <glyph unicode="&#xf041;" horiz-adv-x="1024" d="M768 896q0 106 -75 181t-181 75t-181 -75t-75 -181t75 -181t181 -75t181 75t75 181zM1024 896q0 -109 -33 -179l-364 -774q-16 -33 -47.5 -52t-67.5 -19t-67.5 19t-46.5 52l-365 774q-33 70 -33 179q0 212 150 362t362 150t362 -150t150 -362z" />
96
+ <glyph unicode="&#xf042;" d="M768 96v1088q-148 0 -273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
97
+ <glyph unicode="&#xf043;" horiz-adv-x="1024" d="M512 384q0 36 -20 69q-1 1 -15.5 22.5t-25.5 38t-25 44t-21 50.5q-4 16 -21 16t-21 -16q-7 -23 -21 -50.5t-25 -44t-25.5 -38t-15.5 -22.5q-20 -33 -20 -69q0 -53 37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1024 512q0 -212 -150 -362t-362 -150t-362 150t-150 362 q0 145 81 275q6 9 62.5 90.5t101 151t99.5 178t83 201.5q9 30 34 47t51 17t51.5 -17t33.5 -47q28 -93 83 -201.5t99.5 -178t101 -151t62.5 -90.5q81 -127 81 -275z" />
98
+ <glyph unicode="&#xf044;" horiz-adv-x="1792" d="M888 352l116 116l-152 152l-116 -116v-56h96v-96h56zM1328 1072q-16 16 -33 -1l-350 -350q-17 -17 -1 -33t33 1l350 350q17 17 1 33zM1408 478v-190q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h832 q63 0 117 -25q15 -7 18 -23q3 -17 -9 -29l-49 -49q-14 -14 -32 -8q-23 6 -45 6h-832q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113v126q0 13 9 22l64 64q15 15 35 7t20 -29zM1312 1216l288 -288l-672 -672h-288v288zM1756 1084l-92 -92 l-288 288l92 92q28 28 68 28t68 -28l152 -152q28 -28 28 -68t-28 -68z" />
99
+ <glyph unicode="&#xf045;" horiz-adv-x="1664" d="M1408 547v-259q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h255v0q13 0 22.5 -9.5t9.5 -22.5q0 -27 -26 -32q-77 -26 -133 -60q-10 -4 -16 -4h-112q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832 q66 0 113 47t47 113v214q0 19 18 29q28 13 54 37q16 16 35 8q21 -9 21 -29zM1645 1043l-384 -384q-18 -19 -45 -19q-12 0 -25 5q-39 17 -39 59v192h-160q-323 0 -438 -131q-119 -137 -74 -473q3 -23 -20 -34q-8 -2 -12 -2q-16 0 -26 13q-10 14 -21 31t-39.5 68.5t-49.5 99.5 t-38.5 114t-17.5 122q0 49 3.5 91t14 90t28 88t47 81.5t68.5 74t94.5 61.5t124.5 48.5t159.5 30.5t196.5 11h160v192q0 42 39 59q13 5 25 5q26 0 45 -19l384 -384q19 -19 19 -45t-19 -45z" />
100
+ <glyph unicode="&#xf046;" horiz-adv-x="1664" d="M1408 606v-318q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h832q63 0 117 -25q15 -7 18 -23q3 -17 -9 -29l-49 -49q-10 -10 -23 -10q-3 0 -9 2q-23 6 -45 6h-832q-66 0 -113 -47t-47 -113v-832 q0 -66 47 -113t113 -47h832q66 0 113 47t47 113v254q0 13 9 22l64 64q10 10 23 10q6 0 12 -3q20 -8 20 -29zM1639 1095l-814 -814q-24 -24 -57 -24t-57 24l-430 430q-24 24 -24 57t24 57l110 110q24 24 57 24t57 -24l263 -263l647 647q24 24 57 24t57 -24l110 -110 q24 -24 24 -57t-24 -57z" />
101
+ <glyph unicode="&#xf047;" horiz-adv-x="1792" d="M1792 640q0 -26 -19 -45l-256 -256q-19 -19 -45 -19t-45 19t-19 45v128h-384v-384h128q26 0 45 -19t19 -45t-19 -45l-256 -256q-19 -19 -45 -19t-45 19l-256 256q-19 19 -19 45t19 45t45 19h128v384h-384v-128q0 -26 -19 -45t-45 -19t-45 19l-256 256q-19 19 -19 45 t19 45l256 256q19 19 45 19t45 -19t19 -45v-128h384v384h-128q-26 0 -45 19t-19 45t19 45l256 256q19 19 45 19t45 -19l256 -256q19 -19 19 -45t-19 -45t-45 -19h-128v-384h384v128q0 26 19 45t45 19t45 -19l256 -256q19 -19 19 -45z" />
102
+ <glyph unicode="&#xf048;" horiz-adv-x="1024" d="M979 1395q19 19 32 13t13 -32v-1472q0 -26 -13 -32t-32 13l-710 710q-9 9 -13 19v-678q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-678q4 11 13 19z" />
103
+ <glyph unicode="&#xf049;" horiz-adv-x="1792" d="M1747 1395q19 19 32 13t13 -32v-1472q0 -26 -13 -32t-32 13l-710 710q-9 9 -13 19v-710q0 -26 -13 -32t-32 13l-710 710q-9 9 -13 19v-678q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-678q4 11 13 19l710 710 q19 19 32 13t13 -32v-710q4 11 13 19z" />
104
+ <glyph unicode="&#xf04a;" horiz-adv-x="1664" d="M1619 1395q19 19 32 13t13 -32v-1472q0 -26 -13 -32t-32 13l-710 710q-8 9 -13 19v-710q0 -26 -13 -32t-32 13l-710 710q-19 19 -19 45t19 45l710 710q19 19 32 13t13 -32v-710q5 11 13 19z" />
105
+ <glyph unicode="&#xf04b;" horiz-adv-x="1408" d="M1384 609l-1328 -738q-23 -13 -39.5 -3t-16.5 36v1472q0 26 16.5 36t39.5 -3l1328 -738q23 -13 23 -31t-23 -31z" />
106
+ <glyph unicode="&#xf04c;" d="M1536 1344v-1408q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h512q26 0 45 -19t19 -45zM640 1344v-1408q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h512q26 0 45 -19t19 -45z" />
107
+ <glyph unicode="&#xf04d;" d="M1536 1344v-1408q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h1408q26 0 45 -19t19 -45z" />
108
+ <glyph unicode="&#xf04e;" horiz-adv-x="1664" d="M45 -115q-19 -19 -32 -13t-13 32v1472q0 26 13 32t32 -13l710 -710q8 -8 13 -19v710q0 26 13 32t32 -13l710 -710q19 -19 19 -45t-19 -45l-710 -710q-19 -19 -32 -13t-13 32v710q-5 -10 -13 -19z" />
109
+ <glyph unicode="&#xf050;" horiz-adv-x="1792" d="M45 -115q-19 -19 -32 -13t-13 32v1472q0 26 13 32t32 -13l710 -710q8 -8 13 -19v710q0 26 13 32t32 -13l710 -710q8 -8 13 -19v678q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-1408q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v678q-5 -10 -13 -19l-710 -710 q-19 -19 -32 -13t-13 32v710q-5 -10 -13 -19z" />
110
+ <glyph unicode="&#xf051;" horiz-adv-x="1024" d="M45 -115q-19 -19 -32 -13t-13 32v1472q0 26 13 32t32 -13l710 -710q8 -8 13 -19v678q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-1408q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v678q-5 -10 -13 -19z" />
111
+ <glyph unicode="&#xf052;" horiz-adv-x="1538" d="M14 557l710 710q19 19 45 19t45 -19l710 -710q19 -19 13 -32t-32 -13h-1472q-26 0 -32 13t13 32zM1473 0h-1408q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h1408q26 0 45 -19t19 -45v-256q0 -26 -19 -45t-45 -19z" />
112
+ <glyph unicode="&#xf053;" horiz-adv-x="1152" d="M742 -37l-652 651q-37 37 -37 90.5t37 90.5l652 651q37 37 90.5 37t90.5 -37l75 -75q37 -37 37 -90.5t-37 -90.5l-486 -486l486 -485q37 -38 37 -91t-37 -90l-75 -75q-37 -37 -90.5 -37t-90.5 37z" />
113
+ <glyph unicode="&#xf054;" horiz-adv-x="1152" d="M1099 704q0 -52 -37 -91l-652 -651q-37 -37 -90 -37t-90 37l-76 75q-37 39 -37 91q0 53 37 90l486 486l-486 485q-37 39 -37 91q0 53 37 90l76 75q36 38 90 38t90 -38l652 -651q37 -37 37 -90z" />
114
+ <glyph unicode="&#xf055;" d="M1216 576v128q0 26 -19 45t-45 19h-256v256q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-256h-256q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h256v-256q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v256h256q26 0 45 19t19 45zM1536 640q0 -209 -103 -385.5 t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
115
+ <glyph unicode="&#xf056;" d="M1216 576v128q0 26 -19 45t-45 19h-768q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h768q26 0 45 19t19 45zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5 t103 -385.5z" />
116
+ <glyph unicode="&#xf057;" d="M1149 414q0 26 -19 45l-181 181l181 181q19 19 19 45q0 27 -19 46l-90 90q-19 19 -46 19q-26 0 -45 -19l-181 -181l-181 181q-19 19 -45 19q-27 0 -46 -19l-90 -90q-19 -19 -19 -46q0 -26 19 -45l181 -181l-181 -181q-19 -19 -19 -45q0 -27 19 -46l90 -90q19 -19 46 -19 q26 0 45 19l181 181l181 -181q19 -19 45 -19q27 0 46 19l90 90q19 19 19 46zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
117
+ <glyph unicode="&#xf058;" d="M1284 802q0 28 -18 46l-91 90q-19 19 -45 19t-45 -19l-408 -407l-226 226q-19 19 -45 19t-45 -19l-91 -90q-18 -18 -18 -46q0 -27 18 -45l362 -362q19 -19 45 -19q27 0 46 19l543 543q18 18 18 45zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103 t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
118
+ <glyph unicode="&#xf059;" d="M896 160v192q0 14 -9 23t-23 9h-192q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h192q14 0 23 9t9 23zM1152 832q0 88 -55.5 163t-138.5 116t-170 41q-243 0 -371 -213q-15 -24 8 -42l132 -100q7 -6 19 -6q16 0 25 12q53 68 86 92q34 24 86 24q48 0 85.5 -26t37.5 -59 q0 -38 -20 -61t-68 -45q-63 -28 -115.5 -86.5t-52.5 -125.5v-36q0 -14 9 -23t23 -9h192q14 0 23 9t9 23q0 19 21.5 49.5t54.5 49.5q32 18 49 28.5t46 35t44.5 48t28 60.5t12.5 81zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5 t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
119
+ <glyph unicode="&#xf05a;" d="M1024 160v160q0 14 -9 23t-23 9h-96v512q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-160q0 -14 9 -23t23 -9h96v-320h-96q-14 0 -23 -9t-9 -23v-160q0 -14 9 -23t23 -9h448q14 0 23 9t9 23zM896 1056v160q0 14 -9 23t-23 9h-192q-14 0 -23 -9t-9 -23v-160q0 -14 9 -23 t23 -9h192q14 0 23 9t9 23zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
120
+ <glyph unicode="&#xf05b;" d="M1197 512h-109q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h109q-32 108 -112.5 188.5t-188.5 112.5v-109q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v109q-108 -32 -188.5 -112.5t-112.5 -188.5h109q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-109 q32 -108 112.5 -188.5t188.5 -112.5v109q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-109q108 32 188.5 112.5t112.5 188.5zM1536 704v-128q0 -26 -19 -45t-45 -19h-143q-37 -161 -154.5 -278.5t-278.5 -154.5v-143q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v143 q-161 37 -278.5 154.5t-154.5 278.5h-143q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h143q37 161 154.5 278.5t278.5 154.5v143q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-143q161 -37 278.5 -154.5t154.5 -278.5h143q26 0 45 -19t19 -45z" />
121
+ <glyph unicode="&#xf05c;" d="M1097 457l-146 -146q-10 -10 -23 -10t-23 10l-137 137l-137 -137q-10 -10 -23 -10t-23 10l-146 146q-10 10 -10 23t10 23l137 137l-137 137q-10 10 -10 23t10 23l146 146q10 10 23 10t23 -10l137 -137l137 137q10 10 23 10t23 -10l146 -146q10 -10 10 -23t-10 -23 l-137 -137l137 -137q10 -10 10 -23t-10 -23zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5 t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
122
+ <glyph unicode="&#xf05d;" d="M1171 723l-422 -422q-19 -19 -45 -19t-45 19l-294 294q-19 19 -19 45t19 45l102 102q19 19 45 19t45 -19l147 -147l275 275q19 19 45 19t45 -19l102 -102q19 -19 19 -45t-19 -45zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273t73 -273t198 -198 t273 -73t273 73t198 198t73 273zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
123
+ <glyph unicode="&#xf05e;" d="M1312 643q0 161 -87 295l-754 -753q137 -89 297 -89q111 0 211.5 43.5t173.5 116.5t116 174.5t43 212.5zM313 344l755 754q-135 91 -300 91q-148 0 -273 -73t-198 -199t-73 -274q0 -162 89 -299zM1536 643q0 -157 -61 -300t-163.5 -246t-245 -164t-298.5 -61t-298.5 61 t-245 164t-163.5 246t-61 300t61 299.5t163.5 245.5t245 164t298.5 61t298.5 -61t245 -164t163.5 -245.5t61 -299.5z" />
124
+ <glyph unicode="&#xf060;" d="M1536 640v-128q0 -53 -32.5 -90.5t-84.5 -37.5h-704l293 -294q38 -36 38 -90t-38 -90l-75 -76q-37 -37 -90 -37q-52 0 -91 37l-651 652q-37 37 -37 90q0 52 37 91l651 650q38 38 91 38q52 0 90 -38l75 -74q38 -38 38 -91t-38 -91l-293 -293h704q52 0 84.5 -37.5 t32.5 -90.5z" />
125
+ <glyph unicode="&#xf061;" d="M1472 576q0 -54 -37 -91l-651 -651q-39 -37 -91 -37q-51 0 -90 37l-75 75q-38 38 -38 91t38 91l293 293h-704q-52 0 -84.5 37.5t-32.5 90.5v128q0 53 32.5 90.5t84.5 37.5h704l-293 294q-38 36 -38 90t38 90l75 75q38 38 90 38q53 0 91 -38l651 -651q37 -35 37 -90z" />
126
+ <glyph unicode="&#xf062;" horiz-adv-x="1664" d="M1611 565q0 -51 -37 -90l-75 -75q-38 -38 -91 -38q-54 0 -90 38l-294 293v-704q0 -52 -37.5 -84.5t-90.5 -32.5h-128q-53 0 -90.5 32.5t-37.5 84.5v704l-294 -293q-36 -38 -90 -38t-90 38l-75 75q-38 38 -38 90q0 53 38 91l651 651q35 37 90 37q54 0 91 -37l651 -651 q37 -39 37 -91z" />
127
+ <glyph unicode="&#xf063;" horiz-adv-x="1664" d="M1611 704q0 -53 -37 -90l-651 -652q-39 -37 -91 -37q-53 0 -90 37l-651 652q-38 36 -38 90q0 53 38 91l74 75q39 37 91 37q53 0 90 -37l294 -294v704q0 52 38 90t90 38h128q52 0 90 -38t38 -90v-704l294 294q37 37 90 37q52 0 91 -37l75 -75q37 -39 37 -91z" />
128
+ <glyph unicode="&#xf064;" horiz-adv-x="1792" d="M1792 896q0 -26 -19 -45l-512 -512q-19 -19 -45 -19t-45 19t-19 45v256h-224q-98 0 -175.5 -6t-154 -21.5t-133 -42.5t-105.5 -69.5t-80 -101t-48.5 -138.5t-17.5 -181q0 -55 5 -123q0 -6 2.5 -23.5t2.5 -26.5q0 -15 -8.5 -25t-23.5 -10q-16 0 -28 17q-7 9 -13 22 t-13.5 30t-10.5 24q-127 285 -127 451q0 199 53 333q162 403 875 403h224v256q0 26 19 45t45 19t45 -19l512 -512q19 -19 19 -45z" />
129
+ <glyph unicode="&#xf065;" d="M755 480q0 -13 -10 -23l-332 -332l144 -144q19 -19 19 -45t-19 -45t-45 -19h-448q-26 0 -45 19t-19 45v448q0 26 19 45t45 19t45 -19l144 -144l332 332q10 10 23 10t23 -10l114 -114q10 -10 10 -23zM1536 1344v-448q0 -26 -19 -45t-45 -19t-45 19l-144 144l-332 -332 q-10 -10 -23 -10t-23 10l-114 114q-10 10 -10 23t10 23l332 332l-144 144q-19 19 -19 45t19 45t45 19h448q26 0 45 -19t19 -45z" />
130
+ <glyph unicode="&#xf066;" d="M768 576v-448q0 -26 -19 -45t-45 -19t-45 19l-144 144l-332 -332q-10 -10 -23 -10t-23 10l-114 114q-10 10 -10 23t10 23l332 332l-144 144q-19 19 -19 45t19 45t45 19h448q26 0 45 -19t19 -45zM1523 1248q0 -13 -10 -23l-332 -332l144 -144q19 -19 19 -45t-19 -45 t-45 -19h-448q-26 0 -45 19t-19 45v448q0 26 19 45t45 19t45 -19l144 -144l332 332q10 10 23 10t23 -10l114 -114q10 -10 10 -23z" />
131
+ <glyph unicode="&#xf067;" horiz-adv-x="1408" d="M1408 800v-192q0 -40 -28 -68t-68 -28h-416v-416q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68v416h-416q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h416v416q0 40 28 68t68 28h192q40 0 68 -28t28 -68v-416h416q40 0 68 -28t28 -68z" />
132
+ <glyph unicode="&#xf068;" horiz-adv-x="1408" d="M1408 800v-192q0 -40 -28 -68t-68 -28h-1216q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h1216q40 0 68 -28t28 -68z" />
133
+ <glyph unicode="&#xf069;" horiz-adv-x="1664" d="M1482 486q46 -26 59.5 -77.5t-12.5 -97.5l-64 -110q-26 -46 -77.5 -59.5t-97.5 12.5l-266 153v-307q0 -52 -38 -90t-90 -38h-128q-52 0 -90 38t-38 90v307l-266 -153q-46 -26 -97.5 -12.5t-77.5 59.5l-64 110q-26 46 -12.5 97.5t59.5 77.5l266 154l-266 154 q-46 26 -59.5 77.5t12.5 97.5l64 110q26 46 77.5 59.5t97.5 -12.5l266 -153v307q0 52 38 90t90 38h128q52 0 90 -38t38 -90v-307l266 153q46 26 97.5 12.5t77.5 -59.5l64 -110q26 -46 12.5 -97.5t-59.5 -77.5l-266 -154z" />
134
+ <glyph unicode="&#xf06a;" d="M768 1408q209 0 385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103zM896 161v190q0 14 -9 23.5t-22 9.5h-192q-13 0 -23 -10t-10 -23v-190q0 -13 10 -23t23 -10h192 q13 0 22 9.5t9 23.5zM894 505l18 621q0 12 -10 18q-10 8 -24 8h-220q-14 0 -24 -8q-10 -6 -10 -18l17 -621q0 -10 10 -17.5t24 -7.5h185q14 0 23.5 7.5t10.5 17.5z" />
135
+ <glyph unicode="&#xf06b;" d="M928 180v56v468v192h-320v-192v-468v-56q0 -25 18 -38.5t46 -13.5h192q28 0 46 13.5t18 38.5zM472 1024h195l-126 161q-26 31 -69 31q-40 0 -68 -28t-28 -68t28 -68t68 -28zM1160 1120q0 40 -28 68t-68 28q-43 0 -69 -31l-125 -161h194q40 0 68 28t28 68zM1536 864v-320 q0 -14 -9 -23t-23 -9h-96v-416q0 -40 -28 -68t-68 -28h-1088q-40 0 -68 28t-28 68v416h-96q-14 0 -23 9t-9 23v320q0 14 9 23t23 9h440q-93 0 -158.5 65.5t-65.5 158.5t65.5 158.5t158.5 65.5q107 0 168 -77l128 -165l128 165q61 77 168 77q93 0 158.5 -65.5t65.5 -158.5 t-65.5 -158.5t-158.5 -65.5h440q14 0 23 -9t9 -23z" />
136
+ <glyph unicode="&#xf06c;" horiz-adv-x="1792" d="M1280 832q0 26 -19 45t-45 19q-172 0 -318 -49.5t-259.5 -134t-235.5 -219.5q-19 -21 -19 -45q0 -26 19 -45t45 -19q24 0 45 19q27 24 74 71t67 66q137 124 268.5 176t313.5 52q26 0 45 19t19 45zM1792 1030q0 -95 -20 -193q-46 -224 -184.5 -383t-357.5 -268 q-214 -108 -438 -108q-148 0 -286 47q-15 5 -88 42t-96 37q-16 0 -39.5 -32t-45 -70t-52.5 -70t-60 -32q-30 0 -51 11t-31 24t-27 42q-2 4 -6 11t-5.5 10t-3 9.5t-1.5 13.5q0 35 31 73.5t68 65.5t68 56t31 48q0 4 -14 38t-16 44q-9 51 -9 104q0 115 43.5 220t119 184.5 t170.5 139t204 95.5q55 18 145 25.5t179.5 9t178.5 6t163.5 24t113.5 56.5l29.5 29.5t29.5 28t27 20t36.5 16t43.5 4.5q39 0 70.5 -46t47.5 -112t24 -124t8 -96z" />
137
+ <glyph unicode="&#xf06d;" horiz-adv-x="1408" d="M1408 -160v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h1344q13 0 22.5 -9.5t9.5 -22.5zM1152 896q0 -78 -24.5 -144t-64 -112.5t-87.5 -88t-96 -77.5t-87.5 -72t-64 -81.5t-24.5 -96.5q0 -96 67 -224l-4 1l1 -1 q-90 41 -160 83t-138.5 100t-113.5 122.5t-72.5 150.5t-27.5 184q0 78 24.5 144t64 112.5t87.5 88t96 77.5t87.5 72t64 81.5t24.5 96.5q0 94 -66 224l3 -1l-1 1q90 -41 160 -83t138.5 -100t113.5 -122.5t72.5 -150.5t27.5 -184z" />
138
+ <glyph unicode="&#xf06e;" horiz-adv-x="1792" d="M1664 576q-152 236 -381 353q61 -104 61 -225q0 -185 -131.5 -316.5t-316.5 -131.5t-316.5 131.5t-131.5 316.5q0 121 61 225q-229 -117 -381 -353q133 -205 333.5 -326.5t434.5 -121.5t434.5 121.5t333.5 326.5zM944 960q0 20 -14 34t-34 14q-125 0 -214.5 -89.5 t-89.5 -214.5q0 -20 14 -34t34 -14t34 14t14 34q0 86 61 147t147 61q20 0 34 14t14 34zM1792 576q0 -34 -20 -69q-140 -230 -376.5 -368.5t-499.5 -138.5t-499.5 139t-376.5 368q-20 35 -20 69t20 69q140 229 376.5 368t499.5 139t499.5 -139t376.5 -368q20 -35 20 -69z" />
139
+ <glyph unicode="&#xf070;" horiz-adv-x="1792" d="M555 201l78 141q-87 63 -136 159t-49 203q0 121 61 225q-229 -117 -381 -353q167 -258 427 -375zM944 960q0 20 -14 34t-34 14q-125 0 -214.5 -89.5t-89.5 -214.5q0 -20 14 -34t34 -14t34 14t14 34q0 86 61 147t147 61q20 0 34 14t14 34zM1307 1151q0 -7 -1 -9 q-105 -188 -315 -566t-316 -567l-49 -89q-10 -16 -28 -16q-12 0 -134 70q-16 10 -16 28q0 12 44 87q-143 65 -263.5 173t-208.5 245q-20 31 -20 69t20 69q153 235 380 371t496 136q89 0 180 -17l54 97q10 16 28 16q5 0 18 -6t31 -15.5t33 -18.5t31.5 -18.5t19.5 -11.5 q16 -10 16 -27zM1344 704q0 -139 -79 -253.5t-209 -164.5l280 502q8 -45 8 -84zM1792 576q0 -35 -20 -69q-39 -64 -109 -145q-150 -172 -347.5 -267t-419.5 -95l74 132q212 18 392.5 137t301.5 307q-115 179 -282 294l63 112q95 -64 182.5 -153t144.5 -184q20 -34 20 -69z " />
140
+ <glyph unicode="&#xf071;" horiz-adv-x="1792" d="M1024 161v190q0 14 -9.5 23.5t-22.5 9.5h-192q-13 0 -22.5 -9.5t-9.5 -23.5v-190q0 -14 9.5 -23.5t22.5 -9.5h192q13 0 22.5 9.5t9.5 23.5zM1022 535l18 459q0 12 -10 19q-13 11 -24 11h-220q-11 0 -24 -11q-10 -7 -10 -21l17 -457q0 -10 10 -16.5t24 -6.5h185 q14 0 23.5 6.5t10.5 16.5zM1008 1469l768 -1408q35 -63 -2 -126q-17 -29 -46.5 -46t-63.5 -17h-1536q-34 0 -63.5 17t-46.5 46q-37 63 -2 126l768 1408q17 31 47 49t65 18t65 -18t47 -49z" />
141
+ <glyph unicode="&#xf072;" horiz-adv-x="1408" d="M1376 1376q44 -52 12 -148t-108 -172l-161 -161l160 -696q5 -19 -12 -33l-128 -96q-7 -6 -19 -6q-4 0 -7 1q-15 3 -21 16l-279 508l-259 -259l53 -194q5 -17 -8 -31l-96 -96q-9 -9 -23 -9h-2q-15 2 -24 13l-189 252l-252 189q-11 7 -13 23q-1 13 9 25l96 97q9 9 23 9 q6 0 8 -1l194 -53l259 259l-508 279q-14 8 -17 24q-2 16 9 27l128 128q14 13 30 8l665 -159l160 160q76 76 172 108t148 -12z" />
142
+ <glyph unicode="&#xf073;" horiz-adv-x="1664" d="M128 -128h288v288h-288v-288zM480 -128h320v288h-320v-288zM128 224h288v320h-288v-320zM480 224h320v320h-320v-320zM128 608h288v288h-288v-288zM864 -128h320v288h-320v-288zM480 608h320v288h-320v-288zM1248 -128h288v288h-288v-288zM864 224h320v320h-320v-320z M512 1088v288q0 13 -9.5 22.5t-22.5 9.5h-64q-13 0 -22.5 -9.5t-9.5 -22.5v-288q0 -13 9.5 -22.5t22.5 -9.5h64q13 0 22.5 9.5t9.5 22.5zM1248 224h288v320h-288v-320zM864 608h320v288h-320v-288zM1248 608h288v288h-288v-288zM1280 1088v288q0 13 -9.5 22.5t-22.5 9.5h-64 q-13 0 -22.5 -9.5t-9.5 -22.5v-288q0 -13 9.5 -22.5t22.5 -9.5h64q13 0 22.5 9.5t9.5 22.5zM1664 1152v-1280q0 -52 -38 -90t-90 -38h-1408q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h128v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h384v96q0 66 47 113t113 47 h64q66 0 113 -47t47 -113v-96h128q52 0 90 -38t38 -90z" />
143
+ <glyph unicode="&#xf074;" horiz-adv-x="1792" d="M666 1055q-60 -92 -137 -273q-22 45 -37 72.5t-40.5 63.5t-51 56.5t-63 35t-81.5 14.5h-224q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h224q250 0 410 -225zM1792 256q0 -14 -9 -23l-320 -320q-9 -9 -23 -9q-13 0 -22.5 9.5t-9.5 22.5v192q-32 0 -85 -0.5t-81 -1t-73 1 t-71 5t-64 10.5t-63 18.5t-58 28.5t-59 40t-55 53.5t-56 69.5q59 93 136 273q22 -45 37 -72.5t40.5 -63.5t51 -56.5t63 -35t81.5 -14.5h256v192q0 14 9 23t23 9q12 0 24 -10l319 -319q9 -9 9 -23zM1792 1152q0 -14 -9 -23l-320 -320q-9 -9 -23 -9q-13 0 -22.5 9.5t-9.5 22.5 v192h-256q-48 0 -87 -15t-69 -45t-51 -61.5t-45 -77.5q-32 -62 -78 -171q-29 -66 -49.5 -111t-54 -105t-64 -100t-74 -83t-90 -68.5t-106.5 -42t-128 -16.5h-224q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h224q48 0 87 15t69 45t51 61.5t45 77.5q32 62 78 171q29 66 49.5 111 t54 105t64 100t74 83t90 68.5t106.5 42t128 16.5h256v192q0 14 9 23t23 9q12 0 24 -10l319 -319q9 -9 9 -23z" />
144
+ <glyph unicode="&#xf075;" horiz-adv-x="1792" d="M1792 640q0 -174 -120 -321.5t-326 -233t-450 -85.5q-70 0 -145 8q-198 -175 -460 -242q-49 -14 -114 -22q-17 -2 -30.5 9t-17.5 29v1q-3 4 -0.5 12t2 10t4.5 9.5l6 9t7 8.5t8 9q7 8 31 34.5t34.5 38t31 39.5t32.5 51t27 59t26 76q-157 89 -247.5 220t-90.5 281 q0 130 71 248.5t191 204.5t286 136.5t348 50.5q244 0 450 -85.5t326 -233t120 -321.5z" />
145
+ <glyph unicode="&#xf076;" d="M1536 704v-128q0 -201 -98.5 -362t-274 -251.5t-395.5 -90.5t-395.5 90.5t-274 251.5t-98.5 362v128q0 26 19 45t45 19h384q26 0 45 -19t19 -45v-128q0 -52 23.5 -90t53.5 -57t71 -30t64 -13t44 -2t44 2t64 13t71 30t53.5 57t23.5 90v128q0 26 19 45t45 19h384 q26 0 45 -19t19 -45zM512 1344v-384q0 -26 -19 -45t-45 -19h-384q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h384q26 0 45 -19t19 -45zM1536 1344v-384q0 -26 -19 -45t-45 -19h-384q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h384q26 0 45 -19t19 -45z" />
146
+ <glyph unicode="&#xf077;" horiz-adv-x="1664" d="M1611 320q0 -53 -37 -90l-75 -75q-38 -38 -91 -38q-54 0 -90 38l-486 485l-486 -485q-36 -38 -90 -38t-90 38l-75 75q-38 36 -38 90q0 53 38 91l651 651q37 37 90 37q52 0 91 -37l650 -651q38 -38 38 -91z" />
147
+ <glyph unicode="&#xf078;" horiz-adv-x="1664" d="M1611 832q0 -53 -37 -90l-651 -651q-38 -38 -91 -38q-54 0 -90 38l-651 651q-38 36 -38 90q0 53 38 91l74 75q39 37 91 37q53 0 90 -37l486 -486l486 486q37 37 90 37q52 0 91 -37l75 -75q37 -39 37 -91z" />
148
+ <glyph unicode="&#xf079;" horiz-adv-x="1920" d="M1280 32q0 -13 -9.5 -22.5t-22.5 -9.5h-960q-8 0 -13.5 2t-9 7t-5.5 8t-3 11.5t-1 11.5v13v11v160v416h-192q-26 0 -45 19t-19 45q0 24 15 41l320 384q19 22 49 22t49 -22l320 -384q15 -17 15 -41q0 -26 -19 -45t-45 -19h-192v-384h576q16 0 25 -11l160 -192q7 -11 7 -21 zM1920 448q0 -24 -15 -41l-320 -384q-20 -23 -49 -23t-49 23l-320 384q-15 17 -15 41q0 26 19 45t45 19h192v384h-576q-16 0 -25 12l-160 192q-7 9 -7 20q0 13 9.5 22.5t22.5 9.5h960q8 0 13.5 -2t9 -7t5.5 -8t3 -11.5t1 -11.5v-13v-11v-160v-416h192q26 0 45 -19t19 -45z " />
149
+ <glyph unicode="&#xf07a;" horiz-adv-x="1664" d="M640 0q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1536 0q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1664 1088v-512q0 -24 -16 -42.5t-41 -21.5 l-1044 -122q1 -7 4.5 -21.5t6 -26.5t2.5 -22q0 -16 -24 -64h920q26 0 45 -19t19 -45t-19 -45t-45 -19h-1024q-26 0 -45 19t-19 45q0 14 11 39.5t29.5 59.5t20.5 38l-177 823h-204q-26 0 -45 19t-19 45t19 45t45 19h256q16 0 28.5 -6.5t20 -15.5t13 -24.5t7.5 -26.5 t5.5 -29.5t4.5 -25.5h1201q26 0 45 -19t19 -45z" />
150
+ <glyph unicode="&#xf07b;" horiz-adv-x="1664" d="M1664 928v-704q0 -92 -66 -158t-158 -66h-1216q-92 0 -158 66t-66 158v960q0 92 66 158t158 66h320q92 0 158 -66t66 -158v-32h672q92 0 158 -66t66 -158z" />
151
+ <glyph unicode="&#xf07c;" horiz-adv-x="1920" d="M1879 584q0 -31 -31 -66l-336 -396q-43 -51 -120.5 -86.5t-143.5 -35.5h-1088q-34 0 -60.5 13t-26.5 43q0 31 31 66l336 396q43 51 120.5 86.5t143.5 35.5h1088q34 0 60.5 -13t26.5 -43zM1536 928v-160h-832q-94 0 -197 -47.5t-164 -119.5l-337 -396l-5 -6q0 4 -0.5 12.5 t-0.5 12.5v960q0 92 66 158t158 66h320q92 0 158 -66t66 -158v-32h544q92 0 158 -66t66 -158z" />
152
+ <glyph unicode="&#xf07d;" horiz-adv-x="768" d="M704 1216q0 -26 -19 -45t-45 -19h-128v-1024h128q26 0 45 -19t19 -45t-19 -45l-256 -256q-19 -19 -45 -19t-45 19l-256 256q-19 19 -19 45t19 45t45 19h128v1024h-128q-26 0 -45 19t-19 45t19 45l256 256q19 19 45 19t45 -19l256 -256q19 -19 19 -45z" />
153
+ <glyph unicode="&#xf07e;" horiz-adv-x="1792" d="M1792 640q0 -26 -19 -45l-256 -256q-19 -19 -45 -19t-45 19t-19 45v128h-1024v-128q0 -26 -19 -45t-45 -19t-45 19l-256 256q-19 19 -19 45t19 45l256 256q19 19 45 19t45 -19t19 -45v-128h1024v128q0 26 19 45t45 19t45 -19l256 -256q19 -19 19 -45z" />
154
+ <glyph unicode="&#xf080;" horiz-adv-x="1920" d="M512 512v-384h-256v384h256zM896 1024v-896h-256v896h256zM1280 768v-640h-256v640h256zM1664 1152v-1024h-256v1024h256zM1792 32v1216q0 13 -9.5 22.5t-22.5 9.5h-1600q-13 0 -22.5 -9.5t-9.5 -22.5v-1216q0 -13 9.5 -22.5t22.5 -9.5h1600q13 0 22.5 9.5t9.5 22.5z M1920 1248v-1216q0 -66 -47 -113t-113 -47h-1600q-66 0 -113 47t-47 113v1216q0 66 47 113t113 47h1600q66 0 113 -47t47 -113z" />
155
+ <glyph unicode="&#xf081;" d="M1280 926q-56 -25 -121 -34q68 40 93 117q-65 -38 -134 -51q-61 66 -153 66q-87 0 -148.5 -61.5t-61.5 -148.5q0 -29 5 -48q-129 7 -242 65t-192 155q-29 -50 -29 -106q0 -114 91 -175q-47 1 -100 26v-2q0 -75 50 -133.5t123 -72.5q-29 -8 -51 -8q-13 0 -39 4 q21 -63 74.5 -104t121.5 -42q-116 -90 -261 -90q-26 0 -50 3q148 -94 322 -94q112 0 210 35.5t168 95t120.5 137t75 162t24.5 168.5q0 18 -1 27q63 45 105 109zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5 t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
156
+ <glyph unicode="&#xf082;" d="M1307 618l23 219h-198v109q0 49 15.5 68.5t71.5 19.5h110v219h-175q-152 0 -218 -72t-66 -213v-131h-131v-219h131v-635h262v635h175zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960 q119 0 203.5 -84.5t84.5 -203.5z" />
157
+ <glyph unicode="&#xf083;" horiz-adv-x="1792" d="M928 704q0 14 -9 23t-23 9q-66 0 -113 -47t-47 -113q0 -14 9 -23t23 -9t23 9t9 23q0 40 28 68t68 28q14 0 23 9t9 23zM1152 574q0 -106 -75 -181t-181 -75t-181 75t-75 181t75 181t181 75t181 -75t75 -181zM128 0h1536v128h-1536v-128zM1280 574q0 159 -112.5 271.5 t-271.5 112.5t-271.5 -112.5t-112.5 -271.5t112.5 -271.5t271.5 -112.5t271.5 112.5t112.5 271.5zM256 1216h384v128h-384v-128zM128 1024h1536v118v138h-828l-64 -128h-644v-128zM1792 1280v-1280q0 -53 -37.5 -90.5t-90.5 -37.5h-1536q-53 0 -90.5 37.5t-37.5 90.5v1280 q0 53 37.5 90.5t90.5 37.5h1536q53 0 90.5 -37.5t37.5 -90.5z" />
158
+ <glyph unicode="&#xf084;" horiz-adv-x="1792" d="M832 1024q0 80 -56 136t-136 56t-136 -56t-56 -136q0 -42 19 -83q-41 19 -83 19q-80 0 -136 -56t-56 -136t56 -136t136 -56t136 56t56 136q0 42 -19 83q41 -19 83 -19q80 0 136 56t56 136zM1683 320q0 -17 -49 -66t-66 -49q-9 0 -28.5 16t-36.5 33t-38.5 40t-24.5 26 l-96 -96l220 -220q28 -28 28 -68q0 -42 -39 -81t-81 -39q-40 0 -68 28l-671 671q-176 -131 -365 -131q-163 0 -265.5 102.5t-102.5 265.5q0 160 95 313t248 248t313 95q163 0 265.5 -102.5t102.5 -265.5q0 -189 -131 -365l355 -355l96 96q-3 3 -26 24.5t-40 38.5t-33 36.5 t-16 28.5q0 17 49 66t66 49q13 0 23 -10q6 -6 46 -44.5t82 -79.5t86.5 -86t73 -78t28.5 -41z" />
159
+ <glyph unicode="&#xf085;" horiz-adv-x="1920" d="M896 640q0 106 -75 181t-181 75t-181 -75t-75 -181t75 -181t181 -75t181 75t75 181zM1664 128q0 52 -38 90t-90 38t-90 -38t-38 -90q0 -53 37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1664 1152q0 52 -38 90t-90 38t-90 -38t-38 -90q0 -53 37.5 -90.5t90.5 -37.5 t90.5 37.5t37.5 90.5zM1280 731v-185q0 -10 -7 -19.5t-16 -10.5l-155 -24q-11 -35 -32 -76q34 -48 90 -115q7 -10 7 -20q0 -12 -7 -19q-23 -30 -82.5 -89.5t-78.5 -59.5q-11 0 -21 7l-115 90q-37 -19 -77 -31q-11 -108 -23 -155q-7 -24 -30 -24h-186q-11 0 -20 7.5t-10 17.5 l-23 153q-34 10 -75 31l-118 -89q-7 -7 -20 -7q-11 0 -21 8q-144 133 -144 160q0 9 7 19q10 14 41 53t47 61q-23 44 -35 82l-152 24q-10 1 -17 9.5t-7 19.5v185q0 10 7 19.5t16 10.5l155 24q11 35 32 76q-34 48 -90 115q-7 11 -7 20q0 12 7 20q22 30 82 89t79 59q11 0 21 -7 l115 -90q34 18 77 32q11 108 23 154q7 24 30 24h186q11 0 20 -7.5t10 -17.5l23 -153q34 -10 75 -31l118 89q8 7 20 7q11 0 21 -8q144 -133 144 -160q0 -9 -7 -19q-12 -16 -42 -54t-45 -60q23 -48 34 -82l152 -23q10 -2 17 -10.5t7 -19.5zM1920 198v-140q0 -16 -149 -31 q-12 -27 -30 -52q51 -113 51 -138q0 -4 -4 -7q-122 -71 -124 -71q-8 0 -46 47t-52 68q-20 -2 -30 -2t-30 2q-14 -21 -52 -68t-46 -47q-2 0 -124 71q-4 3 -4 7q0 25 51 138q-18 25 -30 52q-149 15 -149 31v140q0 16 149 31q13 29 30 52q-51 113 -51 138q0 4 4 7q4 2 35 20 t59 34t30 16q8 0 46 -46.5t52 -67.5q20 2 30 2t30 -2q51 71 92 112l6 2q4 0 124 -70q4 -3 4 -7q0 -25 -51 -138q17 -23 30 -52q149 -15 149 -31zM1920 1222v-140q0 -16 -149 -31q-12 -27 -30 -52q51 -113 51 -138q0 -4 -4 -7q-122 -71 -124 -71q-8 0 -46 47t-52 68 q-20 -2 -30 -2t-30 2q-14 -21 -52 -68t-46 -47q-2 0 -124 71q-4 3 -4 7q0 25 51 138q-18 25 -30 52q-149 15 -149 31v140q0 16 149 31q13 29 30 52q-51 113 -51 138q0 4 4 7q4 2 35 20t59 34t30 16q8 0 46 -46.5t52 -67.5q20 2 30 2t30 -2q51 71 92 112l6 2q4 0 124 -70 q4 -3 4 -7q0 -25 -51 -138q17 -23 30 -52q149 -15 149 -31z" />
160
+ <glyph unicode="&#xf086;" horiz-adv-x="1792" d="M1408 768q0 -139 -94 -257t-256.5 -186.5t-353.5 -68.5q-86 0 -176 16q-124 -88 -278 -128q-36 -9 -86 -16h-3q-11 0 -20.5 8t-11.5 21q-1 3 -1 6.5t0.5 6.5t2 6l2.5 5t3.5 5.5t4 5t4.5 5t4 4.5q5 6 23 25t26 29.5t22.5 29t25 38.5t20.5 44q-124 72 -195 177t-71 224 q0 139 94 257t256.5 186.5t353.5 68.5t353.5 -68.5t256.5 -186.5t94 -257zM1792 512q0 -120 -71 -224.5t-195 -176.5q10 -24 20.5 -44t25 -38.5t22.5 -29t26 -29.5t23 -25q1 -1 4 -4.5t4.5 -5t4 -5t3.5 -5.5l2.5 -5t2 -6t0.5 -6.5t-1 -6.5q-3 -14 -13 -22t-22 -7 q-50 7 -86 16q-154 40 -278 128q-90 -16 -176 -16q-271 0 -472 132q58 -4 88 -4q161 0 309 45t264 129q125 92 192 212t67 254q0 77 -23 152q129 -71 204 -178t75 -230z" />
161
+ <glyph unicode="&#xf087;" d="M256 192q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1408 768q0 51 -39 89.5t-89 38.5h-352q0 58 48 159.5t48 160.5q0 98 -32 145t-128 47q-26 -26 -38 -85t-30.5 -125.5t-59.5 -109.5q-22 -23 -77 -91q-4 -5 -23 -30t-31.5 -41t-34.5 -42.5 t-40 -44t-38.5 -35.5t-40 -27t-35.5 -9h-32v-640h32q13 0 31.5 -3t33 -6.5t38 -11t35 -11.5t35.5 -12.5t29 -10.5q211 -73 342 -73h121q192 0 192 167q0 26 -5 56q30 16 47.5 52.5t17.5 73.5t-18 69q53 50 53 119q0 25 -10 55.5t-25 47.5q32 1 53.5 47t21.5 81zM1536 769 q0 -89 -49 -163q9 -33 9 -69q0 -77 -38 -144q3 -21 3 -43q0 -101 -60 -178q1 -139 -85 -219.5t-227 -80.5h-36h-93q-96 0 -189.5 22.5t-216.5 65.5q-116 40 -138 40h-288q-53 0 -90.5 37.5t-37.5 90.5v640q0 53 37.5 90.5t90.5 37.5h274q36 24 137 155q58 75 107 128 q24 25 35.5 85.5t30.5 126.5t62 108q39 37 90 37q84 0 151 -32.5t102 -101.5t35 -186q0 -93 -48 -192h176q104 0 180 -76t76 -179z" />
162
+ <glyph unicode="&#xf088;" d="M256 1088q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1408 512q0 35 -21.5 81t-53.5 47q15 17 25 47.5t10 55.5q0 69 -53 119q18 32 18 69t-17.5 73.5t-47.5 52.5q5 30 5 56q0 85 -49 126t-136 41h-128q-131 0 -342 -73q-5 -2 -29 -10.5 t-35.5 -12.5t-35 -11.5t-38 -11t-33 -6.5t-31.5 -3h-32v-640h32q16 0 35.5 -9t40 -27t38.5 -35.5t40 -44t34.5 -42.5t31.5 -41t23 -30q55 -68 77 -91q41 -43 59.5 -109.5t30.5 -125.5t38 -85q96 0 128 47t32 145q0 59 -48 160.5t-48 159.5h352q50 0 89 38.5t39 89.5z M1536 511q0 -103 -76 -179t-180 -76h-176q48 -99 48 -192q0 -118 -35 -186q-35 -69 -102 -101.5t-151 -32.5q-51 0 -90 37q-34 33 -54 82t-25.5 90.5t-17.5 84.5t-31 64q-48 50 -107 127q-101 131 -137 155h-274q-53 0 -90.5 37.5t-37.5 90.5v640q0 53 37.5 90.5t90.5 37.5 h288q22 0 138 40q128 44 223 66t200 22h112q140 0 226.5 -79t85.5 -216v-5q60 -77 60 -178q0 -22 -3 -43q38 -67 38 -144q0 -36 -9 -69q49 -74 49 -163z" />
163
+ <glyph unicode="&#xf089;" horiz-adv-x="896" d="M832 1504v-1339l-449 -236q-22 -12 -40 -12q-21 0 -31.5 14.5t-10.5 35.5q0 6 2 20l86 500l-364 354q-25 27 -25 48q0 37 56 46l502 73l225 455q19 41 49 41z" />
164
+ <glyph unicode="&#xf08a;" horiz-adv-x="1792" d="M1664 940q0 81 -21.5 143t-55 98.5t-81.5 59.5t-94 31t-98 8t-112 -25.5t-110.5 -64t-86.5 -72t-60 -61.5q-18 -22 -49 -22t-49 22q-24 28 -60 61.5t-86.5 72t-110.5 64t-112 25.5t-98 -8t-94 -31t-81.5 -59.5t-55 -98.5t-21.5 -143q0 -168 187 -355l581 -560l580 559 q188 188 188 356zM1792 940q0 -221 -229 -450l-623 -600q-18 -18 -44 -18t-44 18l-624 602q-10 8 -27.5 26t-55.5 65.5t-68 97.5t-53.5 121t-23.5 138q0 220 127 344t351 124q62 0 126.5 -21.5t120 -58t95.5 -68.5t76 -68q36 36 76 68t95.5 68.5t120 58t126.5 21.5 q224 0 351 -124t127 -344z" />
165
+ <glyph unicode="&#xf08b;" horiz-adv-x="1664" d="M640 96q0 -4 1 -20t0.5 -26.5t-3 -23.5t-10 -19.5t-20.5 -6.5h-320q-119 0 -203.5 84.5t-84.5 203.5v704q0 119 84.5 203.5t203.5 84.5h320q13 0 22.5 -9.5t9.5 -22.5q0 -4 1 -20t0.5 -26.5t-3 -23.5t-10 -19.5t-20.5 -6.5h-320q-66 0 -113 -47t-47 -113v-704 q0 -66 47 -113t113 -47h288h11h13t11.5 -1t11.5 -3t8 -5.5t7 -9t2 -13.5zM1568 640q0 -26 -19 -45l-544 -544q-19 -19 -45 -19t-45 19t-19 45v288h-448q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h448v288q0 26 19 45t45 19t45 -19l544 -544q19 -19 19 -45z" />
166
+ <glyph unicode="&#xf08c;" d="M237 122h231v694h-231v-694zM483 1030q-1 52 -36 86t-93 34t-94.5 -34t-36.5 -86q0 -51 35.5 -85.5t92.5 -34.5h1q59 0 95 34.5t36 85.5zM1068 122h231v398q0 154 -73 233t-193 79q-136 0 -209 -117h2v101h-231q3 -66 0 -694h231v388q0 38 7 56q15 35 45 59.5t74 24.5 q116 0 116 -157v-371zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
167
+ <glyph unicode="&#xf08d;" horiz-adv-x="1152" d="M480 672v448q0 14 -9 23t-23 9t-23 -9t-9 -23v-448q0 -14 9 -23t23 -9t23 9t9 23zM1152 320q0 -26 -19 -45t-45 -19h-429l-51 -483q-2 -12 -10.5 -20.5t-20.5 -8.5h-1q-27 0 -32 27l-76 485h-404q-26 0 -45 19t-19 45q0 123 78.5 221.5t177.5 98.5v512q-52 0 -90 38 t-38 90t38 90t90 38h640q52 0 90 -38t38 -90t-38 -90t-90 -38v-512q99 0 177.5 -98.5t78.5 -221.5z" />
168
+ <glyph unicode="&#xf08e;" horiz-adv-x="1792" d="M1408 608v-320q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h704q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-704q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113v320 q0 14 9 23t23 9h64q14 0 23 -9t9 -23zM1792 1472v-512q0 -26 -19 -45t-45 -19t-45 19l-176 176l-652 -652q-10 -10 -23 -10t-23 10l-114 114q-10 10 -10 23t10 23l652 652l-176 176q-19 19 -19 45t19 45t45 19h512q26 0 45 -19t19 -45z" />
169
+ <glyph unicode="&#xf090;" d="M1184 640q0 -26 -19 -45l-544 -544q-19 -19 -45 -19t-45 19t-19 45v288h-448q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h448v288q0 26 19 45t45 19t45 -19l544 -544q19 -19 19 -45zM1536 992v-704q0 -119 -84.5 -203.5t-203.5 -84.5h-320q-13 0 -22.5 9.5t-9.5 22.5 q0 4 -1 20t-0.5 26.5t3 23.5t10 19.5t20.5 6.5h320q66 0 113 47t47 113v704q0 66 -47 113t-113 47h-288h-11h-13t-11.5 1t-11.5 3t-8 5.5t-7 9t-2 13.5q0 4 -1 20t-0.5 26.5t3 23.5t10 19.5t20.5 6.5h320q119 0 203.5 -84.5t84.5 -203.5z" />
170
+ <glyph unicode="&#xf091;" horiz-adv-x="1664" d="M458 653q-74 162 -74 371h-256v-96q0 -78 94.5 -162t235.5 -113zM1536 928v96h-256q0 -209 -74 -371q141 29 235.5 113t94.5 162zM1664 1056v-128q0 -71 -41.5 -143t-112 -130t-173 -97.5t-215.5 -44.5q-42 -54 -95 -95q-38 -34 -52.5 -72.5t-14.5 -89.5q0 -54 30.5 -91 t97.5 -37q75 0 133.5 -45.5t58.5 -114.5v-64q0 -14 -9 -23t-23 -9h-832q-14 0 -23 9t-9 23v64q0 69 58.5 114.5t133.5 45.5q67 0 97.5 37t30.5 91q0 51 -14.5 89.5t-52.5 72.5q-53 41 -95 95q-113 5 -215.5 44.5t-173 97.5t-112 130t-41.5 143v128q0 40 28 68t68 28h288v96 q0 66 47 113t113 47h576q66 0 113 -47t47 -113v-96h288q40 0 68 -28t28 -68z" />
171
+ <glyph unicode="&#xf092;" d="M394 184q-8 -9 -20 3q-13 11 -4 19q8 9 20 -3q12 -11 4 -19zM352 245q9 -12 0 -19q-8 -6 -17 7t0 18q9 7 17 -6zM291 305q-5 -7 -13 -2q-10 5 -7 12q3 5 13 2q10 -5 7 -12zM322 271q-6 -7 -16 3q-9 11 -2 16q6 6 16 -3q9 -11 2 -16zM451 159q-4 -12 -19 -6q-17 4 -13 15 t19 7q16 -5 13 -16zM514 154q0 -11 -16 -11q-17 -2 -17 11q0 11 16 11q17 2 17 -11zM572 164q2 -10 -14 -14t-18 8t14 15q16 2 18 -9zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-224q-16 0 -24.5 1t-19.5 5t-16 14.5t-5 27.5v239q0 97 -52 142q57 6 102.5 18t94 39 t81 66.5t53 105t20.5 150.5q0 121 -79 206q37 91 -8 204q-28 9 -81 -11t-92 -44l-38 -24q-93 26 -192 26t-192 -26q-16 11 -42.5 27t-83.5 38.5t-86 13.5q-44 -113 -7 -204q-79 -85 -79 -206q0 -85 20.5 -150t52.5 -105t80.5 -67t94 -39t102.5 -18q-40 -36 -49 -103 q-21 -10 -45 -15t-57 -5t-65.5 21.5t-55.5 62.5q-19 32 -48.5 52t-49.5 24l-20 3q-21 0 -29 -4.5t-5 -11.5t9 -14t13 -12l7 -5q22 -10 43.5 -38t31.5 -51l10 -23q13 -38 44 -61.5t67 -30t69.5 -7t55.5 3.5l23 4q0 -38 0.5 -103t0.5 -68q0 -22 -11 -33.5t-22 -13t-33 -1.5 h-224q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
172
+ <glyph unicode="&#xf093;" horiz-adv-x="1664" d="M1280 64q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1536 64q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1664 288v-320q0 -40 -28 -68t-68 -28h-1472q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h427q21 -56 70.5 -92 t110.5 -36h256q61 0 110.5 36t70.5 92h427q40 0 68 -28t28 -68zM1339 936q-17 -40 -59 -40h-256v-448q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v448h-256q-42 0 -59 40q-17 39 14 69l448 448q18 19 45 19t45 -19l448 -448q31 -30 14 -69z" />
173
+ <glyph unicode="&#xf094;" d="M1407 710q0 44 -7 113.5t-18 96.5q-12 30 -17 44t-9 36.5t-4 48.5q0 23 5 68.5t5 67.5q0 37 -10 55q-4 1 -13 1q-19 0 -58 -4.5t-59 -4.5q-60 0 -176 24t-175 24q-43 0 -94.5 -11.5t-85 -23.5t-89.5 -34q-137 -54 -202 -103q-96 -73 -159.5 -189.5t-88 -236t-24.5 -248.5 q0 -40 12.5 -120t12.5 -121q0 -23 -11 -66.5t-11 -65.5t12 -36.5t34 -14.5q24 0 72.5 11t73.5 11q57 0 169.5 -15.5t169.5 -15.5q181 0 284 36q129 45 235.5 152.5t166 245.5t59.5 275zM1535 712q0 -165 -70 -327.5t-196 -288t-281 -180.5q-124 -44 -326 -44 q-57 0 -170 14.5t-169 14.5q-24 0 -72.5 -14.5t-73.5 -14.5q-73 0 -123.5 55.5t-50.5 128.5q0 24 11 68t11 67q0 40 -12.5 120.5t-12.5 121.5q0 111 18 217.5t54.5 209.5t100.5 194t150 156q78 59 232 120q194 78 316 78q60 0 175.5 -24t173.5 -24q19 0 57 5t58 5 q81 0 118 -50.5t37 -134.5q0 -23 -5 -68t-5 -68q0 -10 1 -18.5t3 -17t4 -13.5t6.5 -16t6.5 -17q16 -40 25 -118.5t9 -136.5z" />
174
+ <glyph unicode="&#xf095;" horiz-adv-x="1408" d="M1408 296q0 -27 -10 -70.5t-21 -68.5q-21 -50 -122 -106q-94 -51 -186 -51q-27 0 -52.5 3.5t-57.5 12.5t-47.5 14.5t-55.5 20.5t-49 18q-98 35 -175 83q-128 79 -264.5 215.5t-215.5 264.5q-48 77 -83 175q-3 9 -18 49t-20.5 55.5t-14.5 47.5t-12.5 57.5t-3.5 52.5 q0 92 51 186q56 101 106 122q25 11 68.5 21t70.5 10q14 0 21 -3q18 -6 53 -76q11 -19 30 -54t35 -63.5t31 -53.5q3 -4 17.5 -25t21.5 -35.5t7 -28.5q0 -20 -28.5 -50t-62 -55t-62 -53t-28.5 -46q0 -9 5 -22.5t8.5 -20.5t14 -24t11.5 -19q76 -137 174 -235t235 -174 q2 -1 19 -11.5t24 -14t20.5 -8.5t22.5 -5q18 0 46 28.5t53 62t55 62t50 28.5q14 0 28.5 -7t35.5 -21.5t25 -17.5q25 -15 53.5 -31t63.5 -35t54 -30q70 -35 76 -53q3 -7 3 -21z" />
175
+ <glyph unicode="&#xf096;" horiz-adv-x="1408" d="M1120 1280h-832q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113v832q0 66 -47 113t-113 47zM1408 1120v-832q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h832 q119 0 203.5 -84.5t84.5 -203.5z" />
176
+ <glyph unicode="&#xf097;" horiz-adv-x="1280" d="M1152 1280h-1024v-1242l423 406l89 85l89 -85l423 -406v1242zM1164 1408q23 0 44 -9q33 -13 52.5 -41t19.5 -62v-1289q0 -34 -19.5 -62t-52.5 -41q-19 -8 -44 -8q-48 0 -83 32l-441 424l-441 -424q-36 -33 -83 -33q-23 0 -44 9q-33 13 -52.5 41t-19.5 62v1289 q0 34 19.5 62t52.5 41q21 9 44 9h1048z" />
177
+ <glyph unicode="&#xf098;" d="M1280 343q0 11 -2 16q-3 8 -38.5 29.5t-88.5 49.5l-53 29q-5 3 -19 13t-25 15t-21 5q-18 0 -47 -32.5t-57 -65.5t-44 -33q-7 0 -16.5 3.5t-15.5 6.5t-17 9.5t-14 8.5q-99 55 -170.5 126.5t-126.5 170.5q-2 3 -8.5 14t-9.5 17t-6.5 15.5t-3.5 16.5q0 13 20.5 33.5t45 38.5 t45 39.5t20.5 36.5q0 10 -5 21t-15 25t-13 19q-3 6 -15 28.5t-25 45.5t-26.5 47.5t-25 40.5t-16.5 18t-16 2q-48 0 -101 -22q-46 -21 -80 -94.5t-34 -130.5q0 -16 2.5 -34t5 -30.5t9 -33t10 -29.5t12.5 -33t11 -30q60 -164 216.5 -320.5t320.5 -216.5q6 -2 30 -11t33 -12.5 t29.5 -10t33 -9t30.5 -5t34 -2.5q57 0 130.5 34t94.5 80q22 53 22 101zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
178
+ <glyph unicode="&#xf099;" horiz-adv-x="1664" d="M1620 1128q-67 -98 -162 -167q1 -14 1 -42q0 -130 -38 -259.5t-115.5 -248.5t-184.5 -210.5t-258 -146t-323 -54.5q-271 0 -496 145q35 -4 78 -4q225 0 401 138q-105 2 -188 64.5t-114 159.5q33 -5 61 -5q43 0 85 11q-112 23 -185.5 111.5t-73.5 205.5v4q68 -38 146 -41 q-66 44 -105 115t-39 154q0 88 44 163q121 -149 294.5 -238.5t371.5 -99.5q-8 38 -8 74q0 134 94.5 228.5t228.5 94.5q140 0 236 -102q109 21 205 78q-37 -115 -142 -178q93 10 186 50z" />
179
+ <glyph unicode="&#xf09a;" horiz-adv-x="768" d="M511 980h257l-30 -284h-227v-824h-341v824h-170v284h170v171q0 182 86 275.5t283 93.5h227v-284h-142q-39 0 -62.5 -6.5t-34 -23.5t-13.5 -34.5t-3 -49.5v-142z" />
180
+ <glyph unicode="&#xf09b;" d="M1536 640q0 -251 -146.5 -451.5t-378.5 -277.5q-27 -5 -39.5 7t-12.5 30v211q0 97 -52 142q57 6 102.5 18t94 39t81 66.5t53 105t20.5 150.5q0 121 -79 206q37 91 -8 204q-28 9 -81 -11t-92 -44l-38 -24q-93 26 -192 26t-192 -26q-16 11 -42.5 27t-83.5 38.5t-86 13.5 q-44 -113 -7 -204q-79 -85 -79 -206q0 -85 20.5 -150t52.5 -105t80.5 -67t94 -39t102.5 -18q-40 -36 -49 -103q-21 -10 -45 -15t-57 -5t-65.5 21.5t-55.5 62.5q-19 32 -48.5 52t-49.5 24l-20 3q-21 0 -29 -4.5t-5 -11.5t9 -14t13 -12l7 -5q22 -10 43.5 -38t31.5 -51l10 -23 q13 -38 44 -61.5t67 -30t69.5 -7t55.5 3.5l23 4q0 -38 0.5 -89t0.5 -54q0 -18 -13 -30t-40 -7q-232 77 -378.5 277.5t-146.5 451.5q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
181
+ <glyph unicode="&#xf09c;" horiz-adv-x="1664" d="M1664 960v-256q0 -26 -19 -45t-45 -19h-64q-26 0 -45 19t-19 45v256q0 106 -75 181t-181 75t-181 -75t-75 -181v-192h96q40 0 68 -28t28 -68v-576q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v576q0 40 28 68t68 28h672v192q0 185 131.5 316.5t316.5 131.5 t316.5 -131.5t131.5 -316.5z" />
182
+ <glyph unicode="&#xf09d;" horiz-adv-x="1920" d="M1760 1408q66 0 113 -47t47 -113v-1216q0 -66 -47 -113t-113 -47h-1600q-66 0 -113 47t-47 113v1216q0 66 47 113t113 47h1600zM160 1280q-13 0 -22.5 -9.5t-9.5 -22.5v-224h1664v224q0 13 -9.5 22.5t-22.5 9.5h-1600zM1760 0q13 0 22.5 9.5t9.5 22.5v608h-1664v-608 q0 -13 9.5 -22.5t22.5 -9.5h1600zM256 128v128h256v-128h-256zM640 128v128h384v-128h-384z" />
183
+ <glyph unicode="&#xf09e;" horiz-adv-x="1408" d="M384 192q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM896 69q2 -28 -17 -48q-18 -21 -47 -21h-135q-25 0 -43 16.5t-20 41.5q-22 229 -184.5 391.5t-391.5 184.5q-25 2 -41.5 20t-16.5 43v135q0 29 21 47q17 17 43 17h5q160 -13 306 -80.5 t259 -181.5q114 -113 181.5 -259t80.5 -306zM1408 67q2 -27 -18 -47q-18 -20 -46 -20h-143q-26 0 -44.5 17.5t-19.5 42.5q-12 215 -101 408.5t-231.5 336t-336 231.5t-408.5 102q-25 1 -42.5 19.5t-17.5 43.5v143q0 28 20 46q18 18 44 18h3q262 -13 501.5 -120t425.5 -294 q187 -186 294 -425.5t120 -501.5z" />
184
+ <glyph unicode="&#xf0a0;" d="M1040 320q0 -33 -23.5 -56.5t-56.5 -23.5t-56.5 23.5t-23.5 56.5t23.5 56.5t56.5 23.5t56.5 -23.5t23.5 -56.5zM1296 320q0 -33 -23.5 -56.5t-56.5 -23.5t-56.5 23.5t-23.5 56.5t23.5 56.5t56.5 23.5t56.5 -23.5t23.5 -56.5zM1408 160v320q0 13 -9.5 22.5t-22.5 9.5 h-1216q-13 0 -22.5 -9.5t-9.5 -22.5v-320q0 -13 9.5 -22.5t22.5 -9.5h1216q13 0 22.5 9.5t9.5 22.5zM178 640h1180l-157 482q-4 13 -16 21.5t-26 8.5h-782q-14 0 -26 -8.5t-16 -21.5zM1536 480v-320q0 -66 -47 -113t-113 -47h-1216q-66 0 -113 47t-47 113v320q0 25 16 75 l197 606q17 53 63 86t101 33h782q55 0 101 -33t63 -86l197 -606q16 -50 16 -75z" />
185
+ <glyph unicode="&#xf0a1;" horiz-adv-x="1792" d="M1664 896q53 0 90.5 -37.5t37.5 -90.5t-37.5 -90.5t-90.5 -37.5v-384q0 -52 -38 -90t-90 -38q-417 347 -812 380q-58 -19 -91 -66t-31 -100.5t40 -92.5q-20 -33 -23 -65.5t6 -58t33.5 -55t48 -50t61.5 -50.5q-29 -58 -111.5 -83t-168.5 -11.5t-132 55.5q-7 23 -29.5 87.5 t-32 94.5t-23 89t-15 101t3.5 98.5t22 110.5h-122q-66 0 -113 47t-47 113v192q0 66 47 113t113 47h480q435 0 896 384q52 0 90 -38t38 -90v-384zM1536 292v954q-394 -302 -768 -343v-270q377 -42 768 -341z" />
186
+ <glyph unicode="&#xf0a2;" horiz-adv-x="1664" d="M848 -160q0 16 -16 16q-59 0 -101.5 42.5t-42.5 101.5q0 16 -16 16t-16 -16q0 -73 51.5 -124.5t124.5 -51.5q16 0 16 16zM183 128h1298q-164 181 -246.5 411.5t-82.5 484.5q0 256 -320 256t-320 -256q0 -254 -82.5 -484.5t-246.5 -411.5zM1664 128q0 -52 -38 -90t-90 -38 h-448q0 -106 -75 -181t-181 -75t-181 75t-75 181h-448q-52 0 -90 38t-38 90q190 161 287 397.5t97 498.5q0 165 96 262t264 117q-8 18 -8 37q0 40 28 68t68 28t68 -28t28 -68q0 -19 -8 -37q168 -20 264 -117t96 -262q0 -262 97 -498.5t287 -397.5z" />
187
+ <glyph unicode="&#xf0a3;" d="M1376 640l138 -135q30 -28 20 -70q-12 -41 -52 -51l-188 -48l53 -186q12 -41 -19 -70q-29 -31 -70 -19l-186 53l-48 -188q-10 -40 -51 -52q-12 -2 -19 -2q-31 0 -51 22l-135 138l-135 -138q-28 -30 -70 -20q-41 11 -51 52l-48 188l-186 -53q-41 -12 -70 19q-31 29 -19 70 l53 186l-188 48q-40 10 -52 51q-10 42 20 70l138 135l-138 135q-30 28 -20 70q12 41 52 51l188 48l-53 186q-12 41 19 70q29 31 70 19l186 -53l48 188q10 41 51 51q41 12 70 -19l135 -139l135 139q29 30 70 19q41 -10 51 -51l48 -188l186 53q41 12 70 -19q31 -29 19 -70 l-53 -186l188 -48q40 -10 52 -51q10 -42 -20 -70z" />
188
+ <glyph unicode="&#xf0a4;" horiz-adv-x="1792" d="M256 192q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1664 768q0 51 -39 89.5t-89 38.5h-576q0 20 15 48.5t33 55t33 68t15 84.5q0 67 -44.5 97.5t-115.5 30.5q-24 0 -90 -139q-24 -44 -37 -65q-40 -64 -112 -145q-71 -81 -101 -106 q-69 -57 -140 -57h-32v-640h32q72 0 167 -32t193.5 -64t179.5 -32q189 0 189 167q0 26 -5 56q30 16 47.5 52.5t17.5 73.5t-18 69q53 50 53 119q0 25 -10 55.5t-25 47.5h331q52 0 90 38t38 90zM1792 769q0 -105 -75.5 -181t-180.5 -76h-169q-4 -62 -37 -119q3 -21 3 -43 q0 -101 -60 -178q1 -139 -85 -219.5t-227 -80.5q-133 0 -322 69q-164 59 -223 59h-288q-53 0 -90.5 37.5t-37.5 90.5v640q0 53 37.5 90.5t90.5 37.5h288q10 0 21.5 4.5t23.5 14t22.5 18t24 22.5t20.5 21.5t19 21.5t14 17q65 74 100 129q13 21 33 62t37 72t40.5 63t55 49.5 t69.5 17.5q125 0 206.5 -67t81.5 -189q0 -68 -22 -128h374q104 0 180 -76t76 -179z" />
189
+ <glyph unicode="&#xf0a5;" horiz-adv-x="1792" d="M1376 128h32v640h-32q-35 0 -67.5 12t-62.5 37t-50 46t-49 54q-2 3 -3.5 4.5t-4 4.5t-4.5 5q-72 81 -112 145q-14 22 -38 68q-1 3 -10.5 22.5t-18.5 36t-20 35.5t-21.5 30.5t-18.5 11.5q-71 0 -115.5 -30.5t-44.5 -97.5q0 -43 15 -84.5t33 -68t33 -55t15 -48.5h-576 q-50 0 -89 -38.5t-39 -89.5q0 -52 38 -90t90 -38h331q-15 -17 -25 -47.5t-10 -55.5q0 -69 53 -119q-18 -32 -18 -69t17.5 -73.5t47.5 -52.5q-4 -24 -4 -56q0 -85 48.5 -126t135.5 -41q84 0 183 32t194 64t167 32zM1664 192q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45 t45 -19t45 19t19 45zM1792 768v-640q0 -53 -37.5 -90.5t-90.5 -37.5h-288q-59 0 -223 -59q-190 -69 -317 -69q-142 0 -230 77.5t-87 217.5l1 5q-61 76 -61 178q0 22 3 43q-33 57 -37 119h-169q-105 0 -180.5 76t-75.5 181q0 103 76 179t180 76h374q-22 60 -22 128 q0 122 81.5 189t206.5 67q38 0 69.5 -17.5t55 -49.5t40.5 -63t37 -72t33 -62q35 -55 100 -129q2 -3 14 -17t19 -21.5t20.5 -21.5t24 -22.5t22.5 -18t23.5 -14t21.5 -4.5h288q53 0 90.5 -37.5t37.5 -90.5z" />
190
+ <glyph unicode="&#xf0a6;" d="M1280 -64q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1408 700q0 189 -167 189q-26 0 -56 -5q-16 30 -52.5 47.5t-73.5 17.5t-69 -18q-50 53 -119 53q-25 0 -55.5 -10t-47.5 -25v331q0 52 -38 90t-90 38q-51 0 -89.5 -39t-38.5 -89v-576 q-20 0 -48.5 15t-55 33t-68 33t-84.5 15q-67 0 -97.5 -44.5t-30.5 -115.5q0 -24 139 -90q44 -24 65 -37q64 -40 145 -112q81 -71 106 -101q57 -69 57 -140v-32h640v32q0 72 32 167t64 193.5t32 179.5zM1536 705q0 -133 -69 -322q-59 -164 -59 -223v-288q0 -53 -37.5 -90.5 t-90.5 -37.5h-640q-53 0 -90.5 37.5t-37.5 90.5v288q0 10 -4.5 21.5t-14 23.5t-18 22.5t-22.5 24t-21.5 20.5t-21.5 19t-17 14q-74 65 -129 100q-21 13 -62 33t-72 37t-63 40.5t-49.5 55t-17.5 69.5q0 125 67 206.5t189 81.5q68 0 128 -22v374q0 104 76 180t179 76 q105 0 181 -75.5t76 -180.5v-169q62 -4 119 -37q21 3 43 3q101 0 178 -60q139 1 219.5 -85t80.5 -227z" />
191
+ <glyph unicode="&#xf0a7;" d="M1408 576q0 84 -32 183t-64 194t-32 167v32h-640v-32q0 -35 -12 -67.5t-37 -62.5t-46 -50t-54 -49q-9 -8 -14 -12q-81 -72 -145 -112q-22 -14 -68 -38q-3 -1 -22.5 -10.5t-36 -18.5t-35.5 -20t-30.5 -21.5t-11.5 -18.5q0 -71 30.5 -115.5t97.5 -44.5q43 0 84.5 15t68 33 t55 33t48.5 15v-576q0 -50 38.5 -89t89.5 -39q52 0 90 38t38 90v331q46 -35 103 -35q69 0 119 53q32 -18 69 -18t73.5 17.5t52.5 47.5q24 -4 56 -4q85 0 126 48.5t41 135.5zM1280 1344q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1536 580 q0 -142 -77.5 -230t-217.5 -87l-5 1q-76 -61 -178 -61q-22 0 -43 3q-54 -30 -119 -37v-169q0 -105 -76 -180.5t-181 -75.5q-103 0 -179 76t-76 180v374q-54 -22 -128 -22q-121 0 -188.5 81.5t-67.5 206.5q0 38 17.5 69.5t49.5 55t63 40.5t72 37t62 33q55 35 129 100 q3 2 17 14t21.5 19t21.5 20.5t22.5 24t18 22.5t14 23.5t4.5 21.5v288q0 53 37.5 90.5t90.5 37.5h640q53 0 90.5 -37.5t37.5 -90.5v-288q0 -59 59 -223q69 -190 69 -317z" />
192
+ <glyph unicode="&#xf0a8;" d="M1280 576v128q0 26 -19 45t-45 19h-502l189 189q19 19 19 45t-19 45l-91 91q-18 18 -45 18t-45 -18l-362 -362l-91 -91q-18 -18 -18 -45t18 -45l91 -91l362 -362q18 -18 45 -18t45 18l91 91q18 18 18 45t-18 45l-189 189h502q26 0 45 19t19 45zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
193
+ <glyph unicode="&#xf0a9;" d="M1285 640q0 27 -18 45l-91 91l-362 362q-18 18 -45 18t-45 -18l-91 -91q-18 -18 -18 -45t18 -45l189 -189h-502q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h502l-189 -189q-19 -19 -19 -45t19 -45l91 -91q18 -18 45 -18t45 18l362 362l91 91q18 18 18 45zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
194
+ <glyph unicode="&#xf0aa;" d="M1284 641q0 27 -18 45l-362 362l-91 91q-18 18 -45 18t-45 -18l-91 -91l-362 -362q-18 -18 -18 -45t18 -45l91 -91q18 -18 45 -18t45 18l189 189v-502q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v502l189 -189q19 -19 45 -19t45 19l91 91q18 18 18 45zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
195
+ <glyph unicode="&#xf0ab;" d="M1284 639q0 27 -18 45l-91 91q-18 18 -45 18t-45 -18l-189 -189v502q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-502l-189 189q-19 19 -45 19t-45 -19l-91 -91q-18 -18 -18 -45t18 -45l362 -362l91 -91q18 -18 45 -18t45 18l91 91l362 362q18 18 18 45zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
196
+ <glyph unicode="&#xf0ac;" d="M768 1408q209 0 385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103zM1042 887q-2 -1 -9.5 -9.5t-13.5 -9.5q2 0 4.5 5t5 11t3.5 7q6 7 22 15q14 6 52 12q34 8 51 -11 q-2 2 9.5 13t14.5 12q3 2 15 4.5t15 7.5l2 22q-12 -1 -17.5 7t-6.5 21q0 -2 -6 -8q0 7 -4.5 8t-11.5 -1t-9 -1q-10 3 -15 7.5t-8 16.5t-4 15q-2 5 -9.5 10.5t-9.5 10.5q-1 2 -2.5 5.5t-3 6.5t-4 5.5t-5.5 2.5t-7 -5t-7.5 -10t-4.5 -5q-3 2 -6 1.5t-4.5 -1t-4.5 -3t-5 -3.5 q-3 -2 -8.5 -3t-8.5 -2q15 5 -1 11q-10 4 -16 3q9 4 7.5 12t-8.5 14h5q-1 4 -8.5 8.5t-17.5 8.5t-13 6q-8 5 -34 9.5t-33 0.5q-5 -6 -4.5 -10.5t4 -14t3.5 -12.5q1 -6 -5.5 -13t-6.5 -12q0 -7 14 -15.5t10 -21.5q-3 -8 -16 -16t-16 -12q-5 -8 -1.5 -18.5t10.5 -16.5 q2 -2 1.5 -4t-3.5 -4.5t-5.5 -4t-6.5 -3.5l-3 -2q-11 -5 -20.5 6t-13.5 26q-7 25 -16 30q-23 8 -29 -1q-5 13 -41 26q-25 9 -58 4q6 1 0 15q-7 15 -19 12q3 6 4 17.5t1 13.5q3 13 12 23q1 1 7 8.5t9.5 13.5t0.5 6q35 -4 50 11q5 5 11.5 17t10.5 17q9 6 14 5.5t14.5 -5.5 t14.5 -5q14 -1 15.5 11t-7.5 20q12 -1 3 17q-5 7 -8 9q-12 4 -27 -5q-8 -4 2 -8q-1 1 -9.5 -10.5t-16.5 -17.5t-16 5q-1 1 -5.5 13.5t-9.5 13.5q-8 0 -16 -15q3 8 -11 15t-24 8q19 12 -8 27q-7 4 -20.5 5t-19.5 -4q-5 -7 -5.5 -11.5t5 -8t10.5 -5.5t11.5 -4t8.5 -3 q14 -10 8 -14q-2 -1 -8.5 -3.5t-11.5 -4.5t-6 -4q-3 -4 0 -14t-2 -14q-5 5 -9 17.5t-7 16.5q7 -9 -25 -6l-10 1q-4 0 -16 -2t-20.5 -1t-13.5 8q-4 8 0 20q1 4 4 2q-4 3 -11 9.5t-10 8.5q-46 -15 -94 -41q6 -1 12 1q5 2 13 6.5t10 5.5q34 14 42 7l5 5q14 -16 20 -25 q-7 4 -30 1q-20 -6 -22 -12q7 -12 5 -18q-4 3 -11.5 10t-14.5 11t-15 5q-16 0 -22 -1q-146 -80 -235 -222q7 -7 12 -8q4 -1 5 -9t2.5 -11t11.5 3q9 -8 3 -19q1 1 44 -27q19 -17 21 -21q3 -11 -10 -18q-1 2 -9 9t-9 4q-3 -5 0.5 -18.5t10.5 -12.5q-7 0 -9.5 -16t-2.5 -35.5 t-1 -23.5l2 -1q-3 -12 5.5 -34.5t21.5 -19.5q-13 -3 20 -43q6 -8 8 -9q3 -2 12 -7.5t15 -10t10 -10.5q4 -5 10 -22.5t14 -23.5q-2 -6 9.5 -20t10.5 -23q-1 0 -2.5 -1t-2.5 -1q3 -7 15.5 -14t15.5 -13q1 -3 2 -10t3 -11t8 -2q2 20 -24 62q-15 25 -17 29q-3 5 -5.5 15.5 t-4.5 14.5q2 0 6 -1.5t8.5 -3.5t7.5 -4t2 -3q-3 -7 2 -17.5t12 -18.5t17 -19t12 -13q6 -6 14 -19.5t0 -13.5q9 0 20 -10t17 -20q5 -8 8 -26t5 -24q2 -7 8.5 -13.5t12.5 -9.5l16 -8t13 -7q5 -2 18.5 -10.5t21.5 -11.5q10 -4 16 -4t14.5 2.5t13.5 3.5q15 2 29 -15t21 -21 q36 -19 55 -11q-2 -1 0.5 -7.5t8 -15.5t9 -14.5t5.5 -8.5q5 -6 18 -15t18 -15q6 4 7 9q-3 -8 7 -20t18 -10q14 3 14 32q-31 -15 -49 18q0 1 -2.5 5.5t-4 8.5t-2.5 8.5t0 7.5t5 3q9 0 10 3.5t-2 12.5t-4 13q-1 8 -11 20t-12 15q-5 -9 -16 -8t-16 9q0 -1 -1.5 -5.5t-1.5 -6.5 q-13 0 -15 1q1 3 2.5 17.5t3.5 22.5q1 4 5.5 12t7.5 14.5t4 12.5t-4.5 9.5t-17.5 2.5q-19 -1 -26 -20q-1 -3 -3 -10.5t-5 -11.5t-9 -7q-7 -3 -24 -2t-24 5q-13 8 -22.5 29t-9.5 37q0 10 2.5 26.5t3 25t-5.5 24.5q3 2 9 9.5t10 10.5q2 1 4.5 1.5t4.5 0t4 1.5t3 6q-1 1 -4 3 q-3 3 -4 3q7 -3 28.5 1.5t27.5 -1.5q15 -11 22 2q0 1 -2.5 9.5t-0.5 13.5q5 -27 29 -9q3 -3 15.5 -5t17.5 -5q3 -2 7 -5.5t5.5 -4.5t5 0.5t8.5 6.5q10 -14 12 -24q11 -40 19 -44q7 -3 11 -2t4.5 9.5t0 14t-1.5 12.5l-1 8v18l-1 8q-15 3 -18.5 12t1.5 18.5t15 18.5q1 1 8 3.5 t15.5 6.5t12.5 8q21 19 15 35q7 0 11 9q-1 0 -5 3t-7.5 5t-4.5 2q9 5 2 16q5 3 7.5 11t7.5 10q9 -12 21 -2q7 8 1 16q5 7 20.5 10.5t18.5 9.5q7 -2 8 2t1 12t3 12q4 5 15 9t13 5l17 11q3 4 0 4q18 -2 31 11q10 11 -6 20q3 6 -3 9.5t-15 5.5q3 1 11.5 0.5t10.5 1.5 q15 10 -7 16q-17 5 -43 -12zM879 10q206 36 351 189q-3 3 -12.5 4.5t-12.5 3.5q-18 7 -24 8q1 7 -2.5 13t-8 9t-12.5 8t-11 7q-2 2 -7 6t-7 5.5t-7.5 4.5t-8.5 2t-10 -1l-3 -1q-3 -1 -5.5 -2.5t-5.5 -3t-4 -3t0 -2.5q-21 17 -36 22q-5 1 -11 5.5t-10.5 7t-10 1.5t-11.5 -7 q-5 -5 -6 -15t-2 -13q-7 5 0 17.5t2 18.5q-3 6 -10.5 4.5t-12 -4.5t-11.5 -8.5t-9 -6.5t-8.5 -5.5t-8.5 -7.5q-3 -4 -6 -12t-5 -11q-2 4 -11.5 6.5t-9.5 5.5q2 -10 4 -35t5 -38q7 -31 -12 -48q-27 -25 -29 -40q-4 -22 12 -26q0 -7 -8 -20.5t-7 -21.5q0 -6 2 -16z" />
197
+ <glyph unicode="&#xf0ad;" horiz-adv-x="1664" d="M384 64q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1028 484l-682 -682q-37 -37 -90 -37q-52 0 -91 37l-106 108q-38 36 -38 90q0 53 38 91l681 681q39 -98 114.5 -173.5t173.5 -114.5zM1662 919q0 -39 -23 -106q-47 -134 -164.5 -217.5 t-258.5 -83.5q-185 0 -316.5 131.5t-131.5 316.5t131.5 316.5t316.5 131.5q58 0 121.5 -16.5t107.5 -46.5q16 -11 16 -28t-16 -28l-293 -169v-224l193 -107q5 3 79 48.5t135.5 81t70.5 35.5q15 0 23.5 -10t8.5 -25z" />
198
+ <glyph unicode="&#xf0ae;" horiz-adv-x="1792" d="M1024 128h640v128h-640v-128zM640 640h1024v128h-1024v-128zM1280 1152h384v128h-384v-128zM1792 320v-256q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 832v-256q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19 t-19 45v256q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 1344v-256q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h1664q26 0 45 -19t19 -45z" />
199
+ <glyph unicode="&#xf0b0;" horiz-adv-x="1408" d="M1403 1241q17 -41 -14 -70l-493 -493v-742q0 -42 -39 -59q-13 -5 -25 -5q-27 0 -45 19l-256 256q-19 19 -19 45v486l-493 493q-31 29 -14 70q17 39 59 39h1280q42 0 59 -39z" />
200
+ <glyph unicode="&#xf0b1;" horiz-adv-x="1792" d="M640 1280h512v128h-512v-128zM1792 640v-480q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113v480h672v-160q0 -26 19 -45t45 -19h320q26 0 45 19t19 45v160h672zM1024 640v-128h-256v128h256zM1792 1120v-384h-1792v384q0 66 47 113t113 47h352v160q0 40 28 68 t68 28h576q40 0 68 -28t28 -68v-160h352q66 0 113 -47t47 -113z" />
201
+ <glyph unicode="&#xf0b2;" d="M1283 995l-355 -355l355 -355l144 144q29 31 70 14q39 -17 39 -59v-448q0 -26 -19 -45t-45 -19h-448q-42 0 -59 40q-17 39 14 69l144 144l-355 355l-355 -355l144 -144q31 -30 14 -69q-17 -40 -59 -40h-448q-26 0 -45 19t-19 45v448q0 42 40 59q39 17 69 -14l144 -144 l355 355l-355 355l-144 -144q-19 -19 -45 -19q-12 0 -24 5q-40 17 -40 59v448q0 26 19 45t45 19h448q42 0 59 -40q17 -39 -14 -69l-144 -144l355 -355l355 355l-144 144q-31 30 -14 69q17 40 59 40h448q26 0 45 -19t19 -45v-448q0 -42 -39 -59q-13 -5 -25 -5q-26 0 -45 19z " />
202
+ <glyph unicode="&#xf0c0;" horiz-adv-x="1920" d="M593 640q-162 -5 -265 -128h-134q-82 0 -138 40.5t-56 118.5q0 353 124 353q6 0 43.5 -21t97.5 -42.5t119 -21.5q67 0 133 23q-5 -37 -5 -66q0 -139 81 -256zM1664 3q0 -120 -73 -189.5t-194 -69.5h-874q-121 0 -194 69.5t-73 189.5q0 53 3.5 103.5t14 109t26.5 108.5 t43 97.5t62 81t85.5 53.5t111.5 20q10 0 43 -21.5t73 -48t107 -48t135 -21.5t135 21.5t107 48t73 48t43 21.5q61 0 111.5 -20t85.5 -53.5t62 -81t43 -97.5t26.5 -108.5t14 -109t3.5 -103.5zM640 1280q0 -106 -75 -181t-181 -75t-181 75t-75 181t75 181t181 75t181 -75 t75 -181zM1344 896q0 -159 -112.5 -271.5t-271.5 -112.5t-271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5t271.5 -112.5t112.5 -271.5zM1920 671q0 -78 -56 -118.5t-138 -40.5h-134q-103 123 -265 128q81 117 81 256q0 29 -5 66q66 -23 133 -23q59 0 119 21.5t97.5 42.5 t43.5 21q124 0 124 -353zM1792 1280q0 -106 -75 -181t-181 -75t-181 75t-75 181t75 181t181 75t181 -75t75 -181z" />
203
+ <glyph unicode="&#xf0c1;" horiz-adv-x="1664" d="M1456 320q0 40 -28 68l-208 208q-28 28 -68 28q-42 0 -72 -32q3 -3 19 -18.5t21.5 -21.5t15 -19t13 -25.5t3.5 -27.5q0 -40 -28 -68t-68 -28q-15 0 -27.5 3.5t-25.5 13t-19 15t-21.5 21.5t-18.5 19q-33 -31 -33 -73q0 -40 28 -68l206 -207q27 -27 68 -27q40 0 68 26 l147 146q28 28 28 67zM753 1025q0 40 -28 68l-206 207q-28 28 -68 28q-39 0 -68 -27l-147 -146q-28 -28 -28 -67q0 -40 28 -68l208 -208q27 -27 68 -27q42 0 72 31q-3 3 -19 18.5t-21.5 21.5t-15 19t-13 25.5t-3.5 27.5q0 40 28 68t68 28q15 0 27.5 -3.5t25.5 -13t19 -15 t21.5 -21.5t18.5 -19q33 31 33 73zM1648 320q0 -120 -85 -203l-147 -146q-83 -83 -203 -83q-121 0 -204 85l-206 207q-83 83 -83 203q0 123 88 209l-88 88q-86 -88 -208 -88q-120 0 -204 84l-208 208q-84 84 -84 204t85 203l147 146q83 83 203 83q121 0 204 -85l206 -207 q83 -83 83 -203q0 -123 -88 -209l88 -88q86 88 208 88q120 0 204 -84l208 -208q84 -84 84 -204z" />
204
+ <glyph unicode="&#xf0c2;" horiz-adv-x="1920" d="M1920 384q0 -159 -112.5 -271.5t-271.5 -112.5h-1088q-185 0 -316.5 131.5t-131.5 316.5q0 132 71 241.5t187 163.5q-2 28 -2 43q0 212 150 362t362 150q158 0 286.5 -88t187.5 -230q70 62 166 62q106 0 181 -75t75 -181q0 -75 -41 -138q129 -30 213 -134.5t84 -239.5z " />
205
+ <glyph unicode="&#xf0c3;" horiz-adv-x="1664" d="M1527 88q56 -89 21.5 -152.5t-140.5 -63.5h-1152q-106 0 -140.5 63.5t21.5 152.5l503 793v399h-64q-26 0 -45 19t-19 45t19 45t45 19h512q26 0 45 -19t19 -45t-19 -45t-45 -19h-64v-399zM748 813l-272 -429h712l-272 429l-20 31v37v399h-128v-399v-37z" />
206
+ <glyph unicode="&#xf0c4;" horiz-adv-x="1792" d="M960 640q26 0 45 -19t19 -45t-19 -45t-45 -19t-45 19t-19 45t19 45t45 19zM1260 576l507 -398q28 -20 25 -56q-5 -35 -35 -51l-128 -64q-13 -7 -29 -7q-17 0 -31 8l-690 387l-110 -66q-8 -4 -12 -5q14 -49 10 -97q-7 -77 -56 -147.5t-132 -123.5q-132 -84 -277 -84 q-136 0 -222 78q-90 84 -79 207q7 76 56 147t131 124q132 84 278 84q83 0 151 -31q9 13 22 22l122 73l-122 73q-13 9 -22 22q-68 -31 -151 -31q-146 0 -278 84q-82 53 -131 124t-56 147q-5 59 15.5 113t63.5 93q85 79 222 79q145 0 277 -84q83 -52 132 -123t56 -148 q4 -48 -10 -97q4 -1 12 -5l110 -66l690 387q14 8 31 8q16 0 29 -7l128 -64q30 -16 35 -51q3 -36 -25 -56zM579 836q46 42 21 108t-106 117q-92 59 -192 59q-74 0 -113 -36q-46 -42 -21 -108t106 -117q92 -59 192 -59q74 0 113 36zM494 91q81 51 106 117t-21 108 q-39 36 -113 36q-100 0 -192 -59q-81 -51 -106 -117t21 -108q39 -36 113 -36q100 0 192 59zM672 704l96 -58v11q0 36 33 56l14 8l-79 47l-26 -26q-3 -3 -10 -11t-12 -12q-2 -2 -4 -3.5t-3 -2.5zM896 480l96 -32l736 576l-128 64l-768 -431v-113l-160 -96l9 -8q2 -2 7 -6 q4 -4 11 -12t11 -12l26 -26zM1600 64l128 64l-520 408l-177 -138q-2 -3 -13 -7z" />
207
+ <glyph unicode="&#xf0c5;" horiz-adv-x="1792" d="M1696 1152q40 0 68 -28t28 -68v-1216q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v288h-544q-40 0 -68 28t-28 68v672q0 40 20 88t48 76l408 408q28 28 76 48t88 20h416q40 0 68 -28t28 -68v-328q68 40 128 40h416zM1152 939l-299 -299h299v299zM512 1323l-299 -299 h299v299zM708 676l316 316v416h-384v-416q0 -40 -28 -68t-68 -28h-416v-640h512v256q0 40 20 88t48 76zM1664 -128v1152h-384v-416q0 -40 -28 -68t-68 -28h-416v-640h896z" />
208
+ <glyph unicode="&#xf0c6;" horiz-adv-x="1408" d="M1404 151q0 -117 -79 -196t-196 -79q-135 0 -235 100l-777 776q-113 115 -113 271q0 159 110 270t269 111q158 0 273 -113l605 -606q10 -10 10 -22q0 -16 -30.5 -46.5t-46.5 -30.5q-13 0 -23 10l-606 607q-79 77 -181 77q-106 0 -179 -75t-73 -181q0 -105 76 -181 l776 -777q63 -63 145 -63q64 0 106 42t42 106q0 82 -63 145l-581 581q-26 24 -60 24q-29 0 -48 -19t-19 -48q0 -32 25 -59l410 -410q10 -10 10 -22q0 -16 -31 -47t-47 -31q-12 0 -22 10l-410 410q-63 61 -63 149q0 82 57 139t139 57q88 0 149 -63l581 -581q100 -98 100 -235 z" />
209
+ <glyph unicode="&#xf0c7;" d="M384 0h768v384h-768v-384zM1280 0h128v896q0 14 -10 38.5t-20 34.5l-281 281q-10 10 -34 20t-39 10v-416q0 -40 -28 -68t-68 -28h-576q-40 0 -68 28t-28 68v416h-128v-1280h128v416q0 40 28 68t68 28h832q40 0 68 -28t28 -68v-416zM896 928v320q0 13 -9.5 22.5t-22.5 9.5 h-192q-13 0 -22.5 -9.5t-9.5 -22.5v-320q0 -13 9.5 -22.5t22.5 -9.5h192q13 0 22.5 9.5t9.5 22.5zM1536 896v-928q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1344q0 40 28 68t68 28h928q40 0 88 -20t76 -48l280 -280q28 -28 48 -76t20 -88z" />
210
+ <glyph unicode="&#xf0c8;" d="M1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
211
+ <glyph unicode="&#xf0c9;" d="M1536 192v-128q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1408q26 0 45 -19t19 -45zM1536 704v-128q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1408q26 0 45 -19t19 -45zM1536 1216v-128q0 -26 -19 -45 t-45 -19h-1408q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1408q26 0 45 -19t19 -45z" />
212
+ <glyph unicode="&#xf0ca;" horiz-adv-x="1792" d="M384 128q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM384 640q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM1792 224v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1216q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5 t22.5 9.5h1216q13 0 22.5 -9.5t9.5 -22.5zM384 1152q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM1792 736v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1216q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1216q13 0 22.5 -9.5t9.5 -22.5z M1792 1248v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1216q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1216q13 0 22.5 -9.5t9.5 -22.5z" />
213
+ <glyph unicode="&#xf0cb;" horiz-adv-x="1792" d="M381 -84q0 -80 -54.5 -126t-135.5 -46q-106 0 -172 66l57 88q49 -45 106 -45q29 0 50.5 14.5t21.5 42.5q0 64 -105 56l-26 56q8 10 32.5 43.5t42.5 54t37 38.5v1q-16 0 -48.5 -1t-48.5 -1v-53h-106v152h333v-88l-95 -115q51 -12 81 -49t30 -88zM383 543v-159h-362 q-6 36 -6 54q0 51 23.5 93t56.5 68t66 47.5t56.5 43.5t23.5 45q0 25 -14.5 38.5t-39.5 13.5q-46 0 -81 -58l-85 59q24 51 71.5 79.5t105.5 28.5q73 0 123 -41.5t50 -112.5q0 -50 -34 -91.5t-75 -64.5t-75.5 -50.5t-35.5 -52.5h127v60h105zM1792 224v-192q0 -13 -9.5 -22.5 t-22.5 -9.5h-1216q-13 0 -22.5 9.5t-9.5 22.5v192q0 14 9 23t23 9h1216q13 0 22.5 -9.5t9.5 -22.5zM384 1123v-99h-335v99h107q0 41 0.5 122t0.5 121v12h-2q-8 -17 -50 -54l-71 76l136 127h106v-404h108zM1792 736v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1216q-13 0 -22.5 9.5 t-9.5 22.5v192q0 14 9 23t23 9h1216q13 0 22.5 -9.5t9.5 -22.5zM1792 1248v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1216q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1216q13 0 22.5 -9.5t9.5 -22.5z" />
214
+ <glyph unicode="&#xf0cc;" horiz-adv-x="1792" d="M1760 640q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-1728q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h1728zM483 704q-28 35 -51 80q-48 97 -48 188q0 181 134 309q133 127 393 127q50 0 167 -19q66 -12 177 -48q10 -38 21 -118q14 -123 14 -183q0 -18 -5 -45l-12 -3l-84 6 l-14 2q-50 149 -103 205q-88 91 -210 91q-114 0 -182 -59q-67 -58 -67 -146q0 -73 66 -140t279 -129q69 -20 173 -66q58 -28 95 -52h-743zM990 448h411q7 -39 7 -92q0 -111 -41 -212q-23 -55 -71 -104q-37 -35 -109 -81q-80 -48 -153 -66q-80 -21 -203 -21q-114 0 -195 23 l-140 40q-57 16 -72 28q-8 8 -8 22v13q0 108 -2 156q-1 30 0 68l2 37v44l102 2q15 -34 30 -71t22.5 -56t12.5 -27q35 -57 80 -94q43 -36 105 -57q59 -22 132 -22q64 0 139 27q77 26 122 86q47 61 47 129q0 84 -81 157q-34 29 -137 71z" />
215
+ <glyph unicode="&#xf0cd;" d="M48 1313q-37 2 -45 4l-3 88q13 1 40 1q60 0 112 -4q132 -7 166 -7q86 0 168 3q116 4 146 5q56 0 86 2l-1 -14l2 -64v-9q-60 -9 -124 -9q-60 0 -79 -25q-13 -14 -13 -132q0 -13 0.5 -32.5t0.5 -25.5l1 -229l14 -280q6 -124 51 -202q35 -59 96 -92q88 -47 177 -47 q104 0 191 28q56 18 99 51q48 36 65 64q36 56 53 114q21 73 21 229q0 79 -3.5 128t-11 122.5t-13.5 159.5l-4 59q-5 67 -24 88q-34 35 -77 34l-100 -2l-14 3l2 86h84l205 -10q76 -3 196 10l18 -2q6 -38 6 -51q0 -7 -4 -31q-45 -12 -84 -13q-73 -11 -79 -17q-15 -15 -15 -41 q0 -7 1.5 -27t1.5 -31q8 -19 22 -396q6 -195 -15 -304q-15 -76 -41 -122q-38 -65 -112 -123q-75 -57 -182 -89q-109 -33 -255 -33q-167 0 -284 46q-119 47 -179 122q-61 76 -83 195q-16 80 -16 237v333q0 188 -17 213q-25 36 -147 39zM1536 -96v64q0 14 -9 23t-23 9h-1472 q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h1472q14 0 23 9t9 23z" />
216
+ <glyph unicode="&#xf0ce;" horiz-adv-x="1664" d="M512 160v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM512 544v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1024 160v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23 v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM512 928v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1024 544v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1536 160v192 q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1024 928v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1536 544v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192 q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1536 928v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1664 1248v-1088q0 -66 -47 -113t-113 -47h-1344q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h1344q66 0 113 -47t47 -113 z" />
217
+ <glyph unicode="&#xf0d0;" horiz-adv-x="1664" d="M1190 955l293 293l-107 107l-293 -293zM1637 1248q0 -27 -18 -45l-1286 -1286q-18 -18 -45 -18t-45 18l-198 198q-18 18 -18 45t18 45l1286 1286q18 18 45 18t45 -18l198 -198q18 -18 18 -45zM286 1438l98 -30l-98 -30l-30 -98l-30 98l-98 30l98 30l30 98zM636 1276 l196 -60l-196 -60l-60 -196l-60 196l-196 60l196 60l60 196zM1566 798l98 -30l-98 -30l-30 -98l-30 98l-98 30l98 30l30 98zM926 1438l98 -30l-98 -30l-30 -98l-30 98l-98 30l98 30l30 98z" />
218
+ <glyph unicode="&#xf0d1;" horiz-adv-x="1792" d="M640 128q0 52 -38 90t-90 38t-90 -38t-38 -90t38 -90t90 -38t90 38t38 90zM256 640h384v256h-158q-13 0 -22 -9l-195 -195q-9 -9 -9 -22v-30zM1536 128q0 52 -38 90t-90 38t-90 -38t-38 -90t38 -90t90 -38t90 38t38 90zM1792 1216v-1024q0 -15 -4 -26.5t-13.5 -18.5 t-16.5 -11.5t-23.5 -6t-22.5 -2t-25.5 0t-22.5 0.5q0 -106 -75 -181t-181 -75t-181 75t-75 181h-384q0 -106 -75 -181t-181 -75t-181 75t-75 181h-64q-3 0 -22.5 -0.5t-25.5 0t-22.5 2t-23.5 6t-16.5 11.5t-13.5 18.5t-4 26.5q0 26 19 45t45 19v320q0 8 -0.5 35t0 38 t2.5 34.5t6.5 37t14 30.5t22.5 30l198 198q19 19 50.5 32t58.5 13h160v192q0 26 19 45t45 19h1024q26 0 45 -19t19 -45z" />
219
+ <glyph unicode="&#xf0d2;" d="M1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103q-111 0 -218 32q59 93 78 164q9 34 54 211q20 -39 73 -67.5t114 -28.5q121 0 216 68.5t147 188.5t52 270q0 114 -59.5 214t-172.5 163t-255 63q-105 0 -196 -29t-154.5 -77t-109 -110.5t-67 -129.5t-21.5 -134 q0 -104 40 -183t117 -111q30 -12 38 20q2 7 8 31t8 30q6 23 -11 43q-51 61 -51 151q0 151 104.5 259.5t273.5 108.5q151 0 235.5 -82t84.5 -213q0 -170 -68.5 -289t-175.5 -119q-61 0 -98 43.5t-23 104.5q8 35 26.5 93.5t30 103t11.5 75.5q0 50 -27 83t-77 33 q-62 0 -105 -57t-43 -142q0 -73 25 -122l-99 -418q-17 -70 -13 -177q-206 91 -333 281t-127 423q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
220
+ <glyph unicode="&#xf0d3;" d="M1248 1408q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-725q85 122 108 210q9 34 53 209q21 -39 73.5 -67t112.5 -28q181 0 295.5 147.5t114.5 373.5q0 84 -35 162.5t-96.5 139t-152.5 97t-197 36.5q-104 0 -194.5 -28.5t-153 -76.5 t-107.5 -109.5t-66.5 -128t-21.5 -132.5q0 -102 39.5 -180t116.5 -110q13 -5 23.5 0t14.5 19q10 44 15 61q6 23 -11 42q-50 62 -50 150q0 150 103.5 256.5t270.5 106.5q149 0 232.5 -81t83.5 -210q0 -168 -67.5 -286t-173.5 -118q-60 0 -97 43.5t-23 103.5q8 34 26.5 92.5 t29.5 102t11 74.5q0 49 -26.5 81.5t-75.5 32.5q-61 0 -103.5 -56.5t-42.5 -139.5q0 -72 24 -121l-98 -414q-24 -100 -7 -254h-183q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960z" />
221
+ <glyph unicode="&#xf0d4;" d="M678 -57q0 -38 -10 -71h-380q-95 0 -171.5 56.5t-103.5 147.5q24 45 69 77.5t100 49.5t107 24t107 7q32 0 49 -2q6 -4 30.5 -21t33 -23t31 -23t32 -25.5t27.5 -25.5t26.5 -29.5t21 -30.5t17.5 -34.5t9.5 -36t4.5 -40.5zM385 294q-234 -7 -385 -85v433q103 -118 273 -118 q32 0 70 5q-21 -61 -21 -86q0 -67 63 -149zM558 805q0 -100 -43.5 -160.5t-140.5 -60.5q-51 0 -97 26t-78 67.5t-56 93.5t-35.5 104t-11.5 99q0 96 51.5 165t144.5 69q66 0 119 -41t84 -104t47 -130t16 -128zM1536 896v-736q0 -119 -84.5 -203.5t-203.5 -84.5h-468 q39 73 39 157q0 66 -22 122.5t-55.5 93t-72 71t-72 59.5t-55.5 54.5t-22 59.5q0 36 23 68t56 61.5t65.5 64.5t55.5 93t23 131t-26.5 145.5t-75.5 118.5q-6 6 -14 11t-12.5 7.5t-10 9.5t-10.5 17h135l135 64h-437q-138 0 -244.5 -38.5t-182.5 -133.5q0 126 81 213t207 87h960 q119 0 203.5 -84.5t84.5 -203.5v-96h-256v256h-128v-256h-256v-128h256v-256h128v256h256z" />
222
+ <glyph unicode="&#xf0d5;" horiz-adv-x="1664" d="M876 71q0 21 -4.5 40.5t-9.5 36t-17.5 34.5t-21 30.5t-26.5 29.5t-27.5 25.5t-32 25.5t-31 23t-33 23t-30.5 21q-17 2 -50 2q-54 0 -106 -7t-108 -25t-98 -46t-69 -75t-27 -107q0 -68 35.5 -121.5t93 -84t120.5 -45.5t127 -15q59 0 112.5 12.5t100.5 39t74.5 73.5 t27.5 110zM756 933q0 60 -16.5 127.5t-47 130.5t-84 104t-119.5 41q-93 0 -144 -69t-51 -165q0 -47 11.5 -99t35.5 -104t56 -93.5t78 -67.5t97 -26q97 0 140.5 60.5t43.5 160.5zM625 1408h437l-135 -79h-135q71 -45 110 -126t39 -169q0 -74 -23 -131.5t-56 -92.5t-66 -64.5 t-56 -61t-23 -67.5q0 -26 16.5 -51t43 -48t58.5 -48t64 -55.5t58.5 -66t43 -85t16.5 -106.5q0 -160 -140 -282q-152 -131 -420 -131q-59 0 -119.5 10t-122 33.5t-108.5 58t-77 89t-30 121.5q0 61 37 135q32 64 96 110.5t145 71t155 36t150 13.5q-64 83 -64 149q0 12 2 23.5 t5 19.5t8 21.5t7 21.5q-40 -5 -70 -5q-149 0 -255.5 98t-106.5 246q0 140 95 250.5t234 141.5q94 20 187 20zM1664 1152v-128h-256v-256h-128v256h-256v128h256v256h128v-256h256z" />
223
+ <glyph unicode="&#xf0d6;" horiz-adv-x="1920" d="M768 384h384v96h-128v448h-114l-148 -137l77 -80q42 37 55 57h2v-288h-128v-96zM1280 640q0 -70 -21 -142t-59.5 -134t-101.5 -101t-138 -39t-138 39t-101.5 101t-59.5 134t-21 142t21 142t59.5 134t101.5 101t138 39t138 -39t101.5 -101t59.5 -134t21 -142zM1792 384 v512q-106 0 -181 75t-75 181h-1152q0 -106 -75 -181t-181 -75v-512q106 0 181 -75t75 -181h1152q0 106 75 181t181 75zM1920 1216v-1152q0 -26 -19 -45t-45 -19h-1792q-26 0 -45 19t-19 45v1152q0 26 19 45t45 19h1792q26 0 45 -19t19 -45z" />
224
+ <glyph unicode="&#xf0d7;" horiz-adv-x="1024" d="M1024 832q0 -26 -19 -45l-448 -448q-19 -19 -45 -19t-45 19l-448 448q-19 19 -19 45t19 45t45 19h896q26 0 45 -19t19 -45z" />
225
+ <glyph unicode="&#xf0d8;" horiz-adv-x="1024" d="M1024 320q0 -26 -19 -45t-45 -19h-896q-26 0 -45 19t-19 45t19 45l448 448q19 19 45 19t45 -19l448 -448q19 -19 19 -45z" />
226
+ <glyph unicode="&#xf0d9;" horiz-adv-x="640" d="M640 1088v-896q0 -26 -19 -45t-45 -19t-45 19l-448 448q-19 19 -19 45t19 45l448 448q19 19 45 19t45 -19t19 -45z" />
227
+ <glyph unicode="&#xf0da;" horiz-adv-x="640" d="M576 640q0 -26 -19 -45l-448 -448q-19 -19 -45 -19t-45 19t-19 45v896q0 26 19 45t45 19t45 -19l448 -448q19 -19 19 -45z" />
228
+ <glyph unicode="&#xf0db;" horiz-adv-x="1664" d="M160 0h608v1152h-640v-1120q0 -13 9.5 -22.5t22.5 -9.5zM1536 32v1120h-640v-1152h608q13 0 22.5 9.5t9.5 22.5zM1664 1248v-1216q0 -66 -47 -113t-113 -47h-1344q-66 0 -113 47t-47 113v1216q0 66 47 113t113 47h1344q66 0 113 -47t47 -113z" />
229
+ <glyph unicode="&#xf0dc;" horiz-adv-x="1024" d="M1024 448q0 -26 -19 -45l-448 -448q-19 -19 -45 -19t-45 19l-448 448q-19 19 -19 45t19 45t45 19h896q26 0 45 -19t19 -45zM1024 832q0 -26 -19 -45t-45 -19h-896q-26 0 -45 19t-19 45t19 45l448 448q19 19 45 19t45 -19l448 -448q19 -19 19 -45z" />
230
+ <glyph unicode="&#xf0dd;" horiz-adv-x="1024" d="M1024 448q0 -26 -19 -45l-448 -448q-19 -19 -45 -19t-45 19l-448 448q-19 19 -19 45t19 45t45 19h896q26 0 45 -19t19 -45z" />
231
+ <glyph unicode="&#xf0de;" horiz-adv-x="1024" d="M1024 832q0 -26 -19 -45t-45 -19h-896q-26 0 -45 19t-19 45t19 45l448 448q19 19 45 19t45 -19l448 -448q19 -19 19 -45z" />
232
+ <glyph unicode="&#xf0e0;" horiz-adv-x="1792" d="M1792 826v-794q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113v794q44 -49 101 -87q362 -246 497 -345q57 -42 92.5 -65.5t94.5 -48t110 -24.5h1h1q51 0 110 24.5t94.5 48t92.5 65.5q170 123 498 345q57 39 100 87zM1792 1120q0 -79 -49 -151t-122 -123 q-376 -261 -468 -325q-10 -7 -42.5 -30.5t-54 -38t-52 -32.5t-57.5 -27t-50 -9h-1h-1q-23 0 -50 9t-57.5 27t-52 32.5t-54 38t-42.5 30.5q-91 64 -262 182.5t-205 142.5q-62 42 -117 115.5t-55 136.5q0 78 41.5 130t118.5 52h1472q65 0 112.5 -47t47.5 -113z" />
233
+ <glyph unicode="&#xf0e1;" d="M349 911v-991h-330v991h330zM370 1217q1 -73 -50.5 -122t-135.5 -49h-2q-82 0 -132 49t-50 122q0 74 51.5 122.5t134.5 48.5t133 -48.5t51 -122.5zM1536 488v-568h-329v530q0 105 -40.5 164.5t-126.5 59.5q-63 0 -105.5 -34.5t-63.5 -85.5q-11 -30 -11 -81v-553h-329 q2 399 2 647t-1 296l-1 48h329v-144h-2q20 32 41 56t56.5 52t87 43.5t114.5 15.5q171 0 275 -113.5t104 -332.5z" />
234
+ <glyph unicode="&#xf0e2;" d="M1536 640q0 -156 -61 -298t-164 -245t-245 -164t-298 -61q-172 0 -327 72.5t-264 204.5q-7 10 -6.5 22.5t8.5 20.5l137 138q10 9 25 9q16 -2 23 -12q73 -95 179 -147t225 -52q104 0 198.5 40.5t163.5 109.5t109.5 163.5t40.5 198.5t-40.5 198.5t-109.5 163.5 t-163.5 109.5t-198.5 40.5q-98 0 -188 -35.5t-160 -101.5l137 -138q31 -30 14 -69q-17 -40 -59 -40h-448q-26 0 -45 19t-19 45v448q0 42 40 59q39 17 69 -14l130 -129q107 101 244.5 156.5t284.5 55.5q156 0 298 -61t245 -164t164 -245t61 -298z" />
235
+ <glyph unicode="&#xf0e3;" horiz-adv-x="1792" d="M1771 0q0 -53 -37 -90l-107 -108q-39 -37 -91 -37q-53 0 -90 37l-363 364q-38 36 -38 90q0 53 43 96l-256 256l-126 -126q-14 -14 -34 -14t-34 14q2 -2 12.5 -12t12.5 -13t10 -11.5t10 -13.5t6 -13.5t5.5 -16.5t1.5 -18q0 -38 -28 -68q-3 -3 -16.5 -18t-19 -20.5 t-18.5 -16.5t-22 -15.5t-22 -9t-26 -4.5q-40 0 -68 28l-408 408q-28 28 -28 68q0 13 4.5 26t9 22t15.5 22t16.5 18.5t20.5 19t18 16.5q30 28 68 28q10 0 18 -1.5t16.5 -5.5t13.5 -6t13.5 -10t11.5 -10t13 -12.5t12 -12.5q-14 14 -14 34t14 34l348 348q14 14 34 14t34 -14 q-2 2 -12.5 12t-12.5 13t-10 11.5t-10 13.5t-6 13.5t-5.5 16.5t-1.5 18q0 38 28 68q3 3 16.5 18t19 20.5t18.5 16.5t22 15.5t22 9t26 4.5q40 0 68 -28l408 -408q28 -28 28 -68q0 -13 -4.5 -26t-9 -22t-15.5 -22t-16.5 -18.5t-20.5 -19t-18 -16.5q-30 -28 -68 -28 q-10 0 -18 1.5t-16.5 5.5t-13.5 6t-13.5 10t-11.5 10t-13 12.5t-12 12.5q14 -14 14 -34t-14 -34l-126 -126l256 -256q43 43 96 43q52 0 91 -37l363 -363q37 -39 37 -91z" />
236
+ <glyph unicode="&#xf0e4;" horiz-adv-x="1792" d="M384 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM576 832q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1004 351l101 382q6 26 -7.5 48.5t-38.5 29.5 t-48 -6.5t-30 -39.5l-101 -382q-60 -5 -107 -43.5t-63 -98.5q-20 -77 20 -146t117 -89t146 20t89 117q16 60 -6 117t-72 91zM1664 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1024 1024q0 53 -37.5 90.5 t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1472 832q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1792 384q0 -261 -141 -483q-19 -29 -54 -29h-1402q-35 0 -54 29 q-141 221 -141 483q0 182 71 348t191 286t286 191t348 71t348 -71t286 -191t191 -286t71 -348z" />
237
+ <glyph unicode="&#xf0e5;" horiz-adv-x="1792" d="M896 1152q-204 0 -381.5 -69.5t-282 -187.5t-104.5 -255q0 -112 71.5 -213.5t201.5 -175.5l87 -50l-27 -96q-24 -91 -70 -172q152 63 275 171l43 38l57 -6q69 -8 130 -8q204 0 381.5 69.5t282 187.5t104.5 255t-104.5 255t-282 187.5t-381.5 69.5zM1792 640 q0 -174 -120 -321.5t-326 -233t-450 -85.5q-70 0 -145 8q-198 -175 -460 -242q-49 -14 -114 -22h-5q-15 0 -27 10.5t-16 27.5v1q-3 4 -0.5 12t2 10t4.5 9.5l6 9t7 8.5t8 9q7 8 31 34.5t34.5 38t31 39.5t32.5 51t27 59t26 76q-157 89 -247.5 220t-90.5 281q0 174 120 321.5 t326 233t450 85.5t450 -85.5t326 -233t120 -321.5z" />
238
+ <glyph unicode="&#xf0e6;" horiz-adv-x="1792" d="M704 1152q-153 0 -286 -52t-211.5 -141t-78.5 -191q0 -82 53 -158t149 -132l97 -56l-35 -84q34 20 62 39l44 31l53 -10q78 -14 153 -14q153 0 286 52t211.5 141t78.5 191t-78.5 191t-211.5 141t-286 52zM704 1280q191 0 353.5 -68.5t256.5 -186.5t94 -257t-94 -257 t-256.5 -186.5t-353.5 -68.5q-86 0 -176 16q-124 -88 -278 -128q-36 -9 -86 -16h-3q-11 0 -20.5 8t-11.5 21q-1 3 -1 6.5t0.5 6.5t2 6l2.5 5t3.5 5.5t4 5t4.5 5t4 4.5q5 6 23 25t26 29.5t22.5 29t25 38.5t20.5 44q-124 72 -195 177t-71 224q0 139 94 257t256.5 186.5 t353.5 68.5zM1526 111q10 -24 20.5 -44t25 -38.5t22.5 -29t26 -29.5t23 -25q1 -1 4 -4.5t4.5 -5t4 -5t3.5 -5.5l2.5 -5t2 -6t0.5 -6.5t-1 -6.5q-3 -14 -13 -22t-22 -7q-50 7 -86 16q-154 40 -278 128q-90 -16 -176 -16q-271 0 -472 132q58 -4 88 -4q161 0 309 45t264 129 q125 92 192 212t67 254q0 77 -23 152q129 -71 204 -178t75 -230q0 -120 -71 -224.5t-195 -176.5z" />
239
+ <glyph unicode="&#xf0e7;" horiz-adv-x="896" d="M885 970q18 -20 7 -44l-540 -1157q-13 -25 -42 -25q-4 0 -14 2q-17 5 -25.5 19t-4.5 30l197 808l-406 -101q-4 -1 -12 -1q-18 0 -31 11q-18 15 -13 39l201 825q4 14 16 23t28 9h328q19 0 32 -12.5t13 -29.5q0 -8 -5 -18l-171 -463l396 98q8 2 12 2q19 0 34 -15z" />
240
+ <glyph unicode="&#xf0e8;" horiz-adv-x="1792" d="M1792 288v-320q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h96v192h-512v-192h96q40 0 68 -28t28 -68v-320q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h96v192h-512v-192h96q40 0 68 -28t28 -68v-320 q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h96v192q0 52 38 90t90 38h512v192h-96q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h320q40 0 68 -28t28 -68v-320q0 -40 -28 -68t-68 -28h-96v-192h512q52 0 90 -38t38 -90v-192h96q40 0 68 -28t28 -68 z" />
241
+ <glyph unicode="&#xf0e9;" horiz-adv-x="1664" d="M896 708v-580q0 -104 -76 -180t-180 -76t-180 76t-76 180q0 26 19 45t45 19t45 -19t19 -45q0 -50 39 -89t89 -39t89 39t39 89v580q33 11 64 11t64 -11zM1664 681q0 -13 -9.5 -22.5t-22.5 -9.5q-11 0 -23 10q-49 46 -93 69t-102 23q-68 0 -128 -37t-103 -97 q-7 -10 -17.5 -28t-14.5 -24q-11 -17 -28 -17q-18 0 -29 17q-4 6 -14.5 24t-17.5 28q-43 60 -102.5 97t-127.5 37t-127.5 -37t-102.5 -97q-7 -10 -17.5 -28t-14.5 -24q-11 -17 -29 -17q-17 0 -28 17q-4 6 -14.5 24t-17.5 28q-43 60 -103 97t-128 37q-58 0 -102 -23t-93 -69 q-12 -10 -23 -10q-13 0 -22.5 9.5t-9.5 22.5q0 5 1 7q45 183 172.5 319.5t298 204.5t360.5 68q140 0 274.5 -40t246.5 -113.5t194.5 -187t115.5 -251.5q1 -2 1 -7zM896 1408v-98q-42 2 -64 2t-64 -2v98q0 26 19 45t45 19t45 -19t19 -45z" />
242
+ <glyph unicode="&#xf0ea;" horiz-adv-x="1792" d="M768 -128h896v640h-416q-40 0 -68 28t-28 68v416h-384v-1152zM1024 1312v64q0 13 -9.5 22.5t-22.5 9.5h-704q-13 0 -22.5 -9.5t-9.5 -22.5v-64q0 -13 9.5 -22.5t22.5 -9.5h704q13 0 22.5 9.5t9.5 22.5zM1280 640h299l-299 299v-299zM1792 512v-672q0 -40 -28 -68t-68 -28 h-960q-40 0 -68 28t-28 68v160h-544q-40 0 -68 28t-28 68v1344q0 40 28 68t68 28h1088q40 0 68 -28t28 -68v-328q21 -13 36 -28l408 -408q28 -28 48 -76t20 -88z" />
243
+ <glyph unicode="&#xf0eb;" horiz-adv-x="1024" d="M736 960q0 -13 -9.5 -22.5t-22.5 -9.5t-22.5 9.5t-9.5 22.5q0 46 -54 71t-106 25q-13 0 -22.5 9.5t-9.5 22.5t9.5 22.5t22.5 9.5q50 0 99.5 -16t87 -54t37.5 -90zM896 960q0 72 -34.5 134t-90 101.5t-123 62t-136.5 22.5t-136.5 -22.5t-123 -62t-90 -101.5t-34.5 -134 q0 -101 68 -180q10 -11 30.5 -33t30.5 -33q128 -153 141 -298h228q13 145 141 298q10 11 30.5 33t30.5 33q68 79 68 180zM1024 960q0 -155 -103 -268q-45 -49 -74.5 -87t-59.5 -95.5t-34 -107.5q47 -28 47 -82q0 -37 -25 -64q25 -27 25 -64q0 -52 -45 -81q13 -23 13 -47 q0 -46 -31.5 -71t-77.5 -25q-20 -44 -60 -70t-87 -26t-87 26t-60 70q-46 0 -77.5 25t-31.5 71q0 24 13 47q-45 29 -45 81q0 37 25 64q-25 27 -25 64q0 54 47 82q-4 50 -34 107.5t-59.5 95.5t-74.5 87q-103 113 -103 268q0 99 44.5 184.5t117 142t164 89t186.5 32.5 t186.5 -32.5t164 -89t117 -142t44.5 -184.5z" />
244
+ <glyph unicode="&#xf0ec;" horiz-adv-x="1792" d="M1792 352v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1376v-192q0 -13 -9.5 -22.5t-22.5 -9.5q-12 0 -24 10l-319 320q-9 9 -9 22q0 14 9 23l320 320q9 9 23 9q13 0 22.5 -9.5t9.5 -22.5v-192h1376q13 0 22.5 -9.5t9.5 -22.5zM1792 896q0 -14 -9 -23l-320 -320q-9 -9 -23 -9 q-13 0 -22.5 9.5t-9.5 22.5v192h-1376q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1376v192q0 14 9 23t23 9q12 0 24 -10l319 -319q9 -9 9 -23z" />
245
+ <glyph unicode="&#xf0ed;" horiz-adv-x="1920" d="M1280 608q0 14 -9 23t-23 9h-224v352q0 13 -9.5 22.5t-22.5 9.5h-192q-13 0 -22.5 -9.5t-9.5 -22.5v-352h-224q-13 0 -22.5 -9.5t-9.5 -22.5q0 -14 9 -23l352 -352q9 -9 23 -9t23 9l351 351q10 12 10 24zM1920 384q0 -159 -112.5 -271.5t-271.5 -112.5h-1088 q-185 0 -316.5 131.5t-131.5 316.5q0 130 70 240t188 165q-2 30 -2 43q0 212 150 362t362 150q156 0 285.5 -87t188.5 -231q71 62 166 62q106 0 181 -75t75 -181q0 -76 -41 -138q130 -31 213.5 -135.5t83.5 -238.5z" />
246
+ <glyph unicode="&#xf0ee;" horiz-adv-x="1920" d="M1280 672q0 14 -9 23l-352 352q-9 9 -23 9t-23 -9l-351 -351q-10 -12 -10 -24q0 -14 9 -23t23 -9h224v-352q0 -13 9.5 -22.5t22.5 -9.5h192q13 0 22.5 9.5t9.5 22.5v352h224q13 0 22.5 9.5t9.5 22.5zM1920 384q0 -159 -112.5 -271.5t-271.5 -112.5h-1088 q-185 0 -316.5 131.5t-131.5 316.5q0 130 70 240t188 165q-2 30 -2 43q0 212 150 362t362 150q156 0 285.5 -87t188.5 -231q71 62 166 62q106 0 181 -75t75 -181q0 -76 -41 -138q130 -31 213.5 -135.5t83.5 -238.5z" />
247
+ <glyph unicode="&#xf0f0;" horiz-adv-x="1408" d="M384 192q0 -26 -19 -45t-45 -19t-45 19t-19 45t19 45t45 19t45 -19t19 -45zM1408 131q0 -121 -73 -190t-194 -69h-874q-121 0 -194 69t-73 190q0 68 5.5 131t24 138t47.5 132.5t81 103t120 60.5q-22 -52 -22 -120v-203q-58 -20 -93 -70t-35 -111q0 -80 56 -136t136 -56 t136 56t56 136q0 61 -35.5 111t-92.5 70v203q0 62 25 93q132 -104 295 -104t295 104q25 -31 25 -93v-64q-106 0 -181 -75t-75 -181v-89q-32 -29 -32 -71q0 -40 28 -68t68 -28t68 28t28 68q0 42 -32 71v89q0 52 38 90t90 38t90 -38t38 -90v-89q-32 -29 -32 -71q0 -40 28 -68 t68 -28t68 28t28 68q0 42 -32 71v89q0 68 -34.5 127.5t-93.5 93.5q0 10 0.5 42.5t0 48t-2.5 41.5t-7 47t-13 40q68 -15 120 -60.5t81 -103t47.5 -132.5t24 -138t5.5 -131zM1088 1024q0 -159 -112.5 -271.5t-271.5 -112.5t-271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5 t271.5 -112.5t112.5 -271.5z" />
248
+ <glyph unicode="&#xf0f1;" horiz-adv-x="1408" d="M1280 832q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1408 832q0 -62 -35.5 -111t-92.5 -70v-395q0 -159 -131.5 -271.5t-316.5 -112.5t-316.5 112.5t-131.5 271.5v132q-164 20 -274 128t-110 252v512q0 26 19 45t45 19q6 0 16 -2q17 30 47 48 t65 18q53 0 90.5 -37.5t37.5 -90.5t-37.5 -90.5t-90.5 -37.5q-33 0 -64 18v-402q0 -106 94 -181t226 -75t226 75t94 181v402q-31 -18 -64 -18q-53 0 -90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5q35 0 65 -18t47 -48q10 2 16 2q26 0 45 -19t19 -45v-512q0 -144 -110 -252 t-274 -128v-132q0 -106 94 -181t226 -75t226 75t94 181v395q-57 21 -92.5 70t-35.5 111q0 80 56 136t136 56t136 -56t56 -136z" />
249
+ <glyph unicode="&#xf0f2;" horiz-adv-x="1792" d="M640 1152h512v128h-512v-128zM288 1152v-1280h-64q-92 0 -158 66t-66 158v832q0 92 66 158t158 66h64zM1408 1152v-1280h-1024v1280h128v160q0 40 28 68t68 28h576q40 0 68 -28t28 -68v-160h128zM1792 928v-832q0 -92 -66 -158t-158 -66h-64v1280h64q92 0 158 -66 t66 -158z" />
250
+ <glyph unicode="&#xf0f3;" horiz-adv-x="1664" d="M848 -160q0 16 -16 16q-59 0 -101.5 42.5t-42.5 101.5q0 16 -16 16t-16 -16q0 -73 51.5 -124.5t124.5 -51.5q16 0 16 16zM1664 128q0 -52 -38 -90t-90 -38h-448q0 -106 -75 -181t-181 -75t-181 75t-75 181h-448q-52 0 -90 38t-38 90q190 161 287 397.5t97 498.5 q0 165 96 262t264 117q-8 18 -8 37q0 40 28 68t68 28t68 -28t28 -68q0 -19 -8 -37q168 -20 264 -117t96 -262q0 -262 97 -498.5t287 -397.5z" />
251
+ <glyph unicode="&#xf0f4;" horiz-adv-x="1920" d="M1664 896q0 80 -56 136t-136 56h-64v-384h64q80 0 136 56t56 136zM0 128h1792q0 -106 -75 -181t-181 -75h-1280q-106 0 -181 75t-75 181zM1856 896q0 -159 -112.5 -271.5t-271.5 -112.5h-64v-32q0 -92 -66 -158t-158 -66h-704q-92 0 -158 66t-66 158v736q0 26 19 45 t45 19h1152q159 0 271.5 -112.5t112.5 -271.5z" />
252
+ <glyph unicode="&#xf0f5;" horiz-adv-x="1408" d="M640 1472v-640q0 -61 -35.5 -111t-92.5 -70v-779q0 -52 -38 -90t-90 -38h-128q-52 0 -90 38t-38 90v779q-57 20 -92.5 70t-35.5 111v640q0 26 19 45t45 19t45 -19t19 -45v-416q0 -26 19 -45t45 -19t45 19t19 45v416q0 26 19 45t45 19t45 -19t19 -45v-416q0 -26 19 -45 t45 -19t45 19t19 45v416q0 26 19 45t45 19t45 -19t19 -45zM1408 1472v-1600q0 -52 -38 -90t-90 -38h-128q-52 0 -90 38t-38 90v512h-224q-13 0 -22.5 9.5t-9.5 22.5v800q0 132 94 226t226 94h256q26 0 45 -19t19 -45z" />
253
+ <glyph unicode="&#xf0f6;" horiz-adv-x="1280" d="M1024 352v-64q0 -14 -9 -23t-23 -9h-704q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h704q14 0 23 -9t9 -23zM1024 608v-64q0 -14 -9 -23t-23 -9h-704q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h704q14 0 23 -9t9 -23zM128 0h1024v768h-416q-40 0 -68 28t-28 68v416h-512v-1280z M768 896h376q-10 29 -22 41l-313 313q-12 12 -41 22v-376zM1280 864v-896q0 -40 -28 -68t-68 -28h-1088q-40 0 -68 28t-28 68v1344q0 40 28 68t68 28h640q40 0 88 -20t76 -48l312 -312q28 -28 48 -76t20 -88z" />
254
+ <glyph unicode="&#xf0f7;" horiz-adv-x="1408" d="M384 224v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M640 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M1152 224v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM896 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M640 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 992v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M1152 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM896 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M640 992v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 1248v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M1152 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM896 992v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M640 1248v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM1152 992v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M896 1248v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM1152 1248v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M896 -128h384v1536h-1152v-1536h384v224q0 13 9.5 22.5t22.5 9.5h320q13 0 22.5 -9.5t9.5 -22.5v-224zM1408 1472v-1664q0 -26 -19 -45t-45 -19h-1280q-26 0 -45 19t-19 45v1664q0 26 19 45t45 19h1280q26 0 45 -19t19 -45z" />
255
+ <glyph unicode="&#xf0f8;" horiz-adv-x="1408" d="M384 224v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M640 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M1152 224v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM896 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M640 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM1152 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M896 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM1152 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M896 -128h384v1152h-256v-32q0 -40 -28 -68t-68 -28h-448q-40 0 -68 28t-28 68v32h-256v-1152h384v224q0 13 9.5 22.5t22.5 9.5h320q13 0 22.5 -9.5t9.5 -22.5v-224zM896 1056v320q0 13 -9.5 22.5t-22.5 9.5h-64q-13 0 -22.5 -9.5t-9.5 -22.5v-96h-128v96q0 13 -9.5 22.5 t-22.5 9.5h-64q-13 0 -22.5 -9.5t-9.5 -22.5v-320q0 -13 9.5 -22.5t22.5 -9.5h64q13 0 22.5 9.5t9.5 22.5v96h128v-96q0 -13 9.5 -22.5t22.5 -9.5h64q13 0 22.5 9.5t9.5 22.5zM1408 1088v-1280q0 -26 -19 -45t-45 -19h-1280q-26 0 -45 19t-19 45v1280q0 26 19 45t45 19h320 v288q0 40 28 68t68 28h448q40 0 68 -28t28 -68v-288h320q26 0 45 -19t19 -45z" />
256
+ <glyph unicode="&#xf0f9;" horiz-adv-x="1920" d="M640 128q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM256 640h384v256h-158q-14 -2 -22 -9l-195 -195q-7 -12 -9 -22v-30zM1536 128q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5 t90.5 37.5t37.5 90.5zM1664 800v192q0 14 -9 23t-23 9h-224v224q0 14 -9 23t-23 9h-192q-14 0 -23 -9t-9 -23v-224h-224q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h224v-224q0 -14 9 -23t23 -9h192q14 0 23 9t9 23v224h224q14 0 23 9t9 23zM1920 1344v-1152 q0 -26 -19 -45t-45 -19h-192q0 -106 -75 -181t-181 -75t-181 75t-75 181h-384q0 -106 -75 -181t-181 -75t-181 75t-75 181h-128q-26 0 -45 19t-19 45t19 45t45 19v416q0 26 13 58t32 51l198 198q19 19 51 32t58 13h160v320q0 26 19 45t45 19h1152q26 0 45 -19t19 -45z" />
257
+ <glyph unicode="&#xf0fa;" horiz-adv-x="1792" d="M1280 416v192q0 14 -9 23t-23 9h-224v224q0 14 -9 23t-23 9h-192q-14 0 -23 -9t-9 -23v-224h-224q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h224v-224q0 -14 9 -23t23 -9h192q14 0 23 9t9 23v224h224q14 0 23 9t9 23zM640 1152h512v128h-512v-128zM256 1152v-1280h-32 q-92 0 -158 66t-66 158v832q0 92 66 158t158 66h32zM1440 1152v-1280h-1088v1280h160v160q0 40 28 68t68 28h576q40 0 68 -28t28 -68v-160h160zM1792 928v-832q0 -92 -66 -158t-158 -66h-32v1280h32q92 0 158 -66t66 -158z" />
258
+ <glyph unicode="&#xf0fb;" horiz-adv-x="1920" d="M1920 576q-1 -32 -288 -96l-352 -32l-224 -64h-64l-293 -352h69q26 0 45 -4.5t19 -11.5t-19 -11.5t-45 -4.5h-96h-160h-64v32h64v416h-160l-192 -224h-96l-32 32v192h32v32h128v8l-192 24v128l192 24v8h-128v32h-32v192l32 32h96l192 -224h160v416h-64v32h64h160h96 q26 0 45 -4.5t19 -11.5t-19 -11.5t-45 -4.5h-69l293 -352h64l224 -64l352 -32q261 -58 287 -93z" />
259
+ <glyph unicode="&#xf0fc;" horiz-adv-x="1664" d="M640 640v384h-256v-256q0 -53 37.5 -90.5t90.5 -37.5h128zM1664 192v-192h-1152v192l128 192h-128q-159 0 -271.5 112.5t-112.5 271.5v320l-64 64l32 128h480l32 128h960l32 -192l-64 -32v-800z" />
260
+ <glyph unicode="&#xf0fd;" d="M1280 192v896q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-320h-512v320q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-896q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v320h512v-320q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1536 1120v-960 q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
261
+ <glyph unicode="&#xf0fe;" d="M1280 576v128q0 26 -19 45t-45 19h-320v320q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-320h-320q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h320v-320q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v320h320q26 0 45 19t19 45zM1536 1120v-960 q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
262
+ <glyph unicode="&#xf100;" horiz-adv-x="1024" d="M627 160q0 -13 -10 -23l-50 -50q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l50 -50q10 -10 10 -23t-10 -23l-393 -393l393 -393q10 -10 10 -23zM1011 160q0 -13 -10 -23l-50 -50q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23 t10 23l466 466q10 10 23 10t23 -10l50 -50q10 -10 10 -23t-10 -23l-393 -393l393 -393q10 -10 10 -23z" />
263
+ <glyph unicode="&#xf101;" horiz-adv-x="1024" d="M595 576q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l393 393l-393 393q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l466 -466q10 -10 10 -23zM979 576q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23 l393 393l-393 393q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l466 -466q10 -10 10 -23z" />
264
+ <glyph unicode="&#xf102;" horiz-adv-x="1152" d="M1075 224q0 -13 -10 -23l-50 -50q-10 -10 -23 -10t-23 10l-393 393l-393 -393q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l466 -466q10 -10 10 -23zM1075 608q0 -13 -10 -23l-50 -50q-10 -10 -23 -10t-23 10l-393 393l-393 -393 q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l466 -466q10 -10 10 -23z" />
265
+ <glyph unicode="&#xf103;" horiz-adv-x="1152" d="M1075 672q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l393 -393l393 393q10 10 23 10t23 -10l50 -50q10 -10 10 -23zM1075 1056q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23 t10 23l50 50q10 10 23 10t23 -10l393 -393l393 393q10 10 23 10t23 -10l50 -50q10 -10 10 -23z" />
266
+ <glyph unicode="&#xf104;" horiz-adv-x="640" d="M627 992q0 -13 -10 -23l-393 -393l393 -393q10 -10 10 -23t-10 -23l-50 -50q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l50 -50q10 -10 10 -23z" />
267
+ <glyph unicode="&#xf105;" horiz-adv-x="640" d="M595 576q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l393 393l-393 393q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l466 -466q10 -10 10 -23z" />
268
+ <glyph unicode="&#xf106;" horiz-adv-x="1152" d="M1075 352q0 -13 -10 -23l-50 -50q-10 -10 -23 -10t-23 10l-393 393l-393 -393q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l466 -466q10 -10 10 -23z" />
269
+ <glyph unicode="&#xf107;" horiz-adv-x="1152" d="M1075 800q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l393 -393l393 393q10 10 23 10t23 -10l50 -50q10 -10 10 -23z" />
270
+ <glyph unicode="&#xf108;" horiz-adv-x="1920" d="M1792 544v832q0 13 -9.5 22.5t-22.5 9.5h-1600q-13 0 -22.5 -9.5t-9.5 -22.5v-832q0 -13 9.5 -22.5t22.5 -9.5h1600q13 0 22.5 9.5t9.5 22.5zM1920 1376v-1088q0 -66 -47 -113t-113 -47h-544q0 -37 16 -77.5t32 -71t16 -43.5q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19 t-19 45q0 14 16 44t32 70t16 78h-544q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h1600q66 0 113 -47t47 -113z" />
271
+ <glyph unicode="&#xf109;" horiz-adv-x="1920" d="M416 256q-66 0 -113 47t-47 113v704q0 66 47 113t113 47h1088q66 0 113 -47t47 -113v-704q0 -66 -47 -113t-113 -47h-1088zM384 1120v-704q0 -13 9.5 -22.5t22.5 -9.5h1088q13 0 22.5 9.5t9.5 22.5v704q0 13 -9.5 22.5t-22.5 9.5h-1088q-13 0 -22.5 -9.5t-9.5 -22.5z M1760 192h160v-96q0 -40 -47 -68t-113 -28h-1600q-66 0 -113 28t-47 68v96h160h1600zM1040 96q16 0 16 16t-16 16h-160q-16 0 -16 -16t16 -16h160z" />
272
+ <glyph unicode="&#xf10a;" horiz-adv-x="1152" d="M640 128q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1024 288v960q0 13 -9.5 22.5t-22.5 9.5h-832q-13 0 -22.5 -9.5t-9.5 -22.5v-960q0 -13 9.5 -22.5t22.5 -9.5h832q13 0 22.5 9.5t9.5 22.5zM1152 1248v-1088q0 -66 -47 -113t-113 -47h-832 q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h832q66 0 113 -47t47 -113z" />
273
+ <glyph unicode="&#xf10b;" horiz-adv-x="768" d="M464 128q0 33 -23.5 56.5t-56.5 23.5t-56.5 -23.5t-23.5 -56.5t23.5 -56.5t56.5 -23.5t56.5 23.5t23.5 56.5zM672 288v704q0 13 -9.5 22.5t-22.5 9.5h-512q-13 0 -22.5 -9.5t-9.5 -22.5v-704q0 -13 9.5 -22.5t22.5 -9.5h512q13 0 22.5 9.5t9.5 22.5zM480 1136 q0 16 -16 16h-160q-16 0 -16 -16t16 -16h160q16 0 16 16zM768 1152v-1024q0 -52 -38 -90t-90 -38h-512q-52 0 -90 38t-38 90v1024q0 52 38 90t90 38h512q52 0 90 -38t38 -90z" />
274
+ <glyph unicode="&#xf10c;" d="M768 1184q-148 0 -273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273t-73 273t-198 198t-273 73zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103 t279.5 -279.5t103 -385.5z" />
275
+ <glyph unicode="&#xf10d;" horiz-adv-x="1664" d="M768 576v-384q0 -80 -56 -136t-136 -56h-384q-80 0 -136 56t-56 136v704q0 104 40.5 198.5t109.5 163.5t163.5 109.5t198.5 40.5h64q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-64q-106 0 -181 -75t-75 -181v-32q0 -40 28 -68t68 -28h224q80 0 136 -56t56 -136z M1664 576v-384q0 -80 -56 -136t-136 -56h-384q-80 0 -136 56t-56 136v704q0 104 40.5 198.5t109.5 163.5t163.5 109.5t198.5 40.5h64q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-64q-106 0 -181 -75t-75 -181v-32q0 -40 28 -68t68 -28h224q80 0 136 -56t56 -136z" />
276
+ <glyph unicode="&#xf10e;" horiz-adv-x="1664" d="M768 1216v-704q0 -104 -40.5 -198.5t-109.5 -163.5t-163.5 -109.5t-198.5 -40.5h-64q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h64q106 0 181 75t75 181v32q0 40 -28 68t-68 28h-224q-80 0 -136 56t-56 136v384q0 80 56 136t136 56h384q80 0 136 -56t56 -136zM1664 1216 v-704q0 -104 -40.5 -198.5t-109.5 -163.5t-163.5 -109.5t-198.5 -40.5h-64q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h64q106 0 181 75t75 181v32q0 40 -28 68t-68 28h-224q-80 0 -136 56t-56 136v384q0 80 56 136t136 56h384q80 0 136 -56t56 -136z" />
277
+ <glyph unicode="&#xf110;" horiz-adv-x="1568" d="M496 192q0 -60 -42.5 -102t-101.5 -42q-60 0 -102 42t-42 102t42 102t102 42q59 0 101.5 -42t42.5 -102zM928 0q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM320 640q0 -66 -47 -113t-113 -47t-113 47t-47 113 t47 113t113 47t113 -47t47 -113zM1360 192q0 -46 -33 -79t-79 -33t-79 33t-33 79t33 79t79 33t79 -33t33 -79zM528 1088q0 -73 -51.5 -124.5t-124.5 -51.5t-124.5 51.5t-51.5 124.5t51.5 124.5t124.5 51.5t124.5 -51.5t51.5 -124.5zM992 1280q0 -80 -56 -136t-136 -56 t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM1536 640q0 -40 -28 -68t-68 -28t-68 28t-28 68t28 68t68 28t68 -28t28 -68zM1328 1088q0 -33 -23.5 -56.5t-56.5 -23.5t-56.5 23.5t-23.5 56.5t23.5 56.5t56.5 23.5t56.5 -23.5t23.5 -56.5z" />
278
+ <glyph unicode="&#xf111;" d="M1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
279
+ <glyph unicode="&#xf112;" horiz-adv-x="1792" d="M1792 416q0 -166 -127 -451q-3 -7 -10.5 -24t-13.5 -30t-13 -22q-12 -17 -28 -17q-15 0 -23.5 10t-8.5 25q0 9 2.5 26.5t2.5 23.5q5 68 5 123q0 101 -17.5 181t-48.5 138.5t-80 101t-105.5 69.5t-133 42.5t-154 21.5t-175.5 6h-224v-256q0 -26 -19 -45t-45 -19t-45 19 l-512 512q-19 19 -19 45t19 45l512 512q19 19 45 19t45 -19t19 -45v-256h224q713 0 875 -403q53 -134 53 -333z" />
280
+ <glyph unicode="&#xf113;" horiz-adv-x="1664" d="M640 320q0 -40 -12.5 -82t-43 -76t-72.5 -34t-72.5 34t-43 76t-12.5 82t12.5 82t43 76t72.5 34t72.5 -34t43 -76t12.5 -82zM1280 320q0 -40 -12.5 -82t-43 -76t-72.5 -34t-72.5 34t-43 76t-12.5 82t12.5 82t43 76t72.5 34t72.5 -34t43 -76t12.5 -82zM1440 320 q0 120 -69 204t-187 84q-41 0 -195 -21q-71 -11 -157 -11t-157 11q-152 21 -195 21q-118 0 -187 -84t-69 -204q0 -88 32 -153.5t81 -103t122 -60t140 -29.5t149 -7h168q82 0 149 7t140 29.5t122 60t81 103t32 153.5zM1664 496q0 -207 -61 -331q-38 -77 -105.5 -133t-141 -86 t-170 -47.5t-171.5 -22t-167 -4.5q-78 0 -142 3t-147.5 12.5t-152.5 30t-137 51.5t-121 81t-86 115q-62 123 -62 331q0 237 136 396q-27 82 -27 170q0 116 51 218q108 0 190 -39.5t189 -123.5q147 35 309 35q148 0 280 -32q105 82 187 121t189 39q51 -102 51 -218 q0 -87 -27 -168q136 -160 136 -398z" />
281
+ <glyph unicode="&#xf114;" horiz-adv-x="1664" d="M1536 224v704q0 40 -28 68t-68 28h-704q-40 0 -68 28t-28 68v64q0 40 -28 68t-68 28h-320q-40 0 -68 -28t-28 -68v-960q0 -40 28 -68t68 -28h1216q40 0 68 28t28 68zM1664 928v-704q0 -92 -66 -158t-158 -66h-1216q-92 0 -158 66t-66 158v960q0 92 66 158t158 66h320 q92 0 158 -66t66 -158v-32h672q92 0 158 -66t66 -158z" />
282
+ <glyph unicode="&#xf115;" horiz-adv-x="1920" d="M1781 605q0 35 -53 35h-1088q-40 0 -85.5 -21.5t-71.5 -52.5l-294 -363q-18 -24 -18 -40q0 -35 53 -35h1088q40 0 86 22t71 53l294 363q18 22 18 39zM640 768h768v160q0 40 -28 68t-68 28h-576q-40 0 -68 28t-28 68v64q0 40 -28 68t-68 28h-320q-40 0 -68 -28t-28 -68 v-853l256 315q44 53 116 87.5t140 34.5zM1909 605q0 -62 -46 -120l-295 -363q-43 -53 -116 -87.5t-140 -34.5h-1088q-92 0 -158 66t-66 158v960q0 92 66 158t158 66h320q92 0 158 -66t66 -158v-32h544q92 0 158 -66t66 -158v-160h192q54 0 99 -24.5t67 -70.5q15 -32 15 -68z " />
283
+ <glyph unicode="&#xf116;" horiz-adv-x="1792" />
284
+ <glyph unicode="&#xf117;" horiz-adv-x="1792" />
285
+ <glyph unicode="&#xf118;" d="M1134 461q-37 -121 -138 -195t-228 -74t-228 74t-138 195q-8 25 4 48.5t38 31.5q25 8 48.5 -4t31.5 -38q25 -80 92.5 -129.5t151.5 -49.5t151.5 49.5t92.5 129.5q8 26 32 38t49 4t37 -31.5t4 -48.5zM640 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5 t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1152 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1408 640q0 130 -51 248.5t-136.5 204t-204 136.5t-248.5 51t-248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5 t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
286
+ <glyph unicode="&#xf119;" d="M1134 307q8 -25 -4 -48.5t-37 -31.5t-49 4t-32 38q-25 80 -92.5 129.5t-151.5 49.5t-151.5 -49.5t-92.5 -129.5q-8 -26 -31.5 -38t-48.5 -4q-26 8 -38 31.5t-4 48.5q37 121 138 195t228 74t228 -74t138 -195zM640 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5 t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1152 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1408 640q0 130 -51 248.5t-136.5 204t-204 136.5t-248.5 51t-248.5 -51t-204 -136.5t-136.5 -204 t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
287
+ <glyph unicode="&#xf11a;" d="M1152 448q0 -26 -19 -45t-45 -19h-640q-26 0 -45 19t-19 45t19 45t45 19h640q26 0 45 -19t19 -45zM640 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1152 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5 t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1408 640q0 130 -51 248.5t-136.5 204t-204 136.5t-248.5 51t-248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
288
+ <glyph unicode="&#xf11b;" horiz-adv-x="1920" d="M832 448v128q0 14 -9 23t-23 9h-192v192q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-192h-192q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h192v-192q0 -14 9 -23t23 -9h128q14 0 23 9t9 23v192h192q14 0 23 9t9 23zM1408 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5 t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1664 640q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1920 512q0 -212 -150 -362t-362 -150q-192 0 -338 128h-220q-146 -128 -338 -128q-212 0 -362 150 t-150 362t150 362t362 150h896q212 0 362 -150t150 -362z" />
289
+ <glyph unicode="&#xf11c;" horiz-adv-x="1920" d="M384 368v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM512 624v-96q0 -16 -16 -16h-224q-16 0 -16 16v96q0 16 16 16h224q16 0 16 -16zM384 880v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1408 368v-96q0 -16 -16 -16 h-864q-16 0 -16 16v96q0 16 16 16h864q16 0 16 -16zM768 624v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM640 880v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1024 624v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16 h96q16 0 16 -16zM896 880v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1280 624v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1664 368v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1152 880v-96 q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1408 880v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1664 880v-352q0 -16 -16 -16h-224q-16 0 -16 16v96q0 16 16 16h112v240q0 16 16 16h96q16 0 16 -16zM1792 128v896h-1664v-896 h1664zM1920 1024v-896q0 -53 -37.5 -90.5t-90.5 -37.5h-1664q-53 0 -90.5 37.5t-37.5 90.5v896q0 53 37.5 90.5t90.5 37.5h1664q53 0 90.5 -37.5t37.5 -90.5z" />
290
+ <glyph unicode="&#xf11d;" horiz-adv-x="1792" d="M1664 491v616q-169 -91 -306 -91q-82 0 -145 32q-100 49 -184 76.5t-178 27.5q-173 0 -403 -127v-599q245 113 433 113q55 0 103.5 -7.5t98 -26t77 -31t82.5 -39.5l28 -14q44 -22 101 -22q120 0 293 92zM320 1280q0 -35 -17.5 -64t-46.5 -46v-1266q0 -14 -9 -23t-23 -9 h-64q-14 0 -23 9t-9 23v1266q-29 17 -46.5 46t-17.5 64q0 53 37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1792 1216v-763q0 -39 -35 -57q-10 -5 -17 -9q-218 -116 -369 -116q-88 0 -158 35l-28 14q-64 33 -99 48t-91 29t-114 14q-102 0 -235.5 -44t-228.5 -102 q-15 -9 -33 -9q-16 0 -32 8q-32 19 -32 56v742q0 35 31 55q35 21 78.5 42.5t114 52t152.5 49.5t155 19q112 0 209 -31t209 -86q38 -19 89 -19q122 0 310 112q22 12 31 17q31 16 62 -2q31 -20 31 -55z" />
291
+ <glyph unicode="&#xf11e;" horiz-adv-x="1792" d="M832 536v192q-181 -16 -384 -117v-185q205 96 384 110zM832 954v197q-172 -8 -384 -126v-189q215 111 384 118zM1664 491v184q-235 -116 -384 -71v224q-20 6 -39 15q-5 3 -33 17t-34.5 17t-31.5 15t-34.5 15.5t-32.5 13t-36 12.5t-35 8.5t-39.5 7.5t-39.5 4t-44 2 q-23 0 -49 -3v-222h19q102 0 192.5 -29t197.5 -82q19 -9 39 -15v-188q42 -17 91 -17q120 0 293 92zM1664 918v189q-169 -91 -306 -91q-45 0 -78 8v-196q148 -42 384 90zM320 1280q0 -35 -17.5 -64t-46.5 -46v-1266q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v1266 q-29 17 -46.5 46t-17.5 64q0 53 37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1792 1216v-763q0 -39 -35 -57q-10 -5 -17 -9q-218 -116 -369 -116q-88 0 -158 35l-28 14q-64 33 -99 48t-91 29t-114 14q-102 0 -235.5 -44t-228.5 -102q-15 -9 -33 -9q-16 0 -32 8 q-32 19 -32 56v742q0 35 31 55q35 21 78.5 42.5t114 52t152.5 49.5t155 19q112 0 209 -31t209 -86q38 -19 89 -19q122 0 310 112q22 12 31 17q31 16 62 -2q31 -20 31 -55z" />
292
+ <glyph unicode="&#xf120;" horiz-adv-x="1664" d="M585 553l-466 -466q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l393 393l-393 393q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l466 -466q10 -10 10 -23t-10 -23zM1664 96v-64q0 -14 -9 -23t-23 -9h-960q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h960q14 0 23 -9 t9 -23z" />
293
+ <glyph unicode="&#xf121;" horiz-adv-x="1920" d="M617 137l-50 -50q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l50 -50q10 -10 10 -23t-10 -23l-393 -393l393 -393q10 -10 10 -23t-10 -23zM1208 1204l-373 -1291q-4 -13 -15.5 -19.5t-23.5 -2.5l-62 17q-13 4 -19.5 15.5t-2.5 24.5 l373 1291q4 13 15.5 19.5t23.5 2.5l62 -17q13 -4 19.5 -15.5t2.5 -24.5zM1865 553l-466 -466q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l393 393l-393 393q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l466 -466q10 -10 10 -23t-10 -23z" />
294
+ <glyph unicode="&#xf122;" horiz-adv-x="1792" d="M640 454v-70q0 -42 -39 -59q-13 -5 -25 -5q-27 0 -45 19l-512 512q-19 19 -19 45t19 45l512 512q29 31 70 14q39 -17 39 -59v-69l-397 -398q-19 -19 -19 -45t19 -45zM1792 416q0 -58 -17 -133.5t-38.5 -138t-48 -125t-40.5 -90.5l-20 -40q-8 -17 -28 -17q-6 0 -9 1 q-25 8 -23 34q43 400 -106 565q-64 71 -170.5 110.5t-267.5 52.5v-251q0 -42 -39 -59q-13 -5 -25 -5q-27 0 -45 19l-512 512q-19 19 -19 45t19 45l512 512q29 31 70 14q39 -17 39 -59v-262q411 -28 599 -221q169 -173 169 -509z" />
295
+ <glyph unicode="&#xf123;" horiz-adv-x="1664" d="M1186 579l257 250l-356 52l-66 10l-30 60l-159 322v-963l59 -31l318 -168l-60 355l-12 66zM1638 841l-363 -354l86 -500q5 -33 -6 -51.5t-34 -18.5q-17 0 -40 12l-449 236l-449 -236q-23 -12 -40 -12q-23 0 -34 18.5t-6 51.5l86 500l-364 354q-32 32 -23 59.5t54 34.5 l502 73l225 455q20 41 49 41q28 0 49 -41l225 -455l502 -73q45 -7 54 -34.5t-24 -59.5z" />
296
+ <glyph unicode="&#xf124;" horiz-adv-x="1408" d="M1401 1187l-640 -1280q-17 -35 -57 -35q-5 0 -15 2q-22 5 -35.5 22.5t-13.5 39.5v576h-576q-22 0 -39.5 13.5t-22.5 35.5t4 42t29 30l1280 640q13 7 29 7q27 0 45 -19q15 -14 18.5 -34.5t-6.5 -39.5z" />
297
+ <glyph unicode="&#xf125;" horiz-adv-x="1664" d="M557 256h595v595zM512 301l595 595h-595v-595zM1664 224v-192q0 -14 -9 -23t-23 -9h-224v-224q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v224h-864q-14 0 -23 9t-9 23v864h-224q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h224v224q0 14 9 23t23 9h192q14 0 23 -9t9 -23 v-224h851l246 247q10 9 23 9t23 -9q9 -10 9 -23t-9 -23l-247 -246v-851h224q14 0 23 -9t9 -23z" />
298
+ <glyph unicode="&#xf126;" horiz-adv-x="1024" d="M288 64q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM288 1216q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM928 1088q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM1024 1088q0 -52 -26 -96.5t-70 -69.5 q-2 -287 -226 -414q-68 -38 -203 -81q-128 -40 -169.5 -71t-41.5 -100v-26q44 -25 70 -69.5t26 -96.5q0 -80 -56 -136t-136 -56t-136 56t-56 136q0 52 26 96.5t70 69.5v820q-44 25 -70 69.5t-26 96.5q0 80 56 136t136 56t136 -56t56 -136q0 -52 -26 -96.5t-70 -69.5v-497 q54 26 154 57q55 17 87.5 29.5t70.5 31t59 39.5t40.5 51t28 69.5t8.5 91.5q-44 25 -70 69.5t-26 96.5q0 80 56 136t136 56t136 -56t56 -136z" />
299
+ <glyph unicode="&#xf127;" horiz-adv-x="1664" d="M439 265l-256 -256q-10 -9 -23 -9q-12 0 -23 9q-9 10 -9 23t9 23l256 256q10 9 23 9t23 -9q9 -10 9 -23t-9 -23zM608 224v-320q0 -14 -9 -23t-23 -9t-23 9t-9 23v320q0 14 9 23t23 9t23 -9t9 -23zM384 448q0 -14 -9 -23t-23 -9h-320q-14 0 -23 9t-9 23t9 23t23 9h320 q14 0 23 -9t9 -23zM1648 320q0 -120 -85 -203l-147 -146q-83 -83 -203 -83q-121 0 -204 85l-334 335q-21 21 -42 56l239 18l273 -274q27 -27 68 -27.5t68 26.5l147 146q28 28 28 67q0 40 -28 68l-274 275l18 239q35 -21 56 -42l336 -336q84 -86 84 -204zM1031 1044l-239 -18 l-273 274q-28 28 -68 28q-39 0 -68 -27l-147 -146q-28 -28 -28 -67q0 -40 28 -68l274 -274l-18 -240q-35 21 -56 42l-336 336q-84 86 -84 204q0 120 85 203l147 146q83 83 203 83q121 0 204 -85l334 -335q21 -21 42 -56zM1664 960q0 -14 -9 -23t-23 -9h-320q-14 0 -23 9 t-9 23t9 23t23 9h320q14 0 23 -9t9 -23zM1120 1504v-320q0 -14 -9 -23t-23 -9t-23 9t-9 23v320q0 14 9 23t23 9t23 -9t9 -23zM1527 1353l-256 -256q-11 -9 -23 -9t-23 9q-9 10 -9 23t9 23l256 256q10 9 23 9t23 -9q9 -10 9 -23t-9 -23z" />
300
+ <glyph unicode="&#xf128;" horiz-adv-x="1024" d="M704 280v-240q0 -16 -12 -28t-28 -12h-240q-16 0 -28 12t-12 28v240q0 16 12 28t28 12h240q16 0 28 -12t12 -28zM1020 880q0 -54 -15.5 -101t-35 -76.5t-55 -59.5t-57.5 -43.5t-61 -35.5q-41 -23 -68.5 -65t-27.5 -67q0 -17 -12 -32.5t-28 -15.5h-240q-15 0 -25.5 18.5 t-10.5 37.5v45q0 83 65 156.5t143 108.5q59 27 84 56t25 76q0 42 -46.5 74t-107.5 32q-65 0 -108 -29q-35 -25 -107 -115q-13 -16 -31 -16q-12 0 -25 8l-164 125q-13 10 -15.5 25t5.5 28q160 266 464 266q80 0 161 -31t146 -83t106 -127.5t41 -158.5z" />
301
+ <glyph unicode="&#xf129;" horiz-adv-x="640" d="M640 192v-128q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h64v384h-64q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h384q26 0 45 -19t19 -45v-576h64q26 0 45 -19t19 -45zM512 1344v-192q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v192 q0 26 19 45t45 19h256q26 0 45 -19t19 -45z" />
302
+ <glyph unicode="&#xf12a;" horiz-adv-x="640" d="M512 288v-224q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v224q0 26 19 45t45 19h256q26 0 45 -19t19 -45zM542 1344l-28 -768q-1 -26 -20.5 -45t-45.5 -19h-256q-26 0 -45.5 19t-20.5 45l-28 768q-1 26 17.5 45t44.5 19h320q26 0 44.5 -19t17.5 -45z" />
303
+ <glyph unicode="&#xf12b;" d="M897 167v-167h-248l-159 252l-24 42q-8 9 -11 21h-3l-9 -21q-10 -20 -25 -44l-155 -250h-258v167h128l197 291l-185 272h-137v168h276l139 -228q2 -4 23 -42q8 -9 11 -21h3q3 9 11 21l25 42l140 228h257v-168h-125l-184 -267l204 -296h109zM1534 846v-206h-514l-3 27 q-4 28 -4 46q0 64 26 117t65 86.5t84 65t84 54.5t65 54t26 64q0 38 -29.5 62.5t-70.5 24.5q-51 0 -97 -39q-14 -11 -36 -38l-105 92q26 37 63 66q83 65 188 65q110 0 178 -59.5t68 -158.5q0 -56 -24.5 -103t-62 -76.5t-81.5 -58.5t-82 -50.5t-65.5 -51.5t-30.5 -63h232v80 h126z" />
304
+ <glyph unicode="&#xf12c;" d="M897 167v-167h-248l-159 252l-24 42q-8 9 -11 21h-3l-9 -21q-10 -20 -25 -44l-155 -250h-258v167h128l197 291l-185 272h-137v168h276l139 -228q2 -4 23 -42q8 -9 11 -21h3q3 9 11 21l25 42l140 228h257v-168h-125l-184 -267l204 -296h109zM1536 -50v-206h-514l-4 27 q-3 45 -3 46q0 64 26 117t65 86.5t84 65t84 54.5t65 54t26 64q0 38 -29.5 62.5t-70.5 24.5q-51 0 -97 -39q-14 -11 -36 -38l-105 92q26 37 63 66q80 65 188 65q110 0 178 -59.5t68 -158.5q0 -66 -34.5 -118.5t-84 -86t-99.5 -62.5t-87 -63t-41 -73h232v80h126z" />
305
+ <glyph unicode="&#xf12d;" horiz-adv-x="1920" d="M896 128l336 384h-768l-336 -384h768zM1909 1205q15 -34 9.5 -71.5t-30.5 -65.5l-896 -1024q-38 -44 -96 -44h-768q-38 0 -69.5 20.5t-47.5 54.5q-15 34 -9.5 71.5t30.5 65.5l896 1024q38 44 96 44h768q38 0 69.5 -20.5t47.5 -54.5z" />
306
+ <glyph unicode="&#xf12e;" horiz-adv-x="1664" d="M1664 438q0 -81 -44.5 -135t-123.5 -54q-41 0 -77.5 17.5t-59 38t-56.5 38t-71 17.5q-110 0 -110 -124q0 -39 16 -115t15 -115v-5q-22 0 -33 -1q-34 -3 -97.5 -11.5t-115.5 -13.5t-98 -5q-61 0 -103 26.5t-42 83.5q0 37 17.5 71t38 56.5t38 59t17.5 77.5q0 79 -54 123.5 t-135 44.5q-84 0 -143 -45.5t-59 -127.5q0 -43 15 -83t33.5 -64.5t33.5 -53t15 -50.5q0 -45 -46 -89q-37 -35 -117 -35q-95 0 -245 24q-9 2 -27.5 4t-27.5 4l-13 2q-1 0 -3 1q-2 0 -2 1v1024q2 -1 17.5 -3.5t34 -5t21.5 -3.5q150 -24 245 -24q80 0 117 35q46 44 46 89 q0 22 -15 50.5t-33.5 53t-33.5 64.5t-15 83q0 82 59 127.5t144 45.5q80 0 134 -44.5t54 -123.5q0 -41 -17.5 -77.5t-38 -59t-38 -56.5t-17.5 -71q0 -57 42 -83.5t103 -26.5q64 0 180 15t163 17v-2q-1 -2 -3.5 -17.5t-5 -34t-3.5 -21.5q-24 -150 -24 -245q0 -80 35 -117 q44 -46 89 -46q22 0 50.5 15t53 33.5t64.5 33.5t83 15q82 0 127.5 -59t45.5 -143z" />
307
+ <glyph unicode="&#xf130;" horiz-adv-x="1152" d="M1152 832v-128q0 -221 -147.5 -384.5t-364.5 -187.5v-132h256q26 0 45 -19t19 -45t-19 -45t-45 -19h-640q-26 0 -45 19t-19 45t19 45t45 19h256v132q-217 24 -364.5 187.5t-147.5 384.5v128q0 26 19 45t45 19t45 -19t19 -45v-128q0 -185 131.5 -316.5t316.5 -131.5 t316.5 131.5t131.5 316.5v128q0 26 19 45t45 19t45 -19t19 -45zM896 1216v-512q0 -132 -94 -226t-226 -94t-226 94t-94 226v512q0 132 94 226t226 94t226 -94t94 -226z" />
308
+ <glyph unicode="&#xf131;" horiz-adv-x="1408" d="M271 591l-101 -101q-42 103 -42 214v128q0 26 19 45t45 19t45 -19t19 -45v-128q0 -53 15 -113zM1385 1193l-361 -361v-128q0 -132 -94 -226t-226 -94q-55 0 -109 19l-96 -96q97 -51 205 -51q185 0 316.5 131.5t131.5 316.5v128q0 26 19 45t45 19t45 -19t19 -45v-128 q0 -221 -147.5 -384.5t-364.5 -187.5v-132h256q26 0 45 -19t19 -45t-19 -45t-45 -19h-640q-26 0 -45 19t-19 45t19 45t45 19h256v132q-125 13 -235 81l-254 -254q-10 -10 -23 -10t-23 10l-82 82q-10 10 -10 23t10 23l1234 1234q10 10 23 10t23 -10l82 -82q10 -10 10 -23 t-10 -23zM1005 1325l-621 -621v512q0 132 94 226t226 94q102 0 184.5 -59t116.5 -152z" />
309
+ <glyph unicode="&#xf132;" horiz-adv-x="1280" d="M1088 576v640h-448v-1137q119 63 213 137q235 184 235 360zM1280 1344v-768q0 -86 -33.5 -170.5t-83 -150t-118 -127.5t-126.5 -103t-121 -77.5t-89.5 -49.5t-42.5 -20q-12 -6 -26 -6t-26 6q-16 7 -42.5 20t-89.5 49.5t-121 77.5t-126.5 103t-118 127.5t-83 150 t-33.5 170.5v768q0 26 19 45t45 19h1152q26 0 45 -19t19 -45z" />
310
+ <glyph unicode="&#xf133;" horiz-adv-x="1664" d="M128 -128h1408v1024h-1408v-1024zM512 1088v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-288q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1280 1088v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-288q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1664 1152v-1280 q0 -52 -38 -90t-90 -38h-1408q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h128v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h384v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h128q52 0 90 -38t38 -90z" />
311
+ <glyph unicode="&#xf134;" horiz-adv-x="1408" d="M512 1344q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1408 1376v-320q0 -16 -12 -25q-8 -7 -20 -7q-4 0 -7 1l-448 96q-11 2 -18 11t-7 20h-256v-102q111 -23 183.5 -111t72.5 -203v-800q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v800 q0 106 62.5 190.5t161.5 114.5v111h-32q-59 0 -115 -23.5t-91.5 -53t-66 -66.5t-40.5 -53.5t-14 -24.5q-17 -35 -57 -35q-16 0 -29 7q-23 12 -31.5 37t3.5 49q5 10 14.5 26t37.5 53.5t60.5 70t85 67t108.5 52.5q-25 42 -25 86q0 66 47 113t113 47t113 -47t47 -113 q0 -33 -14 -64h302q0 11 7 20t18 11l448 96q3 1 7 1q12 0 20 -7q12 -9 12 -25z" />
312
+ <glyph unicode="&#xf135;" horiz-adv-x="1664" d="M1440 1088q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM1664 1376q0 -249 -75.5 -430.5t-253.5 -360.5q-81 -80 -195 -176l-20 -379q-2 -16 -16 -26l-384 -224q-7 -4 -16 -4q-12 0 -23 9l-64 64q-13 14 -8 32l85 276l-281 281l-276 -85q-3 -1 -9 -1 q-14 0 -23 9l-64 64q-17 19 -5 39l224 384q10 14 26 16l379 20q96 114 176 195q188 187 358 258t431 71q14 0 24 -9.5t10 -22.5z" />
313
+ <glyph unicode="&#xf136;" horiz-adv-x="1792" d="M1745 763l-164 -763h-334l178 832q13 56 -15 88q-27 33 -83 33h-169l-204 -953h-334l204 953h-286l-204 -953h-334l204 953l-153 327h1276q101 0 189.5 -40.5t147.5 -113.5q60 -73 81 -168.5t0 -194.5z" />
314
+ <glyph unicode="&#xf137;" d="M909 141l102 102q19 19 19 45t-19 45l-307 307l307 307q19 19 19 45t-19 45l-102 102q-19 19 -45 19t-45 -19l-454 -454q-19 -19 -19 -45t19 -45l454 -454q19 -19 45 -19t45 19zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5 t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
315
+ <glyph unicode="&#xf138;" d="M717 141l454 454q19 19 19 45t-19 45l-454 454q-19 19 -45 19t-45 -19l-102 -102q-19 -19 -19 -45t19 -45l307 -307l-307 -307q-19 -19 -19 -45t19 -45l102 -102q19 -19 45 -19t45 19zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5 t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
316
+ <glyph unicode="&#xf139;" d="M1165 397l102 102q19 19 19 45t-19 45l-454 454q-19 19 -45 19t-45 -19l-454 -454q-19 -19 -19 -45t19 -45l102 -102q19 -19 45 -19t45 19l307 307l307 -307q19 -19 45 -19t45 19zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5 t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
317
+ <glyph unicode="&#xf13a;" d="M813 237l454 454q19 19 19 45t-19 45l-102 102q-19 19 -45 19t-45 -19l-307 -307l-307 307q-19 19 -45 19t-45 -19l-102 -102q-19 -19 -19 -45t19 -45l454 -454q19 -19 45 -19t45 19zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5 t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
318
+ <glyph unicode="&#xf13b;" horiz-adv-x="1408" d="M1130 939l16 175h-884l47 -534h612l-22 -228l-197 -53l-196 53l-13 140h-175l22 -278l362 -100h4v1l359 99l50 544h-644l-15 181h674zM0 1408h1408l-128 -1438l-578 -162l-574 162z" />
319
+ <glyph unicode="&#xf13c;" horiz-adv-x="1792" d="M275 1408h1505l-266 -1333l-804 -267l-698 267l71 356h297l-29 -147l422 -161l486 161l68 339h-1208l58 297h1209l38 191h-1208z" />
320
+ <glyph unicode="&#xf13d;" horiz-adv-x="1792" d="M960 1280q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1792 352v-352q0 -22 -20 -30q-8 -2 -12 -2q-13 0 -23 9l-93 93q-119 -143 -318.5 -226.5t-429.5 -83.5t-429.5 83.5t-318.5 226.5l-93 -93q-9 -9 -23 -9q-4 0 -12 2q-20 8 -20 30v352 q0 14 9 23t23 9h352q22 0 30 -20q8 -19 -7 -35l-100 -100q67 -91 189.5 -153.5t271.5 -82.5v647h-192q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h192v163q-58 34 -93 92.5t-35 128.5q0 106 75 181t181 75t181 -75t75 -181q0 -70 -35 -128.5t-93 -92.5v-163h192q26 0 45 -19 t19 -45v-128q0 -26 -19 -45t-45 -19h-192v-647q149 20 271.5 82.5t189.5 153.5l-100 100q-15 16 -7 35q8 20 30 20h352q14 0 23 -9t9 -23z" />
321
+ <glyph unicode="&#xf13e;" horiz-adv-x="1152" d="M1056 768q40 0 68 -28t28 -68v-576q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v576q0 40 28 68t68 28h32v320q0 185 131.5 316.5t316.5 131.5t316.5 -131.5t131.5 -316.5q0 -26 -19 -45t-45 -19h-64q-26 0 -45 19t-19 45q0 106 -75 181t-181 75t-181 -75t-75 -181 v-320h736z" />
322
+ <glyph unicode="&#xf140;" d="M1024 640q0 -106 -75 -181t-181 -75t-181 75t-75 181t75 181t181 75t181 -75t75 -181zM1152 640q0 159 -112.5 271.5t-271.5 112.5t-271.5 -112.5t-112.5 -271.5t112.5 -271.5t271.5 -112.5t271.5 112.5t112.5 271.5zM1280 640q0 -212 -150 -362t-362 -150t-362 150 t-150 362t150 362t362 150t362 -150t150 -362zM1408 640q0 130 -51 248.5t-136.5 204t-204 136.5t-248.5 51t-248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
323
+ <glyph unicode="&#xf141;" horiz-adv-x="1408" d="M384 800v-192q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68zM896 800v-192q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68zM1408 800v-192q0 -40 -28 -68t-68 -28h-192 q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68z" />
324
+ <glyph unicode="&#xf142;" horiz-adv-x="384" d="M384 288v-192q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68zM384 800v-192q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68zM384 1312v-192q0 -40 -28 -68t-68 -28h-192 q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68z" />
325
+ <glyph unicode="&#xf143;" d="M512 256q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM863 162q-13 232 -177 396t-396 177q-14 1 -24 -9t-10 -23v-128q0 -13 8.5 -22t21.5 -10q154 -11 264 -121t121 -264q1 -13 10 -21.5t22 -8.5h128q13 0 23 10 t9 24zM1247 161q-5 154 -56 297.5t-139.5 260t-205 205t-260 139.5t-297.5 56q-14 1 -23 -9q-10 -10 -10 -23v-128q0 -13 9 -22t22 -10q204 -7 378 -111.5t278.5 -278.5t111.5 -378q1 -13 10 -22t22 -9h128q13 0 23 10q11 9 9 23zM1536 1120v-960q0 -119 -84.5 -203.5 t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
326
+ <glyph unicode="&#xf144;" d="M768 1408q209 0 385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103zM1152 585q32 18 32 55t-32 55l-544 320q-31 19 -64 1q-32 -19 -32 -56v-640q0 -37 32 -56 q16 -8 32 -8q17 0 32 9z" />
327
+ <glyph unicode="&#xf145;" horiz-adv-x="1792" d="M1024 1084l316 -316l-572 -572l-316 316zM813 105l618 618q19 19 19 45t-19 45l-362 362q-18 18 -45 18t-45 -18l-618 -618q-19 -19 -19 -45t19 -45l362 -362q18 -18 45 -18t45 18zM1702 742l-907 -908q-37 -37 -90.5 -37t-90.5 37l-126 126q56 56 56 136t-56 136 t-136 56t-136 -56l-125 126q-37 37 -37 90.5t37 90.5l907 906q37 37 90.5 37t90.5 -37l125 -125q-56 -56 -56 -136t56 -136t136 -56t136 56l126 -125q37 -37 37 -90.5t-37 -90.5z" />
328
+ <glyph unicode="&#xf146;" d="M1280 576v128q0 26 -19 45t-45 19h-896q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h896q26 0 45 19t19 45zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5 t84.5 -203.5z" />
329
+ <glyph unicode="&#xf147;" horiz-adv-x="1408" d="M1152 736v-64q0 -14 -9 -23t-23 -9h-832q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h832q14 0 23 -9t9 -23zM1280 288v832q0 66 -47 113t-113 47h-832q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113zM1408 1120v-832q0 -119 -84.5 -203.5 t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h832q119 0 203.5 -84.5t84.5 -203.5z" />
330
+ <glyph unicode="&#xf148;" horiz-adv-x="1024" d="M1018 933q-18 -37 -58 -37h-192v-864q0 -14 -9 -23t-23 -9h-704q-21 0 -29 18q-8 20 4 35l160 192q9 11 25 11h320v640h-192q-40 0 -58 37q-17 37 9 68l320 384q18 22 49 22t49 -22l320 -384q27 -32 9 -68z" />
331
+ <glyph unicode="&#xf149;" horiz-adv-x="1024" d="M32 1280h704q13 0 22.5 -9.5t9.5 -23.5v-863h192q40 0 58 -37t-9 -69l-320 -384q-18 -22 -49 -22t-49 22l-320 384q-26 31 -9 69q18 37 58 37h192v640h-320q-14 0 -25 11l-160 192q-13 14 -4 34q9 19 29 19z" />
332
+ <glyph unicode="&#xf14a;" d="M685 237l614 614q19 19 19 45t-19 45l-102 102q-19 19 -45 19t-45 -19l-467 -467l-211 211q-19 19 -45 19t-45 -19l-102 -102q-19 -19 -19 -45t19 -45l358 -358q19 -19 45 -19t45 19zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5 t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
333
+ <glyph unicode="&#xf14b;" d="M404 428l152 -152l-52 -52h-56v96h-96v56zM818 818q14 -13 -3 -30l-291 -291q-17 -17 -30 -3q-14 13 3 30l291 291q17 17 30 3zM544 128l544 544l-288 288l-544 -544v-288h288zM1152 736l92 92q28 28 28 68t-28 68l-152 152q-28 28 -68 28t-68 -28l-92 -92zM1536 1120 v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
334
+ <glyph unicode="&#xf14c;" d="M1280 608v480q0 26 -19 45t-45 19h-480q-42 0 -59 -39q-17 -41 14 -70l144 -144l-534 -534q-19 -19 -19 -45t19 -45l102 -102q19 -19 45 -19t45 19l534 534l144 -144q18 -19 45 -19q12 0 25 5q39 17 39 59zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960 q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
335
+ <glyph unicode="&#xf14d;" d="M1005 435l352 352q19 19 19 45t-19 45l-352 352q-30 31 -69 14q-40 -17 -40 -59v-160q-119 0 -216 -19.5t-162.5 -51t-114 -79t-76.5 -95.5t-44.5 -109t-21.5 -111.5t-5 -110.5q0 -181 167 -404q10 -12 25 -12q7 0 13 3q22 9 19 33q-44 354 62 473q46 52 130 75.5 t224 23.5v-160q0 -42 40 -59q12 -5 24 -5q26 0 45 19zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
336
+ <glyph unicode="&#xf14e;" d="M640 448l256 128l-256 128v-256zM1024 1039v-542l-512 -256v542zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103 t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
337
+ <glyph unicode="&#xf150;" d="M1145 861q18 -35 -5 -66l-320 -448q-19 -27 -52 -27t-52 27l-320 448q-23 31 -5 66q17 35 57 35h640q40 0 57 -35zM1280 160v960q0 13 -9.5 22.5t-22.5 9.5h-960q-13 0 -22.5 -9.5t-9.5 -22.5v-960q0 -13 9.5 -22.5t22.5 -9.5h960q13 0 22.5 9.5t9.5 22.5zM1536 1120 v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
338
+ <glyph unicode="&#xf151;" d="M1145 419q-17 -35 -57 -35h-640q-40 0 -57 35q-18 35 5 66l320 448q19 27 52 27t52 -27l320 -448q23 -31 5 -66zM1280 160v960q0 13 -9.5 22.5t-22.5 9.5h-960q-13 0 -22.5 -9.5t-9.5 -22.5v-960q0 -13 9.5 -22.5t22.5 -9.5h960q13 0 22.5 9.5t9.5 22.5zM1536 1120v-960 q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
339
+ <glyph unicode="&#xf152;" d="M1088 640q0 -33 -27 -52l-448 -320q-31 -23 -66 -5q-35 17 -35 57v640q0 40 35 57q35 18 66 -5l448 -320q27 -19 27 -52zM1280 160v960q0 14 -9 23t-23 9h-960q-14 0 -23 -9t-9 -23v-960q0 -14 9 -23t23 -9h960q14 0 23 9t9 23zM1536 1120v-960q0 -119 -84.5 -203.5 t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
340
+ <glyph unicode="&#xf153;" horiz-adv-x="1024" d="M976 229l35 -159q3 -12 -3 -22.5t-17 -14.5l-5 -1q-4 -2 -10.5 -3.5t-16 -4.5t-21.5 -5.5t-25.5 -5t-30 -5t-33.5 -4.5t-36.5 -3t-38.5 -1q-234 0 -409 130.5t-238 351.5h-95q-13 0 -22.5 9.5t-9.5 22.5v113q0 13 9.5 22.5t22.5 9.5h66q-2 57 1 105h-67q-14 0 -23 9 t-9 23v114q0 14 9 23t23 9h98q67 210 243.5 338t400.5 128q102 0 194 -23q11 -3 20 -15q6 -11 3 -24l-43 -159q-3 -13 -14 -19.5t-24 -2.5l-4 1q-4 1 -11.5 2.5l-17.5 3.5t-22.5 3.5t-26 3t-29 2.5t-29.5 1q-126 0 -226 -64t-150 -176h468q16 0 25 -12q10 -12 7 -26 l-24 -114q-5 -26 -32 -26h-488q-3 -37 0 -105h459q15 0 25 -12q9 -12 6 -27l-24 -112q-2 -11 -11 -18.5t-20 -7.5h-387q48 -117 149.5 -185.5t228.5 -68.5q18 0 36 1.5t33.5 3.5t29.5 4.5t24.5 5t18.5 4.5l12 3l5 2q13 5 26 -2q12 -7 15 -21z" />
341
+ <glyph unicode="&#xf154;" horiz-adv-x="1024" d="M1020 399v-367q0 -14 -9 -23t-23 -9h-956q-14 0 -23 9t-9 23v150q0 13 9.5 22.5t22.5 9.5h97v383h-95q-14 0 -23 9.5t-9 22.5v131q0 14 9 23t23 9h95v223q0 171 123.5 282t314.5 111q185 0 335 -125q9 -8 10 -20.5t-7 -22.5l-103 -127q-9 -11 -22 -12q-13 -2 -23 7 q-5 5 -26 19t-69 32t-93 18q-85 0 -137 -47t-52 -123v-215h305q13 0 22.5 -9t9.5 -23v-131q0 -13 -9.5 -22.5t-22.5 -9.5h-305v-379h414v181q0 13 9 22.5t23 9.5h162q14 0 23 -9.5t9 -22.5z" />
342
+ <glyph unicode="&#xf155;" horiz-adv-x="1024" d="M978 351q0 -153 -99.5 -263.5t-258.5 -136.5v-175q0 -14 -9 -23t-23 -9h-135q-13 0 -22.5 9.5t-9.5 22.5v175q-66 9 -127.5 31t-101.5 44.5t-74 48t-46.5 37.5t-17.5 18q-17 21 -2 41l103 135q7 10 23 12q15 2 24 -9l2 -2q113 -99 243 -125q37 -8 74 -8q81 0 142.5 43 t61.5 122q0 28 -15 53t-33.5 42t-58.5 37.5t-66 32t-80 32.5q-39 16 -61.5 25t-61.5 26.5t-62.5 31t-56.5 35.5t-53.5 42.5t-43.5 49t-35.5 58t-21 66.5t-8.5 78q0 138 98 242t255 134v180q0 13 9.5 22.5t22.5 9.5h135q14 0 23 -9t9 -23v-176q57 -6 110.5 -23t87 -33.5 t63.5 -37.5t39 -29t15 -14q17 -18 5 -38l-81 -146q-8 -15 -23 -16q-14 -3 -27 7q-3 3 -14.5 12t-39 26.5t-58.5 32t-74.5 26t-85.5 11.5q-95 0 -155 -43t-60 -111q0 -26 8.5 -48t29.5 -41.5t39.5 -33t56 -31t60.5 -27t70 -27.5q53 -20 81 -31.5t76 -35t75.5 -42.5t62 -50 t53 -63.5t31.5 -76.5t13 -94z" />
343
+ <glyph unicode="&#xf156;" horiz-adv-x="898" d="M898 1066v-102q0 -14 -9 -23t-23 -9h-168q-23 -144 -129 -234t-276 -110q167 -178 459 -536q14 -16 4 -34q-8 -18 -29 -18h-195q-16 0 -25 12q-306 367 -498 571q-9 9 -9 22v127q0 13 9.5 22.5t22.5 9.5h112q132 0 212.5 43t102.5 125h-427q-14 0 -23 9t-9 23v102 q0 14 9 23t23 9h413q-57 113 -268 113h-145q-13 0 -22.5 9.5t-9.5 22.5v133q0 14 9 23t23 9h832q14 0 23 -9t9 -23v-102q0 -14 -9 -23t-23 -9h-233q47 -61 64 -144h171q14 0 23 -9t9 -23z" />
344
+ <glyph unicode="&#xf157;" horiz-adv-x="1027" d="M603 0h-172q-13 0 -22.5 9t-9.5 23v330h-288q-13 0 -22.5 9t-9.5 23v103q0 13 9.5 22.5t22.5 9.5h288v85h-288q-13 0 -22.5 9t-9.5 23v104q0 13 9.5 22.5t22.5 9.5h214l-321 578q-8 16 0 32q10 16 28 16h194q19 0 29 -18l215 -425q19 -38 56 -125q10 24 30.5 68t27.5 61 l191 420q8 19 29 19h191q17 0 27 -16q9 -14 1 -31l-313 -579h215q13 0 22.5 -9.5t9.5 -22.5v-104q0 -14 -9.5 -23t-22.5 -9h-290v-85h290q13 0 22.5 -9.5t9.5 -22.5v-103q0 -14 -9.5 -23t-22.5 -9h-290v-330q0 -13 -9.5 -22.5t-22.5 -9.5z" />
345
+ <glyph unicode="&#xf158;" horiz-adv-x="1280" d="M1043 971q0 100 -65 162t-171 62h-320v-448h320q106 0 171 62t65 162zM1280 971q0 -193 -126.5 -315t-326.5 -122h-340v-118h505q14 0 23 -9t9 -23v-128q0 -14 -9 -23t-23 -9h-505v-192q0 -14 -9.5 -23t-22.5 -9h-167q-14 0 -23 9t-9 23v192h-224q-14 0 -23 9t-9 23v128 q0 14 9 23t23 9h224v118h-224q-14 0 -23 9t-9 23v149q0 13 9 22.5t23 9.5h224v629q0 14 9 23t23 9h539q200 0 326.5 -122t126.5 -315z" />
346
+ <glyph unicode="&#xf159;" horiz-adv-x="1792" d="M514 341l81 299h-159l75 -300q1 -1 1 -3t1 -3q0 1 0.5 3.5t0.5 3.5zM630 768l35 128h-292l32 -128h225zM822 768h139l-35 128h-70zM1271 340l78 300h-162l81 -299q0 -1 0.5 -3.5t1.5 -3.5q0 1 0.5 3t0.5 3zM1382 768l33 128h-297l34 -128h230zM1792 736v-64q0 -14 -9 -23 t-23 -9h-213l-164 -616q-7 -24 -31 -24h-159q-24 0 -31 24l-166 616h-209l-167 -616q-7 -24 -31 -24h-159q-11 0 -19.5 7t-10.5 17l-160 616h-208q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h175l-33 128h-142q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h109l-89 344q-5 15 5 28 q10 12 26 12h137q26 0 31 -24l90 -360h359l97 360q7 24 31 24h126q24 0 31 -24l98 -360h365l93 360q5 24 31 24h137q16 0 26 -12q10 -13 5 -28l-91 -344h111q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-145l-34 -128h179q14 0 23 -9t9 -23z" />
347
+ <glyph unicode="&#xf15a;" horiz-adv-x="1280" d="M1167 896q18 -182 -131 -258q117 -28 175 -103t45 -214q-7 -71 -32.5 -125t-64.5 -89t-97 -58.5t-121.5 -34.5t-145.5 -15v-255h-154v251q-80 0 -122 1v-252h-154v255q-18 0 -54 0.5t-55 0.5h-200l31 183h111q50 0 58 51v402h16q-6 1 -16 1v287q-13 68 -89 68h-111v164 l212 -1q64 0 97 1v252h154v-247q82 2 122 2v245h154v-252q79 -7 140 -22.5t113 -45t82.5 -78t36.5 -114.5zM952 351q0 36 -15 64t-37 46t-57.5 30.5t-65.5 18.5t-74 9t-69 3t-64.5 -1t-47.5 -1v-338q8 0 37 -0.5t48 -0.5t53 1.5t58.5 4t57 8.5t55.5 14t47.5 21t39.5 30 t24.5 40t9.5 51zM881 827q0 33 -12.5 58.5t-30.5 42t-48 28t-55 16.5t-61.5 8t-58 2.5t-54 -1t-39.5 -0.5v-307q5 0 34.5 -0.5t46.5 0t50 2t55 5.5t51.5 11t48.5 18.5t37 27t27 38.5t9 51z" />
348
+ <glyph unicode="&#xf15b;" horiz-adv-x="1280" d="M1280 768v-800q0 -40 -28 -68t-68 -28h-1088q-40 0 -68 28t-28 68v1344q0 40 28 68t68 28h544v-544q0 -40 28 -68t68 -28h544zM1277 896h-509v509q82 -15 132 -65l312 -312q50 -50 65 -132z" />
349
+ <glyph unicode="&#xf15c;" horiz-adv-x="1280" d="M1024 160v64q0 14 -9 23t-23 9h-704q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h704q14 0 23 9t9 23zM1024 416v64q0 14 -9 23t-23 9h-704q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h704q14 0 23 9t9 23zM1280 768v-800q0 -40 -28 -68t-68 -28h-1088q-40 0 -68 28 t-28 68v1344q0 40 28 68t68 28h544v-544q0 -40 28 -68t68 -28h544zM1277 896h-509v509q82 -15 132 -65l312 -312q50 -50 65 -132z" />
350
+ <glyph unicode="&#xf15d;" horiz-adv-x="1664" d="M1191 1128h177l-72 218l-12 47q-2 16 -2 20h-4l-3 -20q0 -1 -3.5 -18t-7.5 -29zM736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192q14 0 23 -9t9 -23zM1572 -23 v-233h-584v90l369 529q12 18 21 27l11 9v3q-2 0 -6.5 -0.5t-7.5 -0.5q-12 -3 -30 -3h-232v-115h-120v229h567v-89l-369 -530q-6 -8 -21 -26l-11 -11v-2l14 2q9 2 30 2h248v119h121zM1661 874v-106h-288v106h75l-47 144h-243l-47 -144h75v-106h-287v106h70l230 662h162 l230 -662h70z" />
351
+ <glyph unicode="&#xf15e;" horiz-adv-x="1664" d="M1191 104h177l-72 218l-12 47q-2 16 -2 20h-4l-3 -20q0 -1 -3.5 -18t-7.5 -29zM736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192q14 0 23 -9t9 -23zM1661 -150 v-106h-288v106h75l-47 144h-243l-47 -144h75v-106h-287v106h70l230 662h162l230 -662h70zM1572 1001v-233h-584v90l369 529q12 18 21 27l11 9v3q-2 0 -6.5 -0.5t-7.5 -0.5q-12 -3 -30 -3h-232v-115h-120v229h567v-89l-369 -530q-6 -8 -21 -26l-11 -10v-3l14 3q9 1 30 1h248 v119h121z" />
352
+ <glyph unicode="&#xf160;" horiz-adv-x="1792" d="M736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192q14 0 23 -9t9 -23zM1792 -32v-192q0 -14 -9 -23t-23 -9h-832q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h832 q14 0 23 -9t9 -23zM1600 480v-192q0 -14 -9 -23t-23 -9h-640q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h640q14 0 23 -9t9 -23zM1408 992v-192q0 -14 -9 -23t-23 -9h-448q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h448q14 0 23 -9t9 -23zM1216 1504v-192q0 -14 -9 -23t-23 -9h-256 q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h256q14 0 23 -9t9 -23z" />
353
+ <glyph unicode="&#xf161;" horiz-adv-x="1792" d="M1216 -32v-192q0 -14 -9 -23t-23 -9h-256q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h256q14 0 23 -9t9 -23zM736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192 q14 0 23 -9t9 -23zM1408 480v-192q0 -14 -9 -23t-23 -9h-448q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h448q14 0 23 -9t9 -23zM1600 992v-192q0 -14 -9 -23t-23 -9h-640q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h640q14 0 23 -9t9 -23zM1792 1504v-192q0 -14 -9 -23t-23 -9h-832 q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h832q14 0 23 -9t9 -23z" />
354
+ <glyph unicode="&#xf162;" d="M1346 223q0 63 -44 116t-103 53q-52 0 -83 -37t-31 -94t36.5 -95t104.5 -38q50 0 85 27t35 68zM736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192q14 0 23 -9t9 -23 zM1486 165q0 -62 -13 -121.5t-41 -114t-68 -95.5t-98.5 -65.5t-127.5 -24.5q-62 0 -108 16q-24 8 -42 15l39 113q15 -7 31 -11q37 -13 75 -13q84 0 134.5 58.5t66.5 145.5h-2q-21 -23 -61.5 -37t-84.5 -14q-106 0 -173 71.5t-67 172.5q0 105 72 178t181 73q123 0 205 -94.5 t82 -252.5zM1456 882v-114h-469v114h167v432q0 7 0.5 19t0.5 17v16h-2l-7 -12q-8 -13 -26 -31l-62 -58l-82 86l192 185h123v-654h165z" />
355
+ <glyph unicode="&#xf163;" d="M1346 1247q0 63 -44 116t-103 53q-52 0 -83 -37t-31 -94t36.5 -95t104.5 -38q50 0 85 27t35 68zM736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192q14 0 23 -9 t9 -23zM1456 -142v-114h-469v114h167v432q0 7 0.5 19t0.5 17v16h-2l-7 -12q-8 -13 -26 -31l-62 -58l-82 86l192 185h123v-654h165zM1486 1189q0 -62 -13 -121.5t-41 -114t-68 -95.5t-98.5 -65.5t-127.5 -24.5q-62 0 -108 16q-24 8 -42 15l39 113q15 -7 31 -11q37 -13 75 -13 q84 0 134.5 58.5t66.5 145.5h-2q-21 -23 -61.5 -37t-84.5 -14q-106 0 -173 71.5t-67 172.5q0 105 72 178t181 73q123 0 205 -94.5t82 -252.5z" />
356
+ <glyph unicode="&#xf164;" horiz-adv-x="1664" d="M256 192q0 26 -19 45t-45 19q-27 0 -45.5 -19t-18.5 -45q0 -27 18.5 -45.5t45.5 -18.5q26 0 45 18.5t19 45.5zM416 704v-640q0 -26 -19 -45t-45 -19h-288q-26 0 -45 19t-19 45v640q0 26 19 45t45 19h288q26 0 45 -19t19 -45zM1600 704q0 -86 -55 -149q15 -44 15 -76 q3 -76 -43 -137q17 -56 0 -117q-15 -57 -54 -94q9 -112 -49 -181q-64 -76 -197 -78h-36h-76h-17q-66 0 -144 15.5t-121.5 29t-120.5 39.5q-123 43 -158 44q-26 1 -45 19.5t-19 44.5v641q0 25 18 43.5t43 20.5q24 2 76 59t101 121q68 87 101 120q18 18 31 48t17.5 48.5 t13.5 60.5q7 39 12.5 61t19.5 52t34 50q19 19 45 19q46 0 82.5 -10.5t60 -26t40 -40.5t24 -45t12 -50t5 -45t0.5 -39q0 -38 -9.5 -76t-19 -60t-27.5 -56q-3 -6 -10 -18t-11 -22t-8 -24h277q78 0 135 -57t57 -135z" />
357
+ <glyph unicode="&#xf165;" horiz-adv-x="1664" d="M256 960q0 -26 -19 -45t-45 -19q-27 0 -45.5 19t-18.5 45q0 27 18.5 45.5t45.5 18.5q26 0 45 -18.5t19 -45.5zM416 448v640q0 26 -19 45t-45 19h-288q-26 0 -45 -19t-19 -45v-640q0 -26 19 -45t45 -19h288q26 0 45 19t19 45zM1545 597q55 -61 55 -149q-1 -78 -57.5 -135 t-134.5 -57h-277q4 -14 8 -24t11 -22t10 -18q18 -37 27 -57t19 -58.5t10 -76.5q0 -24 -0.5 -39t-5 -45t-12 -50t-24 -45t-40 -40.5t-60 -26t-82.5 -10.5q-26 0 -45 19q-20 20 -34 50t-19.5 52t-12.5 61q-9 42 -13.5 60.5t-17.5 48.5t-31 48q-33 33 -101 120q-49 64 -101 121 t-76 59q-25 2 -43 20.5t-18 43.5v641q0 26 19 44.5t45 19.5q35 1 158 44q77 26 120.5 39.5t121.5 29t144 15.5h17h76h36q133 -2 197 -78q58 -69 49 -181q39 -37 54 -94q17 -61 0 -117q46 -61 43 -137q0 -32 -15 -76z" />
358
+ <glyph unicode="&#xf166;" d="M919 233v157q0 50 -29 50q-17 0 -33 -16v-224q16 -16 33 -16q29 0 29 49zM1103 355h66v34q0 51 -33 51t-33 -51v-34zM532 621v-70h-80v-423h-74v423h-78v70h232zM733 495v-367h-67v40q-39 -45 -76 -45q-33 0 -42 28q-6 16 -6 54v290h66v-270q0 -24 1 -26q1 -15 15 -15 q20 0 42 31v280h67zM985 384v-146q0 -52 -7 -73q-12 -42 -53 -42q-35 0 -68 41v-36h-67v493h67v-161q32 40 68 40q41 0 53 -42q7 -21 7 -74zM1236 255v-9q0 -29 -2 -43q-3 -22 -15 -40q-27 -40 -80 -40q-52 0 -81 38q-21 27 -21 86v129q0 59 20 86q29 38 80 38t78 -38 q21 -28 21 -86v-76h-133v-65q0 -51 34 -51q24 0 30 26q0 1 0.5 7t0.5 16.5v21.5h68zM785 1079v-156q0 -51 -32 -51t-32 51v156q0 52 32 52t32 -52zM1318 366q0 177 -19 260q-10 44 -43 73.5t-76 34.5q-136 15 -412 15q-275 0 -411 -15q-44 -5 -76.5 -34.5t-42.5 -73.5 q-20 -87 -20 -260q0 -176 20 -260q10 -43 42.5 -73t75.5 -35q137 -15 412 -15t412 15q43 5 75.5 35t42.5 73q20 84 20 260zM563 1017l90 296h-75l-51 -195l-53 195h-78l24 -69t23 -69q35 -103 46 -158v-201h74v201zM852 936v130q0 58 -21 87q-29 38 -78 38q-51 0 -78 -38 q-21 -29 -21 -87v-130q0 -58 21 -87q27 -38 78 -38q49 0 78 38q21 27 21 87zM1033 816h67v370h-67v-283q-22 -31 -42 -31q-15 0 -16 16q-1 2 -1 26v272h-67v-293q0 -37 6 -55q11 -27 43 -27q36 0 77 45v-40zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960 q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
359
+ <glyph unicode="&#xf167;" d="M971 292v-211q0 -67 -39 -67q-23 0 -45 22v301q22 22 45 22q39 0 39 -67zM1309 291v-46h-90v46q0 68 45 68t45 -68zM343 509h107v94h-312v-94h105v-569h100v569zM631 -60h89v494h-89v-378q-30 -42 -57 -42q-18 0 -21 21q-1 3 -1 35v364h-89v-391q0 -49 8 -73 q12 -37 58 -37q48 0 102 61v-54zM1060 88v197q0 73 -9 99q-17 56 -71 56q-50 0 -93 -54v217h-89v-663h89v48q45 -55 93 -55q54 0 71 55q9 27 9 100zM1398 98v13h-91q0 -51 -2 -61q-7 -36 -40 -36q-46 0 -46 69v87h179v103q0 79 -27 116q-39 51 -106 51q-68 0 -107 -51 q-28 -37 -28 -116v-173q0 -79 29 -116q39 -51 108 -51q72 0 108 53q18 27 21 54q2 9 2 58zM790 1011v210q0 69 -43 69t-43 -69v-210q0 -70 43 -70t43 70zM1509 260q0 -234 -26 -350q-14 -59 -58 -99t-102 -46q-184 -21 -555 -21t-555 21q-58 6 -102.5 46t-57.5 99 q-26 112 -26 350q0 234 26 350q14 59 58 99t103 47q183 20 554 20t555 -20q58 -7 102.5 -47t57.5 -99q26 -112 26 -350zM511 1536h102l-121 -399v-271h-100v271q-14 74 -61 212q-37 103 -65 187h106l71 -263zM881 1203v-175q0 -81 -28 -118q-37 -51 -106 -51q-67 0 -105 51 q-28 38 -28 118v175q0 80 28 117q38 51 105 51q69 0 106 -51q28 -37 28 -117zM1216 1365v-499h-91v55q-53 -62 -103 -62q-46 0 -59 37q-8 24 -8 75v394h91v-367q0 -33 1 -35q3 -22 21 -22q27 0 57 43v381h91z" />
360
+ <glyph unicode="&#xf168;" horiz-adv-x="1408" d="M597 869q-10 -18 -257 -456q-27 -46 -65 -46h-239q-21 0 -31 17t0 36l253 448q1 0 0 1l-161 279q-12 22 -1 37q9 15 32 15h239q40 0 66 -45zM1403 1511q11 -16 0 -37l-528 -934v-1l336 -615q11 -20 1 -37q-10 -15 -32 -15h-239q-42 0 -66 45l-339 622q18 32 531 942 q25 45 64 45h241q22 0 31 -15z" />
361
+ <glyph unicode="&#xf169;" d="M685 771q0 1 -126 222q-21 34 -52 34h-184q-18 0 -26 -11q-7 -12 1 -29l125 -216v-1l-196 -346q-9 -14 0 -28q8 -13 24 -13h185q31 0 50 36zM1309 1268q-7 12 -24 12h-187q-30 0 -49 -35l-411 -729q1 -2 262 -481q20 -35 52 -35h184q18 0 25 12q8 13 -1 28l-260 476v1 l409 723q8 16 0 28zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
362
+ <glyph unicode="&#xf16a;" horiz-adv-x="1792" d="M1280 640q0 37 -30 54l-512 320q-31 20 -65 2q-33 -18 -33 -56v-640q0 -38 33 -56q16 -8 31 -8q20 0 34 10l512 320q30 17 30 54zM1792 640q0 -96 -1 -150t-8.5 -136.5t-22.5 -147.5q-16 -73 -69 -123t-124 -58q-222 -25 -671 -25t-671 25q-71 8 -124.5 58t-69.5 123 q-14 65 -21.5 147.5t-8.5 136.5t-1 150t1 150t8.5 136.5t22.5 147.5q16 73 69 123t124 58q222 25 671 25t671 -25q71 -8 124.5 -58t69.5 -123q14 -65 21.5 -147.5t8.5 -136.5t1 -150z" />
363
+ <glyph unicode="&#xf16b;" horiz-adv-x="1792" d="M402 829l494 -305l-342 -285l-490 319zM1388 274v-108l-490 -293v-1l-1 1l-1 -1v1l-489 293v108l147 -96l342 284v2l1 -1l1 1v-2l343 -284zM554 1418l342 -285l-494 -304l-338 270zM1390 829l338 -271l-489 -319l-343 285zM1239 1418l489 -319l-338 -270l-494 304z" />
364
+ <glyph unicode="&#xf16c;" horiz-adv-x="1408" d="M928 135v-151l-707 -1v151zM1169 481v-701l-1 -35v-1h-1132l-35 1h-1v736h121v-618h928v618h120zM241 393l704 -65l-13 -150l-705 65zM309 709l683 -183l-39 -146l-683 183zM472 1058l609 -360l-77 -130l-609 360zM832 1389l398 -585l-124 -85l-399 584zM1285 1536 l121 -697l-149 -26l-121 697z" />
365
+ <glyph unicode="&#xf16d;" d="M1362 110v648h-135q20 -63 20 -131q0 -126 -64 -232.5t-174 -168.5t-240 -62q-197 0 -337 135.5t-140 327.5q0 68 20 131h-141v-648q0 -26 17.5 -43.5t43.5 -17.5h1069q25 0 43 17.5t18 43.5zM1078 643q0 124 -90.5 211.5t-218.5 87.5q-127 0 -217.5 -87.5t-90.5 -211.5 t90.5 -211.5t217.5 -87.5q128 0 218.5 87.5t90.5 211.5zM1362 1003v165q0 28 -20 48.5t-49 20.5h-174q-29 0 -49 -20.5t-20 -48.5v-165q0 -29 20 -49t49 -20h174q29 0 49 20t20 49zM1536 1211v-1142q0 -81 -58 -139t-139 -58h-1142q-81 0 -139 58t-58 139v1142q0 81 58 139 t139 58h1142q81 0 139 -58t58 -139z" />
366
+ <glyph unicode="&#xf16e;" d="M1248 1408q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960zM698 640q0 88 -62 150t-150 62t-150 -62t-62 -150t62 -150t150 -62t150 62t62 150zM1262 640q0 88 -62 150 t-150 62t-150 -62t-62 -150t62 -150t150 -62t150 62t62 150z" />
367
+ <glyph unicode="&#xf170;" d="M768 914l201 -306h-402zM1133 384h94l-459 691l-459 -691h94l104 160h522zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
368
+ <glyph unicode="&#xf171;" horiz-adv-x="1408" d="M815 677q8 -63 -50.5 -101t-111.5 -6q-39 17 -53.5 58t-0.5 82t52 58q36 18 72.5 12t64 -35.5t27.5 -67.5zM926 698q-14 107 -113 164t-197 13q-63 -28 -100.5 -88.5t-34.5 -129.5q4 -91 77.5 -155t165.5 -56q91 8 152 84t50 168zM1165 1240q-20 27 -56 44.5t-58 22 t-71 12.5q-291 47 -566 -2q-43 -7 -66 -12t-55 -22t-50 -43q30 -28 76 -45.5t73.5 -22t87.5 -11.5q228 -29 448 -1q63 8 89.5 12t72.5 21.5t75 46.5zM1222 205q-8 -26 -15.5 -76.5t-14 -84t-28.5 -70t-58 -56.5q-86 -48 -189.5 -71.5t-202 -22t-201.5 18.5q-46 8 -81.5 18 t-76.5 27t-73 43.5t-52 61.5q-25 96 -57 292l6 16l18 9q223 -148 506.5 -148t507.5 148q21 -6 24 -23t-5 -45t-8 -37zM1403 1166q-26 -167 -111 -655q-5 -30 -27 -56t-43.5 -40t-54.5 -31q-252 -126 -610 -88q-248 27 -394 139q-15 12 -25.5 26.5t-17 35t-9 34t-6 39.5 t-5.5 35q-9 50 -26.5 150t-28 161.5t-23.5 147.5t-22 158q3 26 17.5 48.5t31.5 37.5t45 30t46 22.5t48 18.5q125 46 313 64q379 37 676 -50q155 -46 215 -122q16 -20 16.5 -51t-5.5 -54z" />
369
+ <glyph unicode="&#xf172;" d="M848 666q0 43 -41 66t-77 1q-43 -20 -42.5 -72.5t43.5 -70.5q39 -23 81 4t36 72zM928 682q8 -66 -36 -121t-110 -61t-119 40t-56 113q-2 49 25.5 93t72.5 64q70 31 141.5 -10t81.5 -118zM1100 1073q-20 -21 -53.5 -34t-53 -16t-63.5 -8q-155 -20 -324 0q-44 6 -63 9.5 t-52.5 16t-54.5 32.5q13 19 36 31t40 15.5t47 8.5q198 35 408 1q33 -5 51 -8.5t43 -16t39 -31.5zM1142 327q0 7 5.5 26.5t3 32t-17.5 16.5q-161 -106 -365 -106t-366 106l-12 -6l-5 -12q26 -154 41 -210q47 -81 204 -108q249 -46 428 53q34 19 49 51.5t22.5 85.5t12.5 71z M1272 1020q9 53 -8 75q-43 55 -155 88q-216 63 -487 36q-132 -12 -226 -46q-38 -15 -59.5 -25t-47 -34t-29.5 -54q8 -68 19 -138t29 -171t24 -137q1 -5 5 -31t7 -36t12 -27t22 -28q105 -80 284 -100q259 -28 440 63q24 13 39.5 23t31 29t19.5 40q48 267 80 473zM1536 1120 v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
370
+ <glyph unicode="&#xf173;" horiz-adv-x="1024" d="M390 1408h219v-388h364v-241h-364v-394q0 -136 14 -172q13 -37 52 -60q50 -31 117 -31q117 0 232 76v-242q-102 -48 -178 -65q-77 -19 -173 -19q-105 0 -186 27q-78 25 -138 75q-58 51 -79 105q-22 54 -22 161v539h-170v217q91 30 155 84q64 55 103 132q39 78 54 196z " />
371
+ <glyph unicode="&#xf174;" d="M1123 127v181q-88 -56 -174 -56q-51 0 -88 23q-29 17 -39 45q-11 30 -11 129v295h274v181h-274v291h-164q-11 -90 -40 -147t-78 -99q-48 -40 -116 -63v-163h127v-404q0 -78 17 -121q17 -42 59 -78q43 -37 104 -57q62 -20 140 -20q67 0 129 14q57 13 134 49zM1536 1120 v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
372
+ <glyph unicode="&#xf175;" horiz-adv-x="768" d="M765 237q8 -19 -5 -35l-350 -384q-10 -10 -23 -10q-14 0 -24 10l-355 384q-13 16 -5 35q9 19 29 19h224v1248q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1248h224q21 0 29 -19z" />
373
+ <glyph unicode="&#xf176;" horiz-adv-x="768" d="M765 1043q-9 -19 -29 -19h-224v-1248q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v1248h-224q-21 0 -29 19t5 35l350 384q10 10 23 10q14 0 24 -10l355 -384q13 -16 5 -35z" />
374
+ <glyph unicode="&#xf177;" horiz-adv-x="1792" d="M1792 736v-192q0 -14 -9 -23t-23 -9h-1248v-224q0 -21 -19 -29t-35 5l-384 350q-10 10 -10 23q0 14 10 24l384 354q16 14 35 6q19 -9 19 -29v-224h1248q14 0 23 -9t9 -23z" />
375
+ <glyph unicode="&#xf178;" horiz-adv-x="1792" d="M1728 643q0 -14 -10 -24l-384 -354q-16 -14 -35 -6q-19 9 -19 29v224h-1248q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h1248v224q0 21 19 29t35 -5l384 -350q10 -10 10 -23z" />
376
+ <glyph unicode="&#xf179;" horiz-adv-x="1408" d="M1393 321q-39 -125 -123 -250q-129 -196 -257 -196q-49 0 -140 32q-86 32 -151 32q-61 0 -142 -33q-81 -34 -132 -34q-152 0 -301 259q-147 261 -147 503q0 228 113 374q112 144 284 144q72 0 177 -30q104 -30 138 -30q45 0 143 34q102 34 173 34q119 0 213 -65 q52 -36 104 -100q-79 -67 -114 -118q-65 -94 -65 -207q0 -124 69 -223t158 -126zM1017 1494q0 -61 -29 -136q-30 -75 -93 -138q-54 -54 -108 -72q-37 -11 -104 -17q3 149 78 257q74 107 250 148q1 -3 2.5 -11t2.5 -11q0 -4 0.5 -10t0.5 -10z" />
377
+ <glyph unicode="&#xf17a;" horiz-adv-x="1664" d="M682 530v-651l-682 94v557h682zM682 1273v-659h-682v565zM1664 530v-786l-907 125v661h907zM1664 1408v-794h-907v669z" />
378
+ <glyph unicode="&#xf17b;" horiz-adv-x="1408" d="M493 1053q16 0 27.5 11.5t11.5 27.5t-11.5 27.5t-27.5 11.5t-27 -11.5t-11 -27.5t11 -27.5t27 -11.5zM915 1053q16 0 27 11.5t11 27.5t-11 27.5t-27 11.5t-27.5 -11.5t-11.5 -27.5t11.5 -27.5t27.5 -11.5zM103 869q42 0 72 -30t30 -72v-430q0 -43 -29.5 -73t-72.5 -30 t-73 30t-30 73v430q0 42 30 72t73 30zM1163 850v-666q0 -46 -32 -78t-77 -32h-75v-227q0 -43 -30 -73t-73 -30t-73 30t-30 73v227h-138v-227q0 -43 -30 -73t-73 -30q-42 0 -72 30t-30 73l-1 227h-74q-46 0 -78 32t-32 78v666h918zM931 1255q107 -55 171 -153.5t64 -215.5 h-925q0 117 64 215.5t172 153.5l-71 131q-7 13 5 20q13 6 20 -6l72 -132q95 42 201 42t201 -42l72 132q7 12 20 6q12 -7 5 -20zM1408 767v-430q0 -43 -30 -73t-73 -30q-42 0 -72 30t-30 73v430q0 43 30 72.5t72 29.5q43 0 73 -29.5t30 -72.5z" />
379
+ <glyph unicode="&#xf17c;" d="M663 1125q-11 -1 -15.5 -10.5t-8.5 -9.5q-5 -1 -5 5q0 12 19 15h10zM750 1111q-4 -1 -11.5 6.5t-17.5 4.5q24 11 32 -2q3 -6 -3 -9zM399 684q-4 1 -6 -3t-4.5 -12.5t-5.5 -13.5t-10 -13q-7 -10 -1 -12q4 -1 12.5 7t12.5 18q1 3 2 7t2 6t1.5 4.5t0.5 4v3t-1 2.5t-3 2z M1254 325q0 18 -55 42q4 15 7.5 27.5t5 26t3 21.5t0.5 22.5t-1 19.5t-3.5 22t-4 20.5t-5 25t-5.5 26.5q-10 48 -47 103t-72 75q24 -20 57 -83q87 -162 54 -278q-11 -40 -50 -42q-31 -4 -38.5 18.5t-8 83.5t-11.5 107q-9 39 -19.5 69t-19.5 45.5t-15.5 24.5t-13 15t-7.5 7 q-14 62 -31 103t-29.5 56t-23.5 33t-15 40q-4 21 6 53.5t4.5 49.5t-44.5 25q-15 3 -44.5 18t-35.5 16q-8 1 -11 26t8 51t36 27q37 3 51 -30t4 -58q-11 -19 -2 -26.5t30 -0.5q13 4 13 36v37q-5 30 -13.5 50t-21 30.5t-23.5 15t-27 7.5q-107 -8 -89 -134q0 -15 -1 -15 q-9 9 -29.5 10.5t-33 -0.5t-15.5 5q1 57 -16 90t-45 34q-27 1 -41.5 -27.5t-16.5 -59.5q-1 -15 3.5 -37t13 -37.5t15.5 -13.5q10 3 16 14q4 9 -7 8q-7 0 -15.5 14.5t-9.5 33.5q-1 22 9 37t34 14q17 0 27 -21t9.5 -39t-1.5 -22q-22 -15 -31 -29q-8 -12 -27.5 -23.5 t-20.5 -12.5q-13 -14 -15.5 -27t7.5 -18q14 -8 25 -19.5t16 -19t18.5 -13t35.5 -6.5q47 -2 102 15q2 1 23 7t34.5 10.5t29.5 13t21 17.5q9 14 20 8q5 -3 6.5 -8.5t-3 -12t-16.5 -9.5q-20 -6 -56.5 -21.5t-45.5 -19.5q-44 -19 -70 -23q-25 -5 -79 2q-10 2 -9 -2t17 -19 q25 -23 67 -22q17 1 36 7t36 14t33.5 17.5t30 17t24.5 12t17.5 2.5t8.5 -11q0 -2 -1 -4.5t-4 -5t-6 -4.5t-8.5 -5t-9 -4.5t-10 -5t-9.5 -4.5q-28 -14 -67.5 -44t-66.5 -43t-49 -1q-21 11 -63 73q-22 31 -25 22q-1 -3 -1 -10q0 -25 -15 -56.5t-29.5 -55.5t-21 -58t11.5 -63 q-23 -6 -62.5 -90t-47.5 -141q-2 -18 -1.5 -69t-5.5 -59q-8 -24 -29 -3q-32 31 -36 94q-2 28 4 56q4 19 -1 18l-4 -5q-36 -65 10 -166q5 -12 25 -28t24 -20q20 -23 104 -90.5t93 -76.5q16 -15 17.5 -38t-14 -43t-45.5 -23q8 -15 29 -44.5t28 -54t7 -70.5q46 24 7 92 q-4 8 -10.5 16t-9.5 12t-2 6q3 5 13 9.5t20 -2.5q46 -52 166 -36q133 15 177 87q23 38 34 30q12 -6 10 -52q-1 -25 -23 -92q-9 -23 -6 -37.5t24 -15.5q3 19 14.5 77t13.5 90q2 21 -6.5 73.5t-7.5 97t23 70.5q15 18 51 18q1 37 34.5 53t72.5 10.5t60 -22.5zM626 1152 q3 17 -2.5 30t-11.5 15q-9 2 -9 -7q2 -5 5 -6q10 0 7 -15q-3 -20 8 -20q3 0 3 3zM1045 955q-2 8 -6.5 11.5t-13 5t-14.5 5.5q-5 3 -9.5 8t-7 8t-5.5 6.5t-4 4t-4 -1.5q-14 -16 7 -43.5t39 -31.5q9 -1 14.5 8t3.5 20zM867 1168q0 11 -5 19.5t-11 12.5t-9 3q-14 -1 -7 -7l4 -2 q14 -4 18 -31q0 -3 8 2zM921 1401q0 2 -2.5 5t-9 7t-9.5 6q-15 15 -24 15q-9 -1 -11.5 -7.5t-1 -13t-0.5 -12.5q-1 -4 -6 -10.5t-6 -9t3 -8.5q4 -3 8 0t11 9t15 9q1 1 9 1t15 2t9 7zM1486 60q20 -12 31 -24.5t12 -24t-2.5 -22.5t-15.5 -22t-23.5 -19.5t-30 -18.5 t-31.5 -16.5t-32 -15.5t-27 -13q-38 -19 -85.5 -56t-75.5 -64q-17 -16 -68 -19.5t-89 14.5q-18 9 -29.5 23.5t-16.5 25.5t-22 19.5t-47 9.5q-44 1 -130 1q-19 0 -57 -1.5t-58 -2.5q-44 -1 -79.5 -15t-53.5 -30t-43.5 -28.5t-53.5 -11.5q-29 1 -111 31t-146 43q-19 4 -51 9.5 t-50 9t-39.5 9.5t-33.5 14.5t-17 19.5q-10 23 7 66.5t18 54.5q1 16 -4 40t-10 42.5t-4.5 36.5t10.5 27q14 12 57 14t60 12q30 18 42 35t12 51q21 -73 -32 -106q-32 -20 -83 -15q-34 3 -43 -10q-13 -15 5 -57q2 -6 8 -18t8.5 -18t4.5 -17t1 -22q0 -15 -17 -49t-14 -48 q3 -17 37 -26q20 -6 84.5 -18.5t99.5 -20.5q24 -6 74 -22t82.5 -23t55.5 -4q43 6 64.5 28t23 48t-7.5 58.5t-19 52t-20 36.5q-121 190 -169 242q-68 74 -113 40q-11 -9 -15 15q-3 16 -2 38q1 29 10 52t24 47t22 42q8 21 26.5 72t29.5 78t30 61t39 54q110 143 124 195 q-12 112 -16 310q-2 90 24 151.5t106 104.5q39 21 104 21q53 1 106 -13.5t89 -41.5q57 -42 91.5 -121.5t29.5 -147.5q-5 -95 30 -214q34 -113 133 -218q55 -59 99.5 -163t59.5 -191q8 -49 5 -84.5t-12 -55.5t-20 -22q-10 -2 -23.5 -19t-27 -35.5t-40.5 -33.5t-61 -14 q-18 1 -31.5 5t-22.5 13.5t-13.5 15.5t-11.5 20.5t-9 19.5q-22 37 -41 30t-28 -49t7 -97q20 -70 1 -195q-10 -65 18 -100.5t73 -33t85 35.5q59 49 89.5 66.5t103.5 42.5q53 18 77 36.5t18.5 34.5t-25 28.5t-51.5 23.5q-33 11 -49.5 48t-15 72.5t15.5 47.5q1 -31 8 -56.5 t14.5 -40.5t20.5 -28.5t21 -19t21.5 -13t16.5 -9.5z" />
380
+ <glyph unicode="&#xf17d;" d="M1024 36q-42 241 -140 498h-2l-2 -1q-16 -6 -43 -16.5t-101 -49t-137 -82t-131 -114.5t-103 -148l-15 11q184 -150 418 -150q132 0 256 52zM839 643q-21 49 -53 111q-311 -93 -673 -93q-1 -7 -1 -21q0 -124 44 -236.5t124 -201.5q50 89 123.5 166.5t142.5 124.5t130.5 81 t99.5 48l37 13q4 1 13 3.5t13 4.5zM732 855q-120 213 -244 378q-138 -65 -234 -186t-128 -272q302 0 606 80zM1416 536q-210 60 -409 29q87 -239 128 -469q111 75 185 189.5t96 250.5zM611 1277q-1 0 -2 -1q1 1 2 1zM1201 1132q-185 164 -433 164q-76 0 -155 -19 q131 -170 246 -382q69 26 130 60.5t96.5 61.5t65.5 57t37.5 40.5zM1424 647q-3 232 -149 410l-1 -1q-9 -12 -19 -24.5t-43.5 -44.5t-71 -60.5t-100 -65t-131.5 -64.5q25 -53 44 -95q2 -6 6.5 -17.5t7.5 -16.5q36 5 74.5 7t73.5 2t69 -1.5t64 -4t56.5 -5.5t48 -6.5t36.5 -6 t25 -4.5zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
381
+ <glyph unicode="&#xf17e;" d="M1173 473q0 50 -19.5 91.5t-48.5 68.5t-73 49t-82.5 34t-87.5 23l-104 24q-30 7 -44 10.5t-35 11.5t-30 16t-16.5 21t-7.5 30q0 77 144 77q43 0 77 -12t54 -28.5t38 -33.5t40 -29t48 -12q47 0 75.5 32t28.5 77q0 55 -56 99.5t-142 67.5t-182 23q-68 0 -132 -15.5 t-119.5 -47t-89 -87t-33.5 -128.5q0 -61 19 -106.5t56 -75.5t80 -48.5t103 -32.5l146 -36q90 -22 112 -36q32 -20 32 -60q0 -39 -40 -64.5t-105 -25.5q-51 0 -91.5 16t-65 38.5t-45.5 45t-46 38.5t-54 16q-50 0 -75.5 -30t-25.5 -75q0 -92 122 -157.5t291 -65.5 q73 0 140 18.5t122.5 53.5t88.5 93.5t33 131.5zM1536 256q0 -159 -112.5 -271.5t-271.5 -112.5q-130 0 -234 80q-77 -16 -150 -16q-143 0 -273.5 55.5t-225 150t-150 225t-55.5 273.5q0 73 16 150q-80 104 -80 234q0 159 112.5 271.5t271.5 112.5q130 0 234 -80 q77 16 150 16q143 0 273.5 -55.5t225 -150t150 -225t55.5 -273.5q0 -73 -16 -150q80 -104 80 -234z" />
382
+ <glyph unicode="&#xf180;" horiz-adv-x="1664" d="M1483 512l-587 -587q-52 -53 -127.5 -53t-128.5 53l-587 587q-53 53 -53 128t53 128l587 587q53 53 128 53t128 -53l265 -265l-398 -399l-188 188q-42 42 -99 42q-59 0 -100 -41l-120 -121q-42 -40 -42 -99q0 -58 42 -100l406 -408q30 -28 67 -37l6 -4h28q60 0 99 41 l619 619l2 -3q53 -53 53 -128t-53 -128zM1406 1138l120 -120q14 -15 14 -36t-14 -36l-730 -730q-17 -15 -37 -15v0q-4 0 -6 1q-18 2 -30 14l-407 408q-14 15 -14 36t14 35l121 120q13 15 35 15t36 -15l252 -252l574 575q15 15 36 15t36 -15z" />
383
+ <glyph unicode="&#xf181;" d="M704 192v1024q0 14 -9 23t-23 9h-480q-14 0 -23 -9t-9 -23v-1024q0 -14 9 -23t23 -9h480q14 0 23 9t9 23zM1376 576v640q0 14 -9 23t-23 9h-480q-14 0 -23 -9t-9 -23v-640q0 -14 9 -23t23 -9h480q14 0 23 9t9 23zM1536 1344v-1408q0 -26 -19 -45t-45 -19h-1408 q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h1408q26 0 45 -19t19 -45z" />
384
+ <glyph unicode="&#xf182;" horiz-adv-x="1280" d="M1280 480q0 -40 -28 -68t-68 -28q-51 0 -80 43l-227 341h-45v-132l247 -411q9 -15 9 -33q0 -26 -19 -45t-45 -19h-192v-272q0 -46 -33 -79t-79 -33h-160q-46 0 -79 33t-33 79v272h-192q-26 0 -45 19t-19 45q0 18 9 33l247 411v132h-45l-227 -341q-29 -43 -80 -43 q-40 0 -68 28t-28 68q0 29 16 53l256 384q73 107 176 107h384q103 0 176 -107l256 -384q16 -24 16 -53zM864 1280q0 -93 -65.5 -158.5t-158.5 -65.5t-158.5 65.5t-65.5 158.5t65.5 158.5t158.5 65.5t158.5 -65.5t65.5 -158.5z" />
385
+ <glyph unicode="&#xf183;" horiz-adv-x="1024" d="M1024 832v-416q0 -40 -28 -68t-68 -28t-68 28t-28 68v352h-64v-912q0 -46 -33 -79t-79 -33t-79 33t-33 79v464h-64v-464q0 -46 -33 -79t-79 -33t-79 33t-33 79v912h-64v-352q0 -40 -28 -68t-68 -28t-68 28t-28 68v416q0 80 56 136t136 56h640q80 0 136 -56t56 -136z M736 1280q0 -93 -65.5 -158.5t-158.5 -65.5t-158.5 65.5t-65.5 158.5t65.5 158.5t158.5 65.5t158.5 -65.5t65.5 -158.5z" />
386
+ <glyph unicode="&#xf184;" d="M773 234l350 473q16 22 24.5 59t-6 85t-61.5 79q-40 26 -83 25.5t-73.5 -17.5t-54.5 -45q-36 -40 -96 -40q-59 0 -95 40q-24 28 -54.5 45t-73.5 17.5t-84 -25.5q-46 -31 -60.5 -79t-6 -85t24.5 -59zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103 t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
387
+ <glyph unicode="&#xf185;" horiz-adv-x="1792" d="M1472 640q0 117 -45.5 223.5t-123 184t-184 123t-223.5 45.5t-223.5 -45.5t-184 -123t-123 -184t-45.5 -223.5t45.5 -223.5t123 -184t184 -123t223.5 -45.5t223.5 45.5t184 123t123 184t45.5 223.5zM1748 363q-4 -15 -20 -20l-292 -96v-306q0 -16 -13 -26q-15 -10 -29 -4 l-292 94l-180 -248q-10 -13 -26 -13t-26 13l-180 248l-292 -94q-14 -6 -29 4q-13 10 -13 26v306l-292 96q-16 5 -20 20q-5 17 4 29l180 248l-180 248q-9 13 -4 29q4 15 20 20l292 96v306q0 16 13 26q15 10 29 4l292 -94l180 248q9 12 26 12t26 -12l180 -248l292 94 q14 6 29 -4q13 -10 13 -26v-306l292 -96q16 -5 20 -20q5 -16 -4 -29l-180 -248l180 -248q9 -12 4 -29z" />
388
+ <glyph unicode="&#xf186;" d="M1262 233q-54 -9 -110 -9q-182 0 -337 90t-245 245t-90 337q0 192 104 357q-201 -60 -328.5 -229t-127.5 -384q0 -130 51 -248.5t136.5 -204t204 -136.5t248.5 -51q144 0 273.5 61.5t220.5 171.5zM1465 318q-94 -203 -283.5 -324.5t-413.5 -121.5q-156 0 -298 61 t-245 164t-164 245t-61 298q0 153 57.5 292.5t156 241.5t235.5 164.5t290 68.5q44 2 61 -39q18 -41 -15 -72q-86 -78 -131.5 -181.5t-45.5 -218.5q0 -148 73 -273t198 -198t273 -73q118 0 228 51q41 18 72 -13q14 -14 17.5 -34t-4.5 -38z" />
389
+ <glyph unicode="&#xf187;" horiz-adv-x="1792" d="M1088 704q0 26 -19 45t-45 19h-256q-26 0 -45 -19t-19 -45t19 -45t45 -19h256q26 0 45 19t19 45zM1664 896v-960q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45v960q0 26 19 45t45 19h1408q26 0 45 -19t19 -45zM1728 1344v-256q0 -26 -19 -45t-45 -19h-1536 q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h1536q26 0 45 -19t19 -45z" />
390
+ <glyph unicode="&#xf188;" horiz-adv-x="1664" d="M1632 576q0 -26 -19 -45t-45 -19h-224q0 -171 -67 -290l208 -209q19 -19 19 -45t-19 -45q-18 -19 -45 -19t-45 19l-198 197q-5 -5 -15 -13t-42 -28.5t-65 -36.5t-82 -29t-97 -13v896h-128v-896q-51 0 -101.5 13.5t-87 33t-66 39t-43.5 32.5l-15 14l-183 -207 q-20 -21 -48 -21q-24 0 -43 16q-19 18 -20.5 44.5t15.5 46.5l202 227q-58 114 -58 274h-224q-26 0 -45 19t-19 45t19 45t45 19h224v294l-173 173q-19 19 -19 45t19 45t45 19t45 -19l173 -173h844l173 173q19 19 45 19t45 -19t19 -45t-19 -45l-173 -173v-294h224q26 0 45 -19 t19 -45zM1152 1152h-640q0 133 93.5 226.5t226.5 93.5t226.5 -93.5t93.5 -226.5z" />
391
+ <glyph unicode="&#xf189;" horiz-adv-x="1920" d="M1917 1016q23 -64 -150 -294q-24 -32 -65 -85q-78 -100 -90 -131q-17 -41 14 -81q17 -21 81 -82h1l1 -1l1 -1l2 -2q141 -131 191 -221q3 -5 6.5 -12.5t7 -26.5t-0.5 -34t-25 -27.5t-59 -12.5l-256 -4q-24 -5 -56 5t-52 22l-20 12q-30 21 -70 64t-68.5 77.5t-61 58 t-56.5 15.5q-3 -1 -8 -3.5t-17 -14.5t-21.5 -29.5t-17 -52t-6.5 -77.5q0 -15 -3.5 -27.5t-7.5 -18.5l-4 -5q-18 -19 -53 -22h-115q-71 -4 -146 16.5t-131.5 53t-103 66t-70.5 57.5l-25 24q-10 10 -27.5 30t-71.5 91t-106 151t-122.5 211t-130.5 272q-6 16 -6 27t3 16l4 6 q15 19 57 19l274 2q12 -2 23 -6.5t16 -8.5l5 -3q16 -11 24 -32q20 -50 46 -103.5t41 -81.5l16 -29q29 -60 56 -104t48.5 -68.5t41.5 -38.5t34 -14t27 5q2 1 5 5t12 22t13.5 47t9.5 81t0 125q-2 40 -9 73t-14 46l-6 12q-25 34 -85 43q-13 2 5 24q17 19 38 30q53 26 239 24 q82 -1 135 -13q20 -5 33.5 -13.5t20.5 -24t10.5 -32t3.5 -45.5t-1 -55t-2.5 -70.5t-1.5 -82.5q0 -11 -1 -42t-0.5 -48t3.5 -40.5t11.5 -39t22.5 -24.5q8 -2 17 -4t26 11t38 34.5t52 67t68 107.5q60 104 107 225q4 10 10 17.5t11 10.5l4 3l5 2.5t13 3t20 0.5l288 2 q39 5 64 -2.5t31 -16.5z" />
392
+ <glyph unicode="&#xf18a;" horiz-adv-x="1792" d="M675 252q21 34 11 69t-45 50q-34 14 -73 1t-60 -46q-22 -34 -13 -68.5t43 -50.5t74.5 -2.5t62.5 47.5zM769 373q8 13 3.5 26.5t-17.5 18.5q-14 5 -28.5 -0.5t-21.5 -18.5q-17 -31 13 -45q14 -5 29 0.5t22 18.5zM943 266q-45 -102 -158 -150t-224 -12 q-107 34 -147.5 126.5t6.5 187.5q47 93 151.5 139t210.5 19q111 -29 158.5 -119.5t2.5 -190.5zM1255 426q-9 96 -89 170t-208.5 109t-274.5 21q-223 -23 -369.5 -141.5t-132.5 -264.5q9 -96 89 -170t208.5 -109t274.5 -21q223 23 369.5 141.5t132.5 264.5zM1563 422 q0 -68 -37 -139.5t-109 -137t-168.5 -117.5t-226 -83t-270.5 -31t-275 33.5t-240.5 93t-171.5 151t-65 199.5q0 115 69.5 245t197.5 258q169 169 341.5 236t246.5 -7q65 -64 20 -209q-4 -14 -1 -20t10 -7t14.5 0.5t13.5 3.5l6 2q139 59 246 59t153 -61q45 -63 0 -178 q-2 -13 -4.5 -20t4.5 -12.5t12 -7.5t17 -6q57 -18 103 -47t80 -81.5t34 -116.5zM1489 1046q42 -47 54.5 -108.5t-6.5 -117.5q-8 -23 -29.5 -34t-44.5 -4q-23 8 -34 29.5t-4 44.5q20 63 -24 111t-107 35q-24 -5 -45 8t-25 37q-5 24 8 44.5t37 25.5q60 13 119 -5.5t101 -65.5z M1670 1209q87 -96 112.5 -222.5t-13.5 -241.5q-9 -27 -34 -40t-52 -4t-40 34t-5 52q28 82 10 172t-80 158q-62 69 -148 95.5t-173 8.5q-28 -6 -52 9.5t-30 43.5t9.5 51.5t43.5 29.5q123 26 244 -11.5t208 -134.5z" />
393
+ <glyph unicode="&#xf18b;" d="M1133 -34q-171 -94 -368 -94q-196 0 -367 94q138 87 235.5 211t131.5 268q35 -144 132.5 -268t235.5 -211zM638 1394v-485q0 -252 -126.5 -459.5t-330.5 -306.5q-181 215 -181 495q0 187 83.5 349.5t229.5 269.5t325 137zM1536 638q0 -280 -181 -495 q-204 99 -330.5 306.5t-126.5 459.5v485q179 -30 325 -137t229.5 -269.5t83.5 -349.5z" />
394
+ <glyph unicode="&#xf18c;" horiz-adv-x="1408" d="M1402 433q-32 -80 -76 -138t-91 -88.5t-99 -46.5t-101.5 -14.5t-96.5 8.5t-86.5 22t-69.5 27.5t-46 22.5l-17 10q-113 -228 -289.5 -359.5t-384.5 -132.5q-19 0 -32 13t-13 32t13 31.5t32 12.5q173 1 322.5 107.5t251.5 294.5q-36 -14 -72 -23t-83 -13t-91 2.5t-93 28.5 t-92 59t-84.5 100t-74.5 146q114 47 214 57t167.5 -7.5t124.5 -56.5t88.5 -77t56.5 -82q53 131 79 291q-7 -1 -18 -2.5t-46.5 -2.5t-69.5 0.5t-81.5 10t-88.5 23t-84 42.5t-75 65t-54.5 94.5t-28.5 127.5q70 28 133.5 36.5t112.5 -1t92 -30t73.5 -50t56 -61t42 -63t27.5 -56 t16 -39.5l4 -16q12 122 12 195q-8 6 -21.5 16t-49 44.5t-63.5 71.5t-54 93t-33 112.5t12 127t70 138.5q73 -25 127.5 -61.5t84.5 -76.5t48 -85t20.5 -89t-0.5 -85.5t-13 -76.5t-19 -62t-17 -42l-7 -15q1 -5 1 -50.5t-1 -71.5q3 7 10 18.5t30.5 43t50.5 58t71 55.5t91.5 44.5 t112 14.5t132.5 -24q-2 -78 -21.5 -141.5t-50 -104.5t-69.5 -71.5t-81.5 -45.5t-84.5 -24t-80 -9.5t-67.5 1t-46.5 4.5l-17 3q-23 -147 -73 -283q6 7 18 18.5t49.5 41t77.5 52.5t99.5 42t117.5 20t129 -23.5t137 -77.5z" />
395
+ <glyph unicode="&#xf18d;" horiz-adv-x="1280" d="M1259 283v-66q0 -85 -57.5 -144.5t-138.5 -59.5h-57l-260 -269v269h-529q-81 0 -138.5 59.5t-57.5 144.5v66h1238zM1259 609v-255h-1238v255h1238zM1259 937v-255h-1238v255h1238zM1259 1077v-67h-1238v67q0 84 57.5 143.5t138.5 59.5h846q81 0 138.5 -59.5t57.5 -143.5z " />
396
+ <glyph unicode="&#xf18e;" d="M1152 640q0 -14 -9 -23l-320 -320q-9 -9 -23 -9q-13 0 -22.5 9.5t-9.5 22.5v192h-352q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h352v192q0 14 9 23t23 9q12 0 24 -10l319 -319q9 -9 9 -23zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198 t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
397
+ <glyph unicode="&#xf190;" d="M1152 736v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-352v-192q0 -14 -9 -23t-23 -9q-12 0 -24 10l-319 319q-9 9 -9 23t9 23l320 320q9 9 23 9q13 0 22.5 -9.5t9.5 -22.5v-192h352q13 0 22.5 -9.5t9.5 -22.5zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198 t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
398
+ <glyph unicode="&#xf191;" d="M1024 960v-640q0 -26 -19 -45t-45 -19q-20 0 -37 12l-448 320q-27 19 -27 52t27 52l448 320q17 12 37 12q26 0 45 -19t19 -45zM1280 160v960q0 13 -9.5 22.5t-22.5 9.5h-960q-13 0 -22.5 -9.5t-9.5 -22.5v-960q0 -13 9.5 -22.5t22.5 -9.5h960q13 0 22.5 9.5t9.5 22.5z M1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
399
+ <glyph unicode="&#xf192;" d="M1024 640q0 -106 -75 -181t-181 -75t-181 75t-75 181t75 181t181 75t181 -75t75 -181zM768 1184q-148 0 -273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273t-73 273t-198 198t-273 73zM1536 640q0 -209 -103 -385.5t-279.5 -279.5 t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
400
+ <glyph unicode="&#xf193;" horiz-adv-x="1664" d="M1023 349l102 -204q-58 -179 -210 -290t-339 -111q-156 0 -288.5 77.5t-210 210t-77.5 288.5q0 181 104.5 330t274.5 211l17 -131q-122 -54 -195 -165.5t-73 -244.5q0 -185 131.5 -316.5t316.5 -131.5q126 0 232.5 65t165 175.5t49.5 236.5zM1571 249l58 -114l-256 -128 q-13 -7 -29 -7q-40 0 -57 35l-239 477h-472q-24 0 -42.5 16.5t-21.5 40.5l-96 779q-2 16 6 42q14 51 57 82.5t97 31.5q66 0 113 -47t47 -113q0 -69 -52 -117.5t-120 -41.5l37 -289h423v-128h-407l16 -128h455q40 0 57 -35l228 -455z" />
401
+ <glyph unicode="&#xf194;" d="M1254 899q16 85 -21 132q-52 65 -187 45q-17 -3 -41 -12.5t-57.5 -30.5t-64.5 -48.5t-59.5 -70t-44.5 -91.5q80 7 113.5 -16t26.5 -99q-5 -52 -52 -143q-43 -78 -71 -99q-44 -32 -87 14q-23 24 -37.5 64.5t-19 73t-10 84t-8.5 71.5q-23 129 -34 164q-12 37 -35.5 69 t-50.5 40q-57 16 -127 -25q-54 -32 -136.5 -106t-122.5 -102v-7q16 -8 25.5 -26t21.5 -20q21 -3 54.5 8.5t58 10.5t41.5 -30q11 -18 18.5 -38.5t15 -48t12.5 -40.5q17 -46 53 -187q36 -146 57 -197q42 -99 103 -125q43 -12 85 -1.5t76 31.5q131 77 250 237 q104 139 172.5 292.5t82.5 226.5zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
402
+ <glyph unicode="&#xf195;" horiz-adv-x="1152" d="M1152 704q0 -191 -94.5 -353t-256.5 -256.5t-353 -94.5h-160q-14 0 -23 9t-9 23v611l-215 -66q-3 -1 -9 -1q-10 0 -19 6q-13 10 -13 26v128q0 23 23 31l233 71v93l-215 -66q-3 -1 -9 -1q-10 0 -19 6q-13 10 -13 26v128q0 23 23 31l233 71v250q0 14 9 23t23 9h160 q14 0 23 -9t9 -23v-181l375 116q15 5 28 -5t13 -26v-128q0 -23 -23 -31l-393 -121v-93l375 116q15 5 28 -5t13 -26v-128q0 -23 -23 -31l-393 -121v-487q188 13 318 151t130 328q0 14 9 23t23 9h160q14 0 23 -9t9 -23z" />
403
+ <glyph unicode="&#xf196;" horiz-adv-x="1408" d="M1152 736v-64q0 -14 -9 -23t-23 -9h-352v-352q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v352h-352q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h352v352q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-352h352q14 0 23 -9t9 -23zM1280 288v832q0 66 -47 113t-113 47h-832 q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113zM1408 1120v-832q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h832q119 0 203.5 -84.5t84.5 -203.5z" />
404
+ <glyph unicode="&#xf197;" horiz-adv-x="1792" />
405
+ <glyph unicode="&#xf198;" horiz-adv-x="1792" />
406
+ <glyph unicode="&#xf199;" horiz-adv-x="1792" />
407
+ <glyph unicode="&#xf19a;" horiz-adv-x="1792" />
408
+ <glyph unicode="&#xf19b;" horiz-adv-x="1792" />
409
+ <glyph unicode="&#xf19c;" horiz-adv-x="1792" />
410
+ <glyph unicode="&#xf19d;" horiz-adv-x="1792" />
411
+ <glyph unicode="&#xf19e;" horiz-adv-x="1792" />
412
+ <glyph unicode="&#xf500;" horiz-adv-x="1792" />
413
+ </font>
414
+ </defs></svg>
assets/jui/fonts/font-awesome4/fontawesome-webfont.ttf ADDED
Binary file
assets/jui/fonts/font-awesome4/fontawesome-webfont.woff ADDED
Binary file
assets/jui/less/font-awesome.less CHANGED
@@ -325,5 +325,46 @@ ul.icons {
325
  .icon-sitemap:before { content: "\f0e8"; }
326
  .icon-umbrella:before { content: "\f0e9"; }
327
  .icon-paste:before { content: "\f0ea"; }
 
 
 
 
328
 
329
- .icon-user-md:before { content: "\f200"; }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
325
  .icon-sitemap:before { content: "\f0e8"; }
326
  .icon-umbrella:before { content: "\f0e9"; }
327
  .icon-paste:before { content: "\f0ea"; }
328
+ .icon-lightbulb:before { content: "\f0eb"; }
329
+ .icon-exchange:before { content: "\f0ec"; }
330
+ .icon-cloud-download:before { content: "\f0ed"; }
331
+ .icon-cloud-upload:before { content: "\f0ee"; }
332
 
333
+ .icon-user-md:before { content: "\f0f0"; }
334
+ .icon-stethoscope:before { content: "\f0f1"; }
335
+ .icon-suitcase:before { content: "\f0f2"; }
336
+ .icon-bell-alt:before { content: "\f0f3"; }
337
+ .icon-coffee:before { content: "\f0f4"; }
338
+ .icon-food:before { content: "\f0f5"; }
339
+ .icon-file-alt:before { content: "\f0f6"; }
340
+ .icon-building:before { content: "\f0f7"; }
341
+ .icon-hospital:before { content: "\f0f8"; }
342
+ .icon-ambulance:before { content: "\f0f9"; }
343
+ .icon-medkit:before { content: "\f0fa"; }
344
+ .icon-fighter-jet:before { content: "\f0fb"; }
345
+ .icon-beer:before { content: "\f0fc"; }
346
+ .icon-h-sign:before { content: "\f0fd"; }
347
+ .icon-plus-sign-alt:before { content: "\f0fe"; }
348
+
349
+ .icon-double-angle-left:before { content: "\f100"; }
350
+ .icon-double-angle-right:before { content: "\f101"; }
351
+ .icon-double-angle-up:before { content: "\f102"; }
352
+ .icon-double-angle-down:before { content: "\f103"; }
353
+ .icon-angle-left:before { content: "\f104"; }
354
+ .icon-angle-right:before { content: "\f105"; }
355
+ .icon-angle-up:before { content: "\f106"; }
356
+ .icon-angle-down:before { content: "\f107"; }
357
+ .icon-desktop:before { content: "\f108"; }
358
+ .icon-laptop:before { content: "\f109"; }
359
+ .icon-tablet:before { content: "\f10a"; }
360
+ .icon-mobile-phone:before { content: "\f10b"; }
361
+ .icon-circle-blank:before { content: "\f10c"; }
362
+ .icon-quote-left:before { content: "\f10d"; }
363
+ .icon-quote-right:before { content: "\f10e"; }
364
+
365
+ .icon-spinner:before { content: "\f110"; }
366
+ .icon-circle:before { content: "\f111"; }
367
+ .icon-reply:before { content: "\f112"; }
368
+ .icon-github-alt:before { content: "\f113"; }
369
+ .icon-folder-close-alt:before { content: "\f114"; }
370
+ .icon-folder-open-alt:before { content: "\f115"; }
assets/jui/less/font-awesome/mixins.less CHANGED
@@ -7,7 +7,7 @@
7
  }
8
 
9
  .icon-FontAwesome() {
10
- font-family: FontAwesome;
11
  font-weight: normal;
12
  font-style: normal;
13
  text-decoration: inherit;
7
  }
8
 
9
  .icon-FontAwesome() {
10
+ font-family: FontAwesome, sans-serif;
11
  font-weight: normal;
12
  font-style: normal;
13
  text-decoration: inherit;
assets/jui/less/font-awesome4/bordered-pulled.less ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // Bordered & Pulled
2
+ // -------------------------
3
+
4
+ .@{fa-css-prefix}-border {
5
+ padding: .2em .25em .15em;
6
+ border: solid .08em @fa-border-color;
7
+ border-radius: .1em;
8
+ }
9
+
10
+ .pull-right { float: right; }
11
+ .pull-left { float: left; }
12
+
13
+ .@{fa-css-prefix} {
14
+ &.pull-left { margin-right: .3em; }
15
+ &.pull-right { margin-left: .3em; }
16
+ }
assets/jui/less/font-awesome4/core.less ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // Base Class Definition
2
+ // -------------------------
3
+
4
+ .@{fa-css-prefix} {
5
+ display: inline-block;
6
+ font-family: FontAwesome;
7
+ font-style: normal;
8
+ font-weight: normal;
9
+ line-height: 1;
10
+ -webkit-font-smoothing: antialiased;
11
+ -moz-osx-font-smoothing: grayscale;
12
+ }
assets/jui/less/font-awesome4/fixed-width.less ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
1
+ // Fixed Width Icons
2
+ // -------------------------
3
+ .@{fa-css-prefix}-fw {
4
+ width: (18em / 14);
5
+ text-align: center;
6
+ }
assets/jui/less/font-awesome4/font-awesome.less ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*!
2
+ * Font Awesome 4.0.3 by @davegandy - http://fontawesome.io - @fontawesome
3
+ * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)
4
+ */
5
+
6
+ @import "variables";
7
+ @import "mixins";
8
+ @import "path";
9
+ @import "core";
10
+ @import "larger";
11
+ @import "fixed-width";
12
+ @import "list";
13
+ @import "bordered-pulled";
14
+ @import "spinning";
15
+ @import "rotated-flipped";
16
+ @import "stacked";
17
+ @import "icons";
assets/jui/less/font-awesome4/icons.less ADDED
@@ -0,0 +1,412 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen
2
+ readers do not read off random characters that represent icons */
3
+
4
+ .@{fa-css-prefix}-glass:before { content: @fa-var-glass; }
5
+ .@{fa-css-prefix}-music:before { content: @fa-var-music; }
6
+ .@{fa-css-prefix}-search:before { content: @fa-var-search; }
7
+ .@{fa-css-prefix}-envelope-o:before { content: @fa-var-envelope-o; }
8
+ .@{fa-css-prefix}-heart:before { content: @fa-var-heart; }
9
+ .@{fa-css-prefix}-star:before { content: @fa-var-star; }
10
+ .@{fa-css-prefix}-star-o:before { content: @fa-var-star-o; }
11
+ .@{fa-css-prefix}-user:before { content: @fa-var-user; }
12
+ .@{fa-css-prefix}-film:before { content: @fa-var-film; }
13
+ .@{fa-css-prefix}-th-large:before { content: @fa-var-th-large; }
14
+ .@{fa-css-prefix}-th:before { content: @fa-var-th; }
15
+ .@{fa-css-prefix}-th-list:before { content: @fa-var-th-list; }
16
+ .@{fa-css-prefix}-check:before { content: @fa-var-check; }
17
+ .@{fa-css-prefix}-times:before { content: @fa-var-times; }
18
+ .@{fa-css-prefix}-search-plus:before { content: @fa-var-search-plus; }
19
+ .@{fa-css-prefix}-search-minus:before { content: @fa-var-search-minus; }
20
+ .@{fa-css-prefix}-power-off:before { content: @fa-var-power-off; }
21
+ .@{fa-css-prefix}-signal:before { content: @fa-var-signal; }
22
+ .@{fa-css-prefix}-gear:before,
23
+ .@{fa-css-prefix}-cog:before { content: @fa-var-cog; }
24
+ .@{fa-css-prefix}-trash-o:before { content: @fa-var-trash-o; }
25
+ .@{fa-css-prefix}-home:before { content: @fa-var-home; }
26
+ .@{fa-css-prefix}-file-o:before { content: @fa-var-file-o; }
27
+ .@{fa-css-prefix}-clock-o:before { content: @fa-var-clock-o; }
28
+ .@{fa-css-prefix}-road:before { content: @fa-var-road; }
29
+ .@{fa-css-prefix}-download:before { content: @fa-var-download; }
30
+ .@{fa-css-prefix}-arrow-circle-o-down:before { content: @fa-var-arrow-circle-o-down; }
31
+ .@{fa-css-prefix}-arrow-circle-o-up:before { content: @fa-var-arrow-circle-o-up; }
32
+ .@{fa-css-prefix}-inbox:before { content: @fa-var-inbox; }
33
+ .@{fa-css-prefix}-play-circle-o:before { content: @fa-var-play-circle-o; }
34
+ .@{fa-css-prefix}-rotate-right:before,
35
+ .@{fa-css-prefix}-repeat:before { content: @fa-var-repeat; }
36
+ .@{fa-css-prefix}-refresh:before { content: @fa-var-refresh; }
37
+ .@{fa-css-prefix}-list-alt:before { content: @fa-var-list-alt; }
38
+ .@{fa-css-prefix}-lock:before { content: @fa-var-lock; }
39
+ .@{fa-css-prefix}-flag:before { content: @fa-var-flag; }
40
+ .@{fa-css-prefix}-headphones:before { content: @fa-var-headphones; }
41
+ .@{fa-css-prefix}-volume-off:before { content: @fa-var-volume-off; }
42
+ .@{fa-css-prefix}-volume-down:before { content: @fa-var-volume-down; }
43
+ .@{fa-css-prefix}-volume-up:before { content: @fa-var-volume-up; }
44
+ .@{fa-css-prefix}-qrcode:before { content: @fa-var-qrcode; }
45
+ .@{fa-css-prefix}-barcode:before { content: @fa-var-barcode; }
46
+ .@{fa-css-prefix}-tag:before { content: @fa-var-tag; }
47
+ .@{fa-css-prefix}-tags:before { content: @fa-var-tags; }
48
+ .@{fa-css-prefix}-book:before { content: @fa-var-book; }
49
+ .@{fa-css-prefix}-bookmark:before { content: @fa-var-bookmark; }
50
+ .@{fa-css-prefix}-print:before { content: @fa-var-print; }
51
+ .@{fa-css-prefix}-camera:before { content: @fa-var-camera; }
52
+ .@{fa-css-prefix}-font:before { content: @fa-var-font; }
53
+ .@{fa-css-prefix}-bold:before { content: @fa-var-bold; }
54
+ .@{fa-css-prefix}-italic:before { content: @fa-var-italic; }
55
+ .@{fa-css-prefix}-text-height:before { content: @fa-var-text-height; }
56
+ .@{fa-css-prefix}-text-width:before { content: @fa-var-text-width; }
57
+ .@{fa-css-prefix}-align-left:before { content: @fa-var-align-left; }
58
+ .@{fa-css-prefix}-align-center:before { content: @fa-var-align-center; }
59
+ .@{fa-css-prefix}-align-right:before { content: @fa-var-align-right; }
60
+ .@{fa-css-prefix}-align-justify:before { content: @fa-var-align-justify; }
61
+ .@{fa-css-prefix}-list:before { content: @fa-var-list; }
62
+ .@{fa-css-prefix}-dedent:before,
63
+ .@{fa-css-prefix}-outdent:before { content: @fa-var-outdent; }
64
+ .@{fa-css-prefix}-indent:before { content: @fa-var-indent; }
65
+ .@{fa-css-prefix}-video-camera:before { content: @fa-var-video-camera; }
66
+ .@{fa-css-prefix}-picture-o:before { content: @fa-var-picture-o; }
67
+ .@{fa-css-prefix}-pencil:before { content: @fa-var-pencil; }
68
+ .@{fa-css-prefix}-map-marker:before { content: @fa-var-map-marker; }
69
+ .@{fa-css-prefix}-adjust:before { content: @fa-var-adjust; }
70
+ .@{fa-css-prefix}-tint:before { content: @fa-var-tint; }
71
+ .@{fa-css-prefix}-edit:before,
72
+ .@{fa-css-prefix}-pencil-square-o:before { content: @fa-var-pencil-square-o; }
73
+ .@{fa-css-prefix}-share-square-o:before { content: @fa-var-share-square-o; }
74
+ .@{fa-css-prefix}-check-square-o:before { content: @fa-var-check-square-o; }
75
+ .@{fa-css-prefix}-arrows:before { content: @fa-var-arrows; }
76
+ .@{fa-css-prefix}-step-backward:before { content: @fa-var-step-backward; }
77
+ .@{fa-css-prefix}-fast-backward:before { content: @fa-var-fast-backward; }
78
+ .@{fa-css-prefix}-backward:before { content: @fa-var-backward; }
79
+ .@{fa-css-prefix}-play:before { content: @fa-var-play; }
80
+ .@{fa-css-prefix}-pause:before { content: @fa-var-pause; }
81
+ .@{fa-css-prefix}-stop:before { content: @fa-var-stop; }
82
+ .@{fa-css-prefix}-forward:before { content: @fa-var-forward; }
83
+ .@{fa-css-prefix}-fast-forward:before { content: @fa-var-fast-forward; }
84
+ .@{fa-css-prefix}-step-forward:before { content: @fa-var-step-forward; }
85
+ .@{fa-css-prefix}-eject:before { content: @fa-var-eject; }
86
+ .@{fa-css-prefix}-chevron-left:before { content: @fa-var-chevron-left; }
87
+ .@{fa-css-prefix}-chevron-right:before { content: @fa-var-chevron-right; }
88
+ .@{fa-css-prefix}-plus-circle:before { content: @fa-var-plus-circle; }
89
+ .@{fa-css-prefix}-minus-circle:before { content: @fa-var-minus-circle; }
90
+ .@{fa-css-prefix}-times-circle:before { content: @fa-var-times-circle; }
91
+ .@{fa-css-prefix}-check-circle:before { content: @fa-var-check-circle; }
92
+ .@{fa-css-prefix}-question-circle:before { content: @fa-var-question-circle; }
93
+ .@{fa-css-prefix}-info-circle:before { content: @fa-var-info-circle; }
94
+ .@{fa-css-prefix}-crosshairs:before { content: @fa-var-crosshairs; }
95
+ .@{fa-css-prefix}-times-circle-o:before { content: @fa-var-times-circle-o; }
96
+ .@{fa-css-prefix}-check-circle-o:before { content: @fa-var-check-circle-o; }
97
+ .@{fa-css-prefix}-ban:before { content: @fa-var-ban; }
98
+ .@{fa-css-prefix}-arrow-left:before { content: @fa-var-arrow-left; }
99
+ .@{fa-css-prefix}-arrow-right:before { content: @fa-var-arrow-right; }
100
+ .@{fa-css-prefix}-arrow-up:before { content: @fa-var-arrow-up; }
101
+ .@{fa-css-prefix}-arrow-down:before { content: @fa-var-arrow-down; }
102
+ .@{fa-css-prefix}-mail-forward:before,
103
+ .@{fa-css-prefix}-share:before { content: @fa-var-share; }
104
+ .@{fa-css-prefix}-expand:before { content: @fa-var-expand; }
105
+ .@{fa-css-prefix}-compress:before { content: @fa-var-compress; }
106
+ .@{fa-css-prefix}-plus:before { content: @fa-var-plus; }
107
+ .@{fa-css-prefix}-minus:before { content: @fa-var-minus; }
108
+ .@{fa-css-prefix}-asterisk:before { content: @fa-var-asterisk; }
109
+ .@{fa-css-prefix}-exclamation-circle:before { content: @fa-var-exclamation-circle; }
110
+ .@{fa-css-prefix}-gift:before { content: @fa-var-gift; }
111
+ .@{fa-css-prefix}-leaf:before { content: @fa-var-leaf; }
112
+ .@{fa-css-prefix}-fire:before { content: @fa-var-fire; }
113
+ .@{fa-css-prefix}-eye:before { content: @fa-var-eye; }
114
+ .@{fa-css-prefix}-eye-slash:before { content: @fa-var-eye-slash; }
115
+ .@{fa-css-prefix}-warning:before,
116
+ .@{fa-css-prefix}-exclamation-triangle:before { content: @fa-var-exclamation-triangle; }
117
+ .@{fa-css-prefix}-plane:before { content: @fa-var-plane; }
118
+ .@{fa-css-prefix}-calendar:before { content: @fa-var-calendar; }
119
+ .@{fa-css-prefix}-random:before { content: @fa-var-random; }
120
+ .@{fa-css-prefix}-comment:before { content: @fa-var-comment; }
121
+ .@{fa-css-prefix}-magnet:before { content: @fa-var-magnet; }
122
+ .@{fa-css-prefix}-chevron-up:before { content: @fa-var-chevron-up; }
123
+ .@{fa-css-prefix}-chevron-down:before { content: @fa-var-chevron-down; }
124
+ .@{fa-css-prefix}-retweet:before { content: @fa-var-retweet; }
125
+ .@{fa-css-prefix}-shopping-cart:before { content: @fa-var-shopping-cart; }
126
+ .@{fa-css-prefix}-folder:before { content: @fa-var-folder; }
127
+ .@{fa-css-prefix}-folder-open:before { content: @fa-var-folder-open; }
128
+ .@{fa-css-prefix}-arrows-v:before { content: @fa-var-arrows-v; }
129
+ .@{fa-css-prefix}-arrows-h:before { content: @fa-var-arrows-h; }
130
+ .@{fa-css-prefix}-bar-chart-o:before { content: @fa-var-bar-chart-o; }
131
+ .@{fa-css-prefix}-twitter-square:before { content: @fa-var-twitter-square; }
132
+ .@{fa-css-prefix}-facebook-square:before { content: @fa-var-facebook-square; }
133
+ .@{fa-css-prefix}-camera-retro:before { content: @fa-var-camera-retro; }
134
+ .@{fa-css-prefix}-key:before { content: @fa-var-key; }
135
+ .@{fa-css-prefix}-gears:before,
136
+ .@{fa-css-prefix}-cogs:before { content: @fa-var-cogs; }
137
+ .@{fa-css-prefix}-comments:before { content: @fa-var-comments; }
138
+ .@{fa-css-prefix}-thumbs-o-up:before { content: @fa-var-thumbs-o-up; }
139
+ .@{fa-css-prefix}-thumbs-o-down:before { content: @fa-var-thumbs-o-down; }
140
+ .@{fa-css-prefix}-star-half:before { content: @fa-var-star-half; }
141
+ .@{fa-css-prefix}-heart-o:before { content: @fa-var-heart-o; }
142
+ .@{fa-css-prefix}-sign-out:before { content: @fa-var-sign-out; }
143
+ .@{fa-css-prefix}-linkedin-square:before { content: @fa-var-linkedin-square; }
144
+ .@{fa-css-prefix}-thumb-tack:before { content: @fa-var-thumb-tack; }
145
+ .@{fa-css-prefix}-external-link:before { content: @fa-var-external-link; }
146
+ .@{fa-css-prefix}-sign-in:before { content: @fa-var-sign-in; }
147
+ .@{fa-css-prefix}-trophy:before { content: @fa-var-trophy; }
148
+ .@{fa-css-prefix}-github-square:before { content: @fa-var-github-square; }
149
+ .@{fa-css-prefix}-upload:before { content: @fa-var-upload; }
150
+ .@{fa-css-prefix}-lemon-o:before { content: @fa-var-lemon-o; }
151
+ .@{fa-css-prefix}-phone:before { content: @fa-var-phone; }
152
+ .@{fa-css-prefix}-square-o:before { content: @fa-var-square-o; }
153
+ .@{fa-css-prefix}-bookmark-o:before { content: @fa-var-bookmark-o; }
154
+ .@{fa-css-prefix}-phone-square:before { content: @fa-var-phone-square; }
155
+ .@{fa-css-prefix}-twitter:before { content: @fa-var-twitter; }
156
+ .@{fa-css-prefix}-facebook:before { content: @fa-var-facebook; }
157
+ .@{fa-css-prefix}-github:before { content: @fa-var-github; }
158
+ .@{fa-css-prefix}-unlock:before { content: @fa-var-unlock; }
159
+ .@{fa-css-prefix}-credit-card:before { content: @fa-var-credit-card; }
160
+ .@{fa-css-prefix}-rss:before { content: @fa-var-rss; }
161
+ .@{fa-css-prefix}-hdd-o:before { content: @fa-var-hdd-o; }
162
+ .@{fa-css-prefix}-bullhorn:before { content: @fa-var-bullhorn; }
163
+ .@{fa-css-prefix}-bell:before { content: @fa-var-bell; }
164
+ .@{fa-css-prefix}-certificate:before { content: @fa-var-certificate; }
165
+ .@{fa-css-prefix}-hand-o-right:before { content: @fa-var-hand-o-right; }
166
+ .@{fa-css-prefix}-hand-o-left:before { content: @fa-var-hand-o-left; }
167
+ .@{fa-css-prefix}-hand-o-up:before { content: @fa-var-hand-o-up; }
168
+ .@{fa-css-prefix}-hand-o-down:before { content: @fa-var-hand-o-down; }
169
+ .@{fa-css-prefix}-arrow-circle-left:before { content: @fa-var-arrow-circle-left; }
170
+ .@{fa-css-prefix}-arrow-circle-right:before { content: @fa-var-arrow-circle-right; }
171
+ .@{fa-css-prefix}-arrow-circle-up:before { content: @fa-var-arrow-circle-up; }
172
+ .@{fa-css-prefix}-arrow-circle-down:before { content: @fa-var-arrow-circle-down; }
173
+ .@{fa-css-prefix}-globe:before { content: @fa-var-globe; }
174
+ .@{fa-css-prefix}-wrench:before { content: @fa-var-wrench; }
175
+ .@{fa-css-prefix}-tasks:before { content: @fa-var-tasks; }
176
+ .@{fa-css-prefix}-filter:before { content: @fa-var-filter; }
177
+ .@{fa-css-prefix}-briefcase:before { content: @fa-var-briefcase; }
178
+ .@{fa-css-prefix}-arrows-alt:before { content: @fa-var-arrows-alt; }
179
+ .@{fa-css-prefix}-group:before,
180
+ .@{fa-css-prefix}-users:before { content: @fa-var-users; }
181
+ .@{fa-css-prefix}-chain:before,
182
+ .@{fa-css-prefix}-link:before { content: @fa-var-link; }
183
+ .@{fa-css-prefix}-cloud:before { content: @fa-var-cloud; }
184
+ .@{fa-css-prefix}-flask:before { content: @fa-var-flask; }
185
+ .@{fa-css-prefix}-cut:before,
186
+ .@{fa-css-prefix}-scissors:before { content: @fa-var-scissors; }
187
+ .@{fa-css-prefix}-copy:before,
188
+ .@{fa-css-prefix}-files-o:before { content: @fa-var-files-o; }
189
+ .@{fa-css-prefix}-paperclip:before { content: @fa-var-paperclip; }
190
+ .@{fa-css-prefix}-save:before,
191
+ .@{fa-css-prefix}-floppy-o:before { content: @fa-var-floppy-o; }
192
+ .@{fa-css-prefix}-square:before { content: @fa-var-square; }
193
+ .@{fa-css-prefix}-bars:before { content: @fa-var-bars; }
194
+ .@{fa-css-prefix}-list-ul:before { content: @fa-var-list-ul; }
195
+ .@{fa-css-prefix}-list-ol:before { content: @fa-var-list-ol; }
196
+ .@{fa-css-prefix}-strikethrough:before { content: @fa-var-strikethrough; }
197
+ .@{fa-css-prefix}-underline:before { content: @fa-var-underline; }
198
+ .@{fa-css-prefix}-table:before { content: @fa-var-table; }
199
+ .@{fa-css-prefix}-magic:before { content: @fa-var-magic; }
200
+ .@{fa-css-prefix}-truck:before { content: @fa-var-truck; }
201
+ .@{fa-css-prefix}-pinterest:before { content: @fa-var-pinterest; }
202
+ .@{fa-css-prefix}-pinterest-square:before { content: @fa-var-pinterest-square; }
203
+ .@{fa-css-prefix}-google-plus-square:before { content: @fa-var-google-plus-square; }
204
+ .@{fa-css-prefix}-google-plus:before { content: @fa-var-google-plus; }
205
+ .@{fa-css-prefix}-money:before { content: @fa-var-money; }
206
+ .@{fa-css-prefix}-caret-down:before { content: @fa-var-caret-down; }
207
+ .@{fa-css-prefix}-caret-up:before { content: @fa-var-caret-up; }
208
+ .@{fa-css-prefix}-caret-left:before { content: @fa-var-caret-left; }
209
+ .@{fa-css-prefix}-caret-right:before { content: @fa-var-caret-right; }
210
+ .@{fa-css-prefix}-columns:before { content: @fa-var-columns; }
211
+ .@{fa-css-prefix}-unsorted:before,
212
+ .@{fa-css-prefix}-sort:before { content: @fa-var-sort; }
213
+ .@{fa-css-prefix}-sort-down:before,
214
+ .@{fa-css-prefix}-sort-asc:before { content: @fa-var-sort-asc; }
215
+ .@{fa-css-prefix}-sort-up:before,
216
+ .@{fa-css-prefix}-sort-desc:before { content: @fa-var-sort-desc; }
217
+ .@{fa-css-prefix}-envelope:before { content: @fa-var-envelope; }
218
+ .@{fa-css-prefix}-linkedin:before { content: @fa-var-linkedin; }
219
+ .@{fa-css-prefix}-rotate-left:before,
220
+ .@{fa-css-prefix}-undo:before { content: @fa-var-undo; }
221
+ .@{fa-css-prefix}-legal:before,
222
+ .@{fa-css-prefix}-gavel:before { content: @fa-var-gavel; }
223
+ .@{fa-css-prefix}-dashboard:before,
224
+ .@{fa-css-prefix}-tachometer:before { content: @fa-var-tachometer; }
225
+ .@{fa-css-prefix}-comment-o:before { content: @fa-var-comment-o; }
226
+ .@{fa-css-prefix}-comments-o:before { content: @fa-var-comments-o; }
227
+ .@{fa-css-prefix}-flash:before,
228
+ .@{fa-css-prefix}-bolt:before { content: @fa-var-bolt; }
229
+ .@{fa-css-prefix}-sitemap:before { content: @fa-var-sitemap; }
230
+ .@{fa-css-prefix}-umbrella:before { content: @fa-var-umbrella; }
231
+ .@{fa-css-prefix}-paste:before,
232
+ .@{fa-css-prefix}-clipboard:before { content: @fa-var-clipboard; }
233
+ .@{fa-css-prefix}-lightbulb-o:before { content: @fa-var-lightbulb-o; }
234
+ .@{fa-css-prefix}-exchange:before { content: @fa-var-exchange; }
235
+ .@{fa-css-prefix}-cloud-download:before { content: @fa-var-cloud-download; }
236
+ .@{fa-css-prefix}-cloud-upload:before { content: @fa-var-cloud-upload; }
237
+ .@{fa-css-prefix}-user-md:before { content: @fa-var-user-md; }
238
+ .@{fa-css-prefix}-stethoscope:before { content: @fa-var-stethoscope; }
239
+ .@{fa-css-prefix}-suitcase:before { content: @fa-var-suitcase; }
240
+ .@{fa-css-prefix}-bell-o:before { content: @fa-var-bell-o; }
241
+ .@{fa-css-prefix}-coffee:before { content: @fa-var-coffee; }
242
+ .@{fa-css-prefix}-cutlery:before { content: @fa-var-cutlery; }
243
+ .@{fa-css-prefix}-file-text-o:before { content: @fa-var-file-text-o; }
244
+ .@{fa-css-prefix}-building-o:before { content: @fa-var-building-o; }
245
+ .@{fa-css-prefix}-hospital-o:before { content: @fa-var-hospital-o; }
246
+ .@{fa-css-prefix}-ambulance:before { content: @fa-var-ambulance; }
247
+ .@{fa-css-prefix}-medkit:before { content: @fa-var-medkit; }
248
+ .@{fa-css-prefix}-fighter-jet:before { content: @fa-var-fighter-jet; }
249
+ .@{fa-css-prefix}-beer:before { content: @fa-var-beer; }
250
+ .@{fa-css-prefix}-h-square:before { content: @fa-var-h-square; }
251
+ .@{fa-css-prefix}-plus-square:before { content: @fa-var-plus-square; }
252
+ .@{fa-css-prefix}-angle-double-left:before { content: @fa-var-angle-double-left; }
253
+ .@{fa-css-prefix}-angle-double-right:before { content: @fa-var-angle-double-right; }
254
+ .@{fa-css-prefix}-angle-double-up:before { content: @fa-var-angle-double-up; }
255
+ .@{fa-css-prefix}-angle-double-down:before { content: @fa-var-angle-double-down; }
256
+ .@{fa-css-prefix}-angle-left:before { content: @fa-var-angle-left; }
257
+ .@{fa-css-prefix}-angle-right:before { content: @fa-var-angle-right; }
258
+ .@{fa-css-prefix}-angle-up:before { content: @fa-var-angle-up; }
259
+ .@{fa-css-prefix}-angle-down:before { content: @fa-var-angle-down; }
260
+ .@{fa-css-prefix}-desktop:before { content: @fa-var-desktop; }
261
+ .@{fa-css-prefix}-laptop:before { content: @fa-var-laptop; }
262
+ .@{fa-css-prefix}-tablet:before { content: @fa-var-tablet; }
263
+ .@{fa-css-prefix}-mobile-phone:before,
264
+ .@{fa-css-prefix}-mobile:before { content: @fa-var-mobile; }
265
+ .@{fa-css-prefix}-circle-o:before { content: @fa-var-circle-o; }
266
+ .@{fa-css-prefix}-quote-left:before { content: @fa-var-quote-left; }
267
+ .@{fa-css-prefix}-quote-right:before { content: @fa-var-quote-right; }
268
+ .@{fa-css-prefix}-spinner:before { content: @fa-var-spinner; }
269
+ .@{fa-css-prefix}-circle:before { content: @fa-var-circle; }
270
+ .@{fa-css-prefix}-mail-reply:before,
271
+ .@{fa-css-prefix}-reply:before { content: @fa-var-reply; }
272
+ .@{fa-css-prefix}-github-alt:before { content: @fa-var-github-alt; }
273
+ .@{fa-css-prefix}-folder-o:before { content: @fa-var-folder-o; }
274
+ .@{fa-css-prefix}-folder-open-o:before { content: @fa-var-folder-open-o; }
275
+ .@{fa-css-prefix}-smile-o:before { content: @fa-var-smile-o; }
276
+ .@{fa-css-prefix}-frown-o:before { content: @fa-var-frown-o; }
277
+ .@{fa-css-prefix}-meh-o:before { content: @fa-var-meh-o; }
278
+ .@{fa-css-prefix}-gamepad:before { content: @fa-var-gamepad; }
279
+ .@{fa-css-prefix}-keyboard-o:before { content: @fa-var-keyboard-o; }
280
+ .@{fa-css-prefix}-flag-o:before { content: @fa-var-flag-o; }
281
+ .@{fa-css-prefix}-flag-checkered:before { content: @fa-var-flag-checkered; }
282
+ .@{fa-css-prefix}-terminal:before { content: @fa-var-terminal; }
283
+ .@{fa-css-prefix}-code:before { content: @fa-var-code; }
284
+ .@{fa-css-prefix}-reply-all:before { content: @fa-var-reply-all; }
285
+ .@{fa-css-prefix}-mail-reply-all:before { content: @fa-var-mail-reply-all; }
286
+ .@{fa-css-prefix}-star-half-empty:before,
287
+ .@{fa-css-prefix}-star-half-full:before,
288
+ .@{fa-css-prefix}-star-half-o:before { content: @fa-var-star-half-o; }
289
+ .@{fa-css-prefix}-location-arrow:before { content: @fa-var-location-arrow; }
290
+ .@{fa-css-prefix}-crop:before { content: @fa-var-crop; }
291
+ .@{fa-css-prefix}-code-fork:before { content: @fa-var-code-fork; }
292
+ .@{fa-css-prefix}-unlink:before,
293
+ .@{fa-css-prefix}-chain-broken:before { content: @fa-var-chain-broken; }
294
+ .@{fa-css-prefix}-question:before { content: @fa-var-question; }
295
+ .@{fa-css-prefix}-info:before { content: @fa-var-info; }
296
+ .@{fa-css-prefix}-exclamation:before { content: @fa-var-exclamation; }
297
+ .@{fa-css-prefix}-superscript:before { content: @fa-var-superscript; }
298
+ .@{fa-css-prefix}-subscript:before { content: @fa-var-subscript; }
299
+ .@{fa-css-prefix}-eraser:before { content: @fa-var-eraser; }
300
+ .@{fa-css-prefix}-puzzle-piece:before { content: @fa-var-puzzle-piece; }
301
+ .@{fa-css-prefix}-microphone:before { content: @fa-var-microphone; }
302
+ .@{fa-css-prefix}-microphone-slash:before { content: @fa-var-microphone-slash; }
303
+ .@{fa-css-prefix}-shield:before { content: @fa-var-shield; }
304
+ .@{fa-css-prefix}-calendar-o:before { content: @fa-var-calendar-o; }
305
+ .@{fa-css-prefix}-fire-extinguisher:before { content: @fa-var-fire-extinguisher; }
306
+ .@{fa-css-prefix}-rocket:before { content: @fa-var-rocket; }
307
+ .@{fa-css-prefix}-maxcdn:before { content: @fa-var-maxcdn; }
308
+ .@{fa-css-prefix}-chevron-circle-left:before { content: @fa-var-chevron-circle-left; }
309
+ .@{fa-css-prefix}-chevron-circle-right:before { content: @fa-var-chevron-circle-right; }
310
+ .@{fa-css-prefix}-chevron-circle-up:before { content: @fa-var-chevron-circle-up; }
311
+ .@{fa-css-prefix}-chevron-circle-down:before { content: @fa-var-chevron-circle-down; }
312
+ .@{fa-css-prefix}-html5:before { content: @fa-var-html5; }
313
+ .@{fa-css-prefix}-css3:before { content: @fa-var-css3; }
314
+ .@{fa-css-prefix}-anchor:before { content: @fa-var-anchor; }
315
+ .@{fa-css-prefix}-unlock-alt:before { content: @fa-var-unlock-alt; }
316
+ .@{fa-css-prefix}-bullseye:before { content: @fa-var-bullseye; }
317
+ .@{fa-css-prefix}-ellipsis-h:before { content: @fa-var-ellipsis-h; }
318
+ .@{fa-css-prefix}-ellipsis-v:before { content: @fa-var-ellipsis-v; }
319
+ .@{fa-css-prefix}-rss-square:before { content: @fa-var-rss-square; }
320
+ .@{fa-css-prefix}-play-circle:before { content: @fa-var-play-circle; }
321
+ .@{fa-css-prefix}-ticket:before { content: @fa-var-ticket; }
322
+ .@{fa-css-prefix}-minus-square:before { content: @fa-var-minus-square; }
323
+ .@{fa-css-prefix}-minus-square-o:before { content: @fa-var-minus-square-o; }
324
+ .@{fa-css-prefix}-level-up:before { content: @fa-var-level-up; }
325
+ .@{fa-css-prefix}-level-down:before { content: @fa-var-level-down; }
326
+ .@{fa-css-prefix}-check-square:before { content: @fa-var-check-square; }
327
+ .@{fa-css-prefix}-pencil-square:before { content: @fa-var-pencil-square; }
328
+ .@{fa-css-prefix}-external-link-square:before { content: @fa-var-external-link-square; }
329
+ .@{fa-css-prefix}-share-square:before { content: @fa-var-share-square; }
330
+ .@{fa-css-prefix}-compass:before { content: @fa-var-compass; }
331
+ .@{fa-css-prefix}-toggle-down:before,
332
+ .@{fa-css-prefix}-caret-square-o-down:before { content: @fa-var-caret-square-o-down; }
333
+ .@{fa-css-prefix}-toggle-up:before,
334
+ .@{fa-css-prefix}-caret-square-o-up:before { content: @fa-var-caret-square-o-up; }
335
+ .@{fa-css-prefix}-toggle-right:before,
336
+ .@{fa-css-prefix}-caret-square-o-right:before { content: @fa-var-caret-square-o-right; }
337
+ .@{fa-css-prefix}-euro:before,
338
+ .@{fa-css-prefix}-eur:before { content: @fa-var-eur; }
339
+ .@{fa-css-prefix}-gbp:before { content: @fa-var-gbp; }
340
+ .@{fa-css-prefix}-dollar:before,
341
+ .@{fa-css-prefix}-usd:before { content: @fa-var-usd; }
342
+ .@{fa-css-prefix}-rupee:before,
343
+ .@{fa-css-prefix}-inr:before { content: @fa-var-inr; }
344
+ .@{fa-css-prefix}-cny:before,
345
+ .@{fa-css-prefix}-rmb:before,
346
+ .@{fa-css-prefix}-yen:before,
347
+ .@{fa-css-prefix}-jpy:before { content: @fa-var-jpy; }
348
+ .@{fa-css-prefix}-ruble:before,
349
+ .@{fa-css-prefix}-rouble:before,
350
+ .@{fa-css-prefix}-rub:before { content: @fa-var-rub; }
351
+ .@{fa-css-prefix}-won:before,
352
+ .@{fa-css-prefix}-krw:before { content: @fa-var-krw; }
353
+ .@{fa-css-prefix}-bitcoin:before,
354
+ .@{fa-css-prefix}-btc:before { content: @fa-var-btc; }
355
+ .@{fa-css-prefix}-file:before { content: @fa-var-file; }
356
+ .@{fa-css-prefix}-file-text:before { content: @fa-var-file-text; }
357
+ .@{fa-css-prefix}-sort-alpha-asc:before { content: @fa-var-sort-alpha-asc; }
358
+ .@{fa-css-prefix}-sort-alpha-desc:before { content: @fa-var-sort-alpha-desc; }
359
+ .@{fa-css-prefix}-sort-amount-asc:before { content: @fa-var-sort-amount-asc; }
360
+ .@{fa-css-prefix}-sort-amount-desc:before { content: @fa-var-sort-amount-desc; }
361
+ .@{fa-css-prefix}-sort-numeric-asc:before { content: @fa-var-sort-numeric-asc; }
362
+ .@{fa-css-prefix}-sort-numeric-desc:before { content: @fa-var-sort-numeric-desc; }
363
+ .@{fa-css-prefix}-thumbs-up:before { content: @fa-var-thumbs-up; }
364
+ .@{fa-css-prefix}-thumbs-down:before { content: @fa-var-thumbs-down; }
365
+ .@{fa-css-prefix}-youtube-square:before { content: @fa-var-youtube-square; }
366
+ .@{fa-css-prefix}-youtube:before { content: @fa-var-youtube; }
367
+ .@{fa-css-prefix}-xing:before { content: @fa-var-xing; }
368
+ .@{fa-css-prefix}-xing-square:before { content: @fa-var-xing-square; }
369
+ .@{fa-css-prefix}-youtube-play:before { content: @fa-var-youtube-play; }
370
+ .@{fa-css-prefix}-dropbox:before { content: @fa-var-dropbox; }
371
+ .@{fa-css-prefix}-stack-overflow:before { content: @fa-var-stack-overflow; }
372
+ .@{fa-css-prefix}-instagram:before { content: @fa-var-instagram; }
373
+ .@{fa-css-prefix}-flickr:before { content: @fa-var-flickr; }
374
+ .@{fa-css-prefix}-adn:before { content: @fa-var-adn; }
375
+ .@{fa-css-prefix}-bitbucket:before { content: @fa-var-bitbucket; }
376
+ .@{fa-css-prefix}-bitbucket-square:before { content: @fa-var-bitbucket-square; }
377
+ .@{fa-css-prefix}-tumblr:before { content: @fa-var-tumblr; }
378
+ .@{fa-css-prefix}-tumblr-square:before { content: @fa-var-tumblr-square; }
379
+ .@{fa-css-prefix}-long-arrow-down:before { content: @fa-var-long-arrow-down; }
380
+ .@{fa-css-prefix}-long-arrow-up:before { content: @fa-var-long-arrow-up; }
381
+ .@{fa-css-prefix}-long-arrow-left:before { content: @fa-var-long-arrow-left; }
382
+ .@{fa-css-prefix}-long-arrow-right:before { content: @fa-var-long-arrow-right; }
383
+ .@{fa-css-prefix}-apple:before { content: @fa-var-apple; }
384
+ .@{fa-css-prefix}-windows:before { content: @fa-var-windows; }
385
+ .@{fa-css-prefix}-android:before { content: @fa-var-android; }
386
+ .@{fa-css-prefix}-linux:before { content: @fa-var-linux; }
387
+ .@{fa-css-prefix}-dribbble:before { content: @fa-var-dribbble; }
388
+ .@{fa-css-prefix}-skype:before { content: @fa-var-skype; }
389
+ .@{fa-css-prefix}-foursquare:before { content: @fa-var-foursquare; }
390
+ .@{fa-css-prefix}-trello:before { content: @fa-var-trello; }
391
+ .@{fa-css-prefix}-female:before { content: @fa-var-female; }
392
+ .@{fa-css-prefix}-male:before { content: @fa-var-male; }
393
+ .@{fa-css-prefix}-gittip:before { content: @fa-var-gittip; }
394
+ .@{fa-css-prefix}-sun-o:before { content: @fa-var-sun-o; }
395
+ .@{fa-css-prefix}-moon-o:before { content: @fa-var-moon-o; }
396
+ .@{fa-css-prefix}-archive:before { content: @fa-var-archive; }
397
+ .@{fa-css-prefix}-bug:before { content: @fa-var-bug; }
398
+ .@{fa-css-prefix}-vk:before { content: @fa-var-vk; }
399
+ .@{fa-css-prefix}-weibo:before { content: @fa-var-weibo; }
400
+ .@{fa-css-prefix}-renren:before { content: @fa-var-renren; }
401
+ .@{fa-css-prefix}-pagelines:before { content: @fa-var-pagelines; }
402
+ .@{fa-css-prefix}-stack-exchange:before { content: @fa-var-stack-exchange; }
403
+ .@{fa-css-prefix}-arrow-circle-o-right:before { content: @fa-var-arrow-circle-o-right; }
404
+ .@{fa-css-prefix}-arrow-circle-o-left:before { content: @fa-var-arrow-circle-o-left; }
405
+ .@{fa-css-prefix}-toggle-left:before,
406
+ .@{fa-css-prefix}-caret-square-o-left:before { content: @fa-var-caret-square-o-left; }
407
+ .@{fa-css-prefix}-dot-circle-o:before { content: @fa-var-dot-circle-o; }
408
+ .@{fa-css-prefix}-wheelchair:before { content: @fa-var-wheelchair; }
409
+ .@{fa-css-prefix}-vimeo-square:before { content: @fa-var-vimeo-square; }
410
+ .@{fa-css-prefix}-turkish-lira:before,
411
+ .@{fa-css-prefix}-try:before { content: @fa-var-try; }
412
+ .@{fa-css-prefix}-plus-square-o:before { content: @fa-var-plus-square-o; }
assets/jui/less/font-awesome4/larger.less ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // Icon Sizes
2
+ // -------------------------
3
+
4
+ /* makes the font 33% larger relative to the icon container */
5
+ .@{fa-css-prefix}-lg {
6
+ font-size: (4em / 3);
7
+ line-height: (3em / 4);
8
+ vertical-align: -15%;
9
+ }
10
+ .@{fa-css-prefix}-2x { font-size: 2em; }
11
+ .@{fa-css-prefix}-3x { font-size: 3em; }
12
+ .@{fa-css-prefix}-4x { font-size: 4em; }
13
+ .@{fa-css-prefix}-5x { font-size: 5em; }
assets/jui/less/font-awesome4/list.less ADDED
@@ -0,0 +1,19 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // List Icons
2
+ // -------------------------
3
+
4
+ .@{fa-css-prefix}-ul {
5
+ padding-left: 0;
6
+ margin-left: @fa-li-width;
7
+ list-style-type: none;
8
+ > li { position: relative; }
9
+ }
10
+ .@{fa-css-prefix}-li {
11
+ position: absolute;
12
+ left: -@fa-li-width;
13
+ width: @fa-li-width;
14
+ top: (2em / 14);
15
+ text-align: center;
16
+ &.@{fa-css-prefix}-lg {
17
+ left: -@fa-li-width + (4em / 14);
18
+ }
19
+ }
assets/jui/less/font-awesome4/mixins.less ADDED
@@ -0,0 +1,20 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // Mixins
2
+ // --------------------------
3
+
4
+ .fa-icon-rotate(@degrees, @rotation) {
5
+ filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=@rotation);
6
+ -webkit-transform: rotate(@degrees);
7
+ -moz-transform: rotate(@degrees);
8
+ -ms-transform: rotate(@degrees);
9
+ -o-transform: rotate(@degrees);
10
+ transform: rotate(@degrees);
11
+ }
12
+
13
+ .fa-icon-flip(@horiz, @vert, @rotation) {
14
+ filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=@rotation, mirror=1);
15
+ -webkit-transform: scale(@horiz, @vert);
16
+ -moz-transform: scale(@horiz, @vert);
17
+ -ms-transform: scale(@horiz, @vert);
18
+ -o-transform: scale(@horiz, @vert);
19
+ transform: scale(@horiz, @vert);
20
+ }
assets/jui/less/font-awesome4/path.less ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /* FONT PATH
2
+ * -------------------------- */
3
+
4
+ @font-face {
5
+ font-family: 'FontAwesome';
6
+ src: url('@{fa-font-path}/fontawesome-webfont.eot?v=@{fa-version}');
7
+ src: url('@{fa-font-path}/fontawesome-webfont.eot?#iefix&v=@{fa-version}') format('embedded-opentype'),
8
+ url('@{fa-font-path}/fontawesome-webfont.woff?v=@{fa-version}') format('woff'),
9
+ url('@{fa-font-path}/fontawesome-webfont.ttf?v=@{fa-version}') format('truetype'),
10
+ url('@{fa-font-path}/fontawesome-webfont.svg?v=@{fa-version}#fontawesomeregular') format('svg');
11
+ // src: url('@{fa-font-path}/FontAwesome.otf') format('opentype'); // used when developing fonts
12
+ font-weight: normal;
13
+ font-style: normal;
14
+ }
assets/jui/less/font-awesome4/rotated-flipped.less ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
1
+ // Rotated & Flipped Icons
2
+ // -------------------------
3
+
4
+ .@{fa-css-prefix}-rotate-90 { .fa-icon-rotate(90deg, 1); }
5
+ .@{fa-css-prefix}-rotate-180 { .fa-icon-rotate(180deg, 2); }
6
+ .@{fa-css-prefix}-rotate-270 { .fa-icon-rotate(270deg, 3); }
7
+
8
+ .@{fa-css-prefix}-flip-horizontal { .fa-icon-flip(-1, 1, 0); }
9
+ .@{fa-css-prefix}-flip-vertical { .fa-icon-flip(1, -1, 2); }
assets/jui/less/font-awesome4/spinning.less ADDED
@@ -0,0 +1,30 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // Spinning Icons
2
+ // --------------------------
3
+
4
+ .@{fa-css-prefix}-spin {
5
+ -webkit-animation: spin 2s infinite linear;
6
+ -moz-animation: spin 2s infinite linear;
7
+ -o-animation: spin 2s infinite linear;
8
+ animation: spin 2s infinite linear;
9
+ }
10
+
11
+ @-moz-keyframes spin {
12
+ 0% { -moz-transform: rotate(0deg); }
13
+ 100% { -moz-transform: rotate(359deg); }
14
+ }
15
+ @-webkit-keyframes spin {
16
+ 0% { -webkit-transform: rotate(0deg); }
17
+ 100% { -webkit-transform: rotate(359deg); }
18
+ }
19
+ @-o-keyframes spin {
20
+ 0% { -o-transform: rotate(0deg); }
21
+ 100% { -o-transform: rotate(359deg); }
22
+ }
23
+ @-ms-keyframes spin {
24
+ 0% { -ms-transform: rotate(0deg); }
25
+ 100% { -ms-transform: rotate(359deg); }
26
+ }
27
+ @keyframes spin {
28
+ 0% { transform: rotate(0deg); }
29
+ 100% { transform: rotate(359deg); }
30
+ }
assets/jui/less/font-awesome4/stacked.less ADDED
@@ -0,0 +1,20 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // Stacked Icons
2
+ // -------------------------
3
+
4
+ .@{fa-css-prefix}-stack {
5
+ position: relative;
6
+ display: inline-block;
7
+ width: 2em;
8
+ height: 2em;
9
+ line-height: 2em;
10
+ vertical-align: middle;
11
+ }
12
+ .@{fa-css-prefix}-stack-1x, .@{fa-css-prefix}-stack-2x {
13
+ position: absolute;
14
+ left: 0;
15
+ width: 100%;
16
+ text-align: center;
17
+ }
18
+ .@{fa-css-prefix}-stack-1x { line-height: inherit; }
19
+ .@{fa-css-prefix}-stack-2x { font-size: 2em; }
20
+ .@{fa-css-prefix}-inverse { color: @fa-inverse; }
assets/jui/less/font-awesome4/variables.less ADDED
@@ -0,0 +1,381 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // Variables
2
+ // --------------------------
3
+
4
+ @fa-font-path: "../../../plugins/gantry/assets/jui/fonts/font-awesome4";
5
+ //@fa-font-path: "//netdna.bootstrapcdn.com/font-awesome/4.0.3/fonts"; // for referencing Bootstrap CDN font files directly
6
+ @fa-css-prefix: fa;
7
+ @fa-version: "4.0.3";
8
+ @fa-border-color: #eee;
9
+ @fa-inverse: #fff;
10
+ @fa-li-width: (30em / 14);
11
+
12
+ @fa-var-glass: "\f000";
13
+ @fa-var-music: "\f001";
14
+ @fa-var-search: "\f002";
15
+ @fa-var-envelope-o: "\f003";
16
+ @fa-var-heart: "\f004";
17
+ @fa-var-star: "\f005";
18
+ @fa-var-star-o: "\f006";
19
+ @fa-var-user: "\f007";
20
+ @fa-var-film: "\f008";
21
+ @fa-var-th-large: "\f009";
22
+ @fa-var-th: "\f00a";
23
+ @fa-var-th-list: "\f00b";
24
+ @fa-var-check: "\f00c";
25
+ @fa-var-times: "\f00d";
26
+ @fa-var-search-plus: "\f00e";
27
+ @fa-var-search-minus: "\f010";
28
+ @fa-var-power-off: "\f011";
29
+ @fa-var-signal: "\f012";
30
+ @fa-var-cog: "\f013";
31
+ @fa-var-trash-o: "\f014";
32
+ @fa-var-home: "\f015";
33
+ @fa-var-file-o: "\f016";
34
+ @fa-var-clock-o: "\f017";
35
+ @fa-var-road: "\f018";
36
+ @fa-var-download: "\f019";
37
+ @fa-var-arrow-circle-o-down: "\f01a";
38
+ @fa-var-arrow-circle-o-up: "\f01b";
39
+ @fa-var-inbox: "\f01c";
40
+ @fa-var-play-circle-o: "\f01d";
41
+ @fa-var-repeat: "\f01e";
42
+ @fa-var-refresh: "\f021";
43
+ @fa-var-list-alt: "\f022";
44
+ @fa-var-lock: "\f023";
45
+ @fa-var-flag: "\f024";
46
+ @fa-var-headphones: "\f025";
47
+ @fa-var-volume-off: "\f026";
48
+ @fa-var-volume-down: "\f027";
49
+ @fa-var-volume-up: "\f028";
50
+ @fa-var-qrcode: "\f029";
51
+ @fa-var-barcode: "\f02a";
52
+ @fa-var-tag: "\f02b";
53
+ @fa-var-tags: "\f02c";
54
+ @fa-var-book: "\f02d";
55
+ @fa-var-bookmark: "\f02e";
56
+ @fa-var-print: "\f02f";
57
+ @fa-var-camera: "\f030";
58
+ @fa-var-font: "\f031";
59
+ @fa-var-bold: "\f032";
60
+ @fa-var-italic: "\f033";
61
+ @fa-var-text-height: "\f034";
62
+ @fa-var-text-width: "\f035";
63
+ @fa-var-align-left: "\f036";
64
+ @fa-var-align-center: "\f037";
65
+ @fa-var-align-right: "\f038";
66
+ @fa-var-align-justify: "\f039";
67
+ @fa-var-list: "\f03a";
68
+ @fa-var-outdent: "\f03b";
69
+ @fa-var-indent: "\f03c";
70
+ @fa-var-video-camera: "\f03d";
71
+ @fa-var-picture-o: "\f03e";
72
+ @fa-var-pencil: "\f040";
73
+ @fa-var-map-marker: "\f041";
74
+ @fa-var-adjust: "\f042";
75
+ @fa-var-tint: "\f043";
76
+ @fa-var-pencil-square-o: "\f044";
77
+ @fa-var-share-square-o: "\f045";
78
+ @fa-var-check-square-o: "\f046";
79
+ @fa-var-arrows: "\f047";
80
+ @fa-var-step-backward: "\f048";
81
+ @fa-var-fast-backward: "\f049";
82
+ @fa-var-backward: "\f04a";
83
+ @fa-var-play: "\f04b";
84
+ @fa-var-pause: "\f04c";
85
+ @fa-var-stop: "\f04d";
86
+ @fa-var-forward: "\f04e";
87
+ @fa-var-fast-forward: "\f050";
88
+ @fa-var-step-forward: "\f051";
89
+ @fa-var-eject: "\f052";
90
+ @fa-var-chevron-left: "\f053";
91
+ @fa-var-chevron-right: "\f054";
92
+ @fa-var-plus-circle: "\f055";
93
+ @fa-var-minus-circle: "\f056";
94
+ @fa-var-times-circle: "\f057";
95
+ @fa-var-check-circle: "\f058";
96
+ @fa-var-question-circle: "\f059";
97
+ @fa-var-info-circle: "\f05a";
98
+ @fa-var-crosshairs: "\f05b";
99
+ @fa-var-times-circle-o: "\f05c";
100
+ @fa-var-check-circle-o: "\f05d";
101
+ @fa-var-ban: "\f05e";
102
+ @fa-var-arrow-left: "\f060";
103
+ @fa-var-arrow-right: "\f061";
104
+ @fa-var-arrow-up: "\f062";
105
+ @fa-var-arrow-down: "\f063";
106
+ @fa-var-share: "\f064";
107
+ @fa-var-expand: "\f065";
108
+ @fa-var-compress: "\f066";
109
+ @fa-var-plus: "\f067";
110
+ @fa-var-minus: "\f068";
111
+ @fa-var-asterisk: "\f069";
112
+ @fa-var-exclamation-circle: "\f06a";
113
+ @fa-var-gift: "\f06b";
114
+ @fa-var-leaf: "\f06c";
115
+ @fa-var-fire: "\f06d";
116
+ @fa-var-eye: "\f06e";
117
+ @fa-var-eye-slash: "\f070";
118
+ @fa-var-exclamation-triangle: "\f071";
119
+ @fa-var-plane: "\f072";
120
+ @fa-var-calendar: "\f073";
121
+ @fa-var-random: "\f074";
122
+ @fa-var-comment: "\f075";
123
+ @fa-var-magnet: "\f076";
124
+ @fa-var-chevron-up: "\f077";
125
+ @fa-var-chevron-down: "\f078";
126
+ @fa-var-retweet: "\f079";
127
+ @fa-var-shopping-cart: "\f07a";
128
+ @fa-var-folder: "\f07b";
129
+ @fa-var-folder-open: "\f07c";
130
+ @fa-var-arrows-v: "\f07d";
131
+ @fa-var-arrows-h: "\f07e";
132
+ @fa-var-bar-chart-o: "\f080";
133
+ @fa-var-twitter-square: "\f081";
134
+ @fa-var-facebook-square: "\f082";
135
+ @fa-var-camera-retro: "\f083";
136
+ @fa-var-key: "\f084";
137
+ @fa-var-cogs: "\f085";
138
+ @fa-var-comments: "\f086";
139
+ @fa-var-thumbs-o-up: "\f087";
140
+ @fa-var-thumbs-o-down: "\f088";
141
+ @fa-var-star-half: "\f089";
142
+ @fa-var-heart-o: "\f08a";
143
+ @fa-var-sign-out: "\f08b";
144
+ @fa-var-linkedin-square: "\f08c";
145
+ @fa-var-thumb-tack: "\f08d";
146
+ @fa-var-external-link: "\f08e";
147
+ @fa-var-sign-in: "\f090";
148
+ @fa-var-trophy: "\f091";
149
+ @fa-var-github-square: "\f092";
150
+ @fa-var-upload: "\f093";
151
+ @fa-var-lemon-o: "\f094";
152
+ @fa-var-phone: "\f095";
153
+ @fa-var-square-o: "\f096";
154
+ @fa-var-bookmark-o: "\f097";
155
+ @fa-var-phone-square: "\f098";
156
+ @fa-var-twitter: "\f099";
157
+ @fa-var-facebook: "\f09a";
158
+ @fa-var-github: "\f09b";
159
+ @fa-var-unlock: "\f09c";
160
+ @fa-var-credit-card: "\f09d";
161
+ @fa-var-rss: "\f09e";
162
+ @fa-var-hdd-o: "\f0a0";
163
+ @fa-var-bullhorn: "\f0a1";
164
+ @fa-var-bell: "\f0f3";
165
+ @fa-var-certificate: "\f0a3";
166
+ @fa-var-hand-o-right: "\f0a4";
167
+ @fa-var-hand-o-left: "\f0a5";
168
+ @fa-var-hand-o-up: "\f0a6";
169
+ @fa-var-hand-o-down: "\f0a7";
170
+ @fa-var-arrow-circle-left: "\f0a8";
171
+ @fa-var-arrow-circle-right: "\f0a9";
172
+ @fa-var-arrow-circle-up: "\f0aa";
173
+ @fa-var-arrow-circle-down: "\f0ab";
174
+ @fa-var-globe: "\f0ac";
175
+ @fa-var-wrench: "\f0ad";
176
+ @fa-var-tasks: "\f0ae";
177
+ @fa-var-filter: "\f0b0";
178
+ @fa-var-briefcase: "\f0b1";
179
+ @fa-var-arrows-alt: "\f0b2";
180
+ @fa-var-users: "\f0c0";
181
+ @fa-var-link: "\f0c1";
182
+ @fa-var-cloud: "\f0c2";
183
+ @fa-var-flask: "\f0c3";
184
+ @fa-var-scissors: "\f0c4";
185
+ @fa-var-files-o: "\f0c5";
186
+ @fa-var-paperclip: "\f0c6";
187
+ @fa-var-floppy-o: "\f0c7";
188
+ @fa-var-square: "\f0c8";
189
+ @fa-var-bars: "\f0c9";
190
+ @fa-var-list-ul: "\f0ca";
191
+ @fa-var-list-ol: "\f0cb";
192
+ @fa-var-strikethrough: "\f0cc";
193
+ @fa-var-underline: "\f0cd";
194
+ @fa-var-table: "\f0ce";
195
+ @fa-var-magic: "\f0d0";
196
+ @fa-var-truck: "\f0d1";
197
+ @fa-var-pinterest: "\f0d2";
198
+ @fa-var-pinterest-square: "\f0d3";
199
+ @fa-var-google-plus-square: "\f0d4";
200
+ @fa-var-google-plus: "\f0d5";
201
+ @fa-var-money: "\f0d6";
202
+ @fa-var-caret-down: "\f0d7";
203
+ @fa-var-caret-up: "\f0d8";
204
+ @fa-var-caret-left: "\f0d9";
205
+ @fa-var-caret-right: "\f0da";
206
+ @fa-var-columns: "\f0db";
207
+ @fa-var-sort: "\f0dc";
208
+ @fa-var-sort-asc: "\f0dd";
209
+ @fa-var-sort-desc: "\f0de";
210
+ @fa-var-envelope: "\f0e0";
211
+ @fa-var-linkedin: "\f0e1";
212
+ @fa-var-undo: "\f0e2";
213
+ @fa-var-gavel: "\f0e3";
214
+ @fa-var-tachometer: "\f0e4";
215
+ @fa-var-comment-o: "\f0e5";
216
+ @fa-var-comments-o: "\f0e6";
217
+ @fa-var-bolt: "\f0e7";
218
+ @fa-var-sitemap: "\f0e8";
219
+ @fa-var-umbrella: "\f0e9";
220
+ @fa-var-clipboard: "\f0ea";
221
+ @fa-var-lightbulb-o: "\f0eb";
222
+ @fa-var-exchange: "\f0ec";
223
+ @fa-var-cloud-download: "\f0ed";
224
+ @fa-var-cloud-upload: "\f0ee";
225
+ @fa-var-user-md: "\f0f0";
226
+ @fa-var-stethoscope: "\f0f1";
227
+ @fa-var-suitcase: "\f0f2";
228
+ @fa-var-bell-o: "\f0a2";
229
+ @fa-var-coffee: "\f0f4";
230
+ @fa-var-cutlery: "\f0f5";
231
+ @fa-var-file-text-o: "\f0f6";
232
+ @fa-var-building-o: "\f0f7";
233
+ @fa-var-hospital-o: "\f0f8";
234
+ @fa-var-ambulance: "\f0f9";
235
+ @fa-var-medkit: "\f0fa";
236
+ @fa-var-fighter-jet: "\f0fb";
237
+ @fa-var-beer: "\f0fc";
238
+ @fa-var-h-square: "\f0fd";
239
+ @fa-var-plus-square: "\f0fe";
240
+ @fa-var-angle-double-left: "\f100";
241
+ @fa-var-angle-double-right: "\f101";
242
+ @fa-var-angle-double-up: "\f102";
243
+ @fa-var-angle-double-down: "\f103";
244
+ @fa-var-angle-left: "\f104";
245
+ @fa-var-angle-right: "\f105";
246
+ @fa-var-angle-up: "\f106";
247
+ @fa-var-angle-down: "\f107";
248
+ @fa-var-desktop: "\f108";
249
+ @fa-var-laptop: "\f109";
250
+ @fa-var-tablet: "\f10a";
251
+ @fa-var-mobile: "\f10b";
252
+ @fa-var-circle-o: "\f10c";
253
+ @fa-var-quote-left: "\f10d";
254
+ @fa-var-quote-right: "\f10e";
255
+ @fa-var-spinner: "\f110";
256
+ @fa-var-circle: "\f111";
257
+ @fa-var-reply: "\f112";
258
+ @fa-var-github-alt: "\f113";
259
+ @fa-var-folder-o: "\f114";
260
+ @fa-var-folder-open-o: "\f115";
261
+ @fa-var-smile-o: "\f118";
262
+ @fa-var-frown-o: "\f119";
263
+ @fa-var-meh-o: "\f11a";
264
+ @fa-var-gamepad: "\f11b";
265
+ @fa-var-keyboard-o: "\f11c";
266
+ @fa-var-flag-o: "\f11d";
267
+ @fa-var-flag-checkered: "\f11e";
268
+ @fa-var-terminal: "\f120";
269
+ @fa-var-code: "\f121";
270
+ @fa-var-reply-all: "\f122";
271
+ @fa-var-mail-reply-all: "\f122";
272
+ @fa-var-star-half-o: "\f123";
273
+ @fa-var-location-arrow: "\f124";
274
+ @fa-var-crop: "\f125";
275
+ @fa-var-code-fork: "\f126";
276
+ @fa-var-chain-broken: "\f127";
277
+ @fa-var-question: "\f128";
278
+ @fa-var-info: "\f129";
279
+ @fa-var-exclamation: "\f12a";
280
+ @fa-var-superscript: "\f12b";
281
+ @fa-var-subscript: "\f12c";
282
+ @fa-var-eraser: "\f12d";
283
+ @fa-var-puzzle-piece: "\f12e";
284
+ @fa-var-microphone: "\f130";
285
+ @fa-var-microphone-slash: "\f131";
286
+ @fa-var-shield: "\f132";
287
+ @fa-var-calendar-o: "\f133";
288
+ @fa-var-fire-extinguisher: "\f134";
289
+ @fa-var-rocket: "\f135";
290
+ @fa-var-maxcdn: "\f136";
291
+ @fa-var-chevron-circle-left: "\f137";
292
+ @fa-var-chevron-circle-right: "\f138";
293
+ @fa-var-chevron-circle-up: "\f139";
294
+ @fa-var-chevron-circle-down: "\f13a";
295
+ @fa-var-html5: "\f13b";
296
+ @fa-var-css3: "\f13c";
297
+ @fa-var-anchor: "\f13d";
298
+ @fa-var-unlock-alt: "\f13e";
299
+ @fa-var-bullseye: "\f140";
300
+ @fa-var-ellipsis-h: "\f141";
301
+ @fa-var-ellipsis-v: "\f142";
302
+ @fa-var-rss-square: "\f143";
303
+ @fa-var-play-circle: "\f144";
304
+ @fa-var-ticket: "\f145";
305
+ @fa-var-minus-square: "\f146";
306
+ @fa-var-minus-square-o: "\f147";
307
+ @fa-var-level-up: "\f148";
308
+ @fa-var-level-down: "\f149";
309
+ @fa-var-check-square: "\f14a";
310
+ @fa-var-pencil-square: "\f14b";
311
+ @fa-var-external-link-square: "\f14c";
312
+ @fa-var-share-square: "\f14d";
313
+ @fa-var-compass: "\f14e";
314
+ @fa-var-caret-square-o-down: "\f150";
315
+ @fa-var-caret-square-o-up: "\f151";
316
+ @fa-var-caret-square-o-right: "\f152";
317
+ @fa-var-eur: "\f153";
318
+ @fa-var-gbp: "\f154";
319
+ @fa-var-usd: "\f155";
320
+ @fa-var-inr: "\f156";
321
+ @fa-var-jpy: "\f157";
322
+ @fa-var-rub: "\f158";
323
+ @fa-var-krw: "\f159";
324
+ @fa-var-btc: "\f15a";
325
+ @fa-var-file: "\f15b";
326
+ @fa-var-file-text: "\f15c";
327
+ @fa-var-sort-alpha-asc: "\f15d";
328
+ @fa-var-sort-alpha-desc: "\f15e";
329
+ @fa-var-sort-amount-asc: "\f160";
330
+ @fa-var-sort-amount-desc: "\f161";
331
+ @fa-var-sort-numeric-asc: "\f162";
332
+ @fa-var-sort-numeric-desc: "\f163";
333
+ @fa-var-thumbs-up: "\f164";
334
+ @fa-var-thumbs-down: "\f165";
335
+ @fa-var-youtube-square: "\f166";
336
+ @fa-var-youtube: "\f167";
337
+ @fa-var-xing: "\f168";
338
+ @fa-var-xing-square: "\f169";
339
+ @fa-var-youtube-play: "\f16a";
340
+ @fa-var-dropbox: "\f16b";
341
+ @fa-var-stack-overflow: "\f16c";
342
+ @fa-var-instagram: "\f16d";
343
+ @fa-var-flickr: "\f16e";
344
+ @fa-var-adn: "\f170";
345
+ @fa-var-bitbucket: "\f171";
346
+ @fa-var-bitbucket-square: "\f172";
347
+ @fa-var-tumblr: "\f173";
348
+ @fa-var-tumblr-square: "\f174";
349
+ @fa-var-long-arrow-down: "\f175";
350
+ @fa-var-long-arrow-up: "\f176";
351
+ @fa-var-long-arrow-left: "\f177";
352
+ @fa-var-long-arrow-right: "\f178";
353
+ @fa-var-apple: "\f179";
354
+ @fa-var-windows: "\f17a";
355
+ @fa-var-android: "\f17b";
356
+ @fa-var-linux: "\f17c";
357
+ @fa-var-dribbble: "\f17d";
358
+ @fa-var-skype: "\f17e";
359
+ @fa-var-foursquare: "\f180";
360
+ @fa-var-trello: "\f181";
361
+ @fa-var-female: "\f182";
362
+ @fa-var-male: "\f183";
363
+ @fa-var-gittip: "\f184";
364
+ @fa-var-sun-o: "\f185";
365
+ @fa-var-moon-o: "\f186";
366
+ @fa-var-archive: "\f187";
367
+ @fa-var-bug: "\f188";
368
+ @fa-var-vk: "\f189";
369
+ @fa-var-weibo: "\f18a";
370
+ @fa-var-renren: "\f18b";
371
+ @fa-var-pagelines: "\f18c";
372
+ @fa-var-stack-exchange: "\f18d";
373
+ @fa-var-arrow-circle-o-right: "\f18e";
374
+ @fa-var-arrow-circle-o-left: "\f190";
375
+ @fa-var-caret-square-o-left: "\f191";
376
+ @fa-var-dot-circle-o: "\f192";
377
+ @fa-var-wheelchair: "\f193";
378
+ @fa-var-vimeo-square: "\f194";
379
+ @fa-var-try: "\f195";
380
+ @fa-var-plus-square-o: "\f196";
381
+
core/gantry.class.php CHANGED
@@ -1045,7 +1045,7 @@ class Gantry
1045
  $path = '/' . preg_replace('#^' . quotemeta($this->baseUrl) . '#', "", $path);
1046
  }
1047
  $filename = strtolower(basename($path, '.css')) . rand(0, 1000);
1048
- wp_enqueue_style($filename, $path, array(), '4.0.8');
1049
  $deps[] = $path;
1050
  }
1051
  }
@@ -1058,11 +1058,11 @@ class Gantry
1058
  if ($this->baseUrl != "/") {
1059
  $path = '/' . preg_replace('#^' . quotemeta($this->baseUrl) . '#', "", $path);
1060
  }
1061
- wp_enqueue_script($path, $path, $deps, '4.0.8');
1062
  $deps[] = $path;
1063
  }
1064
  foreach ($this->_full_scripts as $strSrc) {
1065
- wp_enqueue_script($strSrc, $strSrc, $deps, '4.0.8');
1066
  $deps[] = $strSrc;
1067
  }
1068
 
@@ -1630,7 +1630,7 @@ class Gantry
1630
  if (!defined('GANTRY_FINALIZED')) {
1631
  $this->_styles[$priority][] = $link;
1632
  } else {
1633
- wp_enqueue_style($link->getUrl(), $link->getUrl(), array(), '4.0.8');
1634
  }
1635
  }
1636
  }
@@ -1734,7 +1734,7 @@ class Gantry
1734
  if (!defined('GANTRY_FINALIZED')) {
1735
  $this->_scripts[$full_path] = $check_url_path . $query_string;
1736
  } else {
1737
- wp_enqueue_script($check_url_path, $check_url_path, array(), '4.0.8');
1738
  }
1739
  break;
1740
  }
@@ -1768,7 +1768,7 @@ class Gantry
1768
  if (!defined('GANTRY_FINALIZED')) {
1769
  $this->_scripts[$check_path] = $check_url_path . $query_string;
1770
  } else {
1771
- wp_enqueue_script($check_url_path, $check_url_path, array(), '4.0.8');
1772
  }
1773
  break(2);
1774
  }
1045
  $path = '/' . preg_replace('#^' . quotemeta($this->baseUrl) . '#', "", $path);
1046
  }
1047
  $filename = strtolower(basename($path, '.css')) . rand(0, 1000);
1048
+ wp_enqueue_style($filename, $path, array(), '4.1.0');
1049
  $deps[] = $path;
1050
  }
1051
  }
1058
  if ($this->baseUrl != "/") {
1059
  $path = '/' . preg_replace('#^' . quotemeta($this->baseUrl) . '#', "", $path);
1060
  }
1061
+ wp_enqueue_script($path, $path, $deps, '4.1.0');
1062
  $deps[] = $path;
1063
  }
1064
  foreach ($this->_full_scripts as $strSrc) {
1065
+ wp_enqueue_script($strSrc, $strSrc, $deps, '4.1.0');
1066
  $deps[] = $strSrc;
1067
  }
1068
 
1630
  if (!defined('GANTRY_FINALIZED')) {
1631
  $this->_styles[$priority][] = $link;
1632
  } else {
1633
+ wp_enqueue_style($link->getUrl(), $link->getUrl(), array(), '4.1.0');
1634
  }
1635
  }
1636
  }
1734
  if (!defined('GANTRY_FINALIZED')) {
1735
  $this->_scripts[$full_path] = $check_url_path . $query_string;
1736
  } else {
1737
+ wp_enqueue_script($check_url_path, $check_url_path, array(), '4.1.0');
1738
  }
1739
  break;
1740
  }
1768
  if (!defined('GANTRY_FINALIZED')) {
1769
  $this->_scripts[$check_path] = $check_url_path . $query_string;
1770
  } else {
1771
+ wp_enqueue_script($check_url_path, $check_url_path, array(), '4.1.0');
1772
  }
1773
  break(2);
1774
  }
core/gantrybrowser.class.php CHANGED
@@ -1,6 +1,6 @@
1
  <?php
2
  /**
3
- * @version $Id: gantrybrowser.class.php 59361 2013-03-13 23:10:27Z btowles $
4
  * @author RocketTheme http://www.rockettheme.com
5
  * @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
6
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
@@ -159,7 +159,13 @@ class GantryBrowser
159
  $result = explode(' ', stristr(str_replace(';', ' ', $this->user_agent), 'msie'));
160
  $this->name = 'ie';
161
  $this->version = $result[1];
162
- } // Firefox
 
 
 
 
 
 
163
  elseif (preg_match('/Firefox/', $this->user_agent)) {
164
  $result = explode('/', stristr($this->user_agent, 'Firefox'));
165
  $version = explode(' ', $result[1]);
@@ -274,4 +280,4 @@ class GantryBrowser
274
  }
275
 
276
 
277
- }
1
  <?php
2
  /**
3
+ * @version $Id: gantrybrowser.class.php 60217 2013-11-14 18:24:22Z btowles $
4
  * @author RocketTheme http://www.rockettheme.com
5
  * @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
6
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
159
  $result = explode(' ', stristr(str_replace(';', ' ', $this->user_agent), 'msie'));
160
  $this->name = 'ie';
161
  $this->version = $result[1];
162
+ }
163
+ //IE 11+
164
+ elseif (preg_match('#Trident\/.*rv:([0-9]{1,}[\.0-9]{0,})#i',$this->user_agent,$matches)) {
165
+ $this->name = 'ie';
166
+ $this->version = $matches[1];
167
+ }
168
+ // Firefox
169
  elseif (preg_match('/Firefox/', $this->user_agent)) {
170
  $result = explode('/', stristr($this->user_agent, 'Firefox'));
171
  $version = explode(' ', $result[1]);
280
  }
281
 
282
 
283
+ }
core/gantryjson.class.php CHANGED
@@ -351,7 +351,7 @@ class GantryJSON
351
  } while ($position !== false && GantryJSON::_slashedChar($encode, $position -1));
352
 
353
  if ($position === false) {
354
- //JError::raiseWorning(500, 'Invalid JSON');
355
  return false;
356
  }
357
  return $position - $pos;
351
  } while ($position !== false && GantryJSON::_slashedChar($encode, $position -1));
352
 
353
  if ($position === false) {
354
+ //JError::raiseWarning(500, 'Invalid JSON');
355
  return false;
356
  }
357
  return $position - $pos;
core/utilities/gantrycache.class.php CHANGED
@@ -26,7 +26,7 @@ class GantryCache
26
  /**
27
  *
28
  */
29
- const ADMIN_GROUP_NAME = 'GantryAdmin-4.0.8';
30
 
31
  const ADMIN_LIFETIME = 86400;
32
 
@@ -122,7 +122,7 @@ class GantryCache
122
  $this->cache->addDriver('frontend', new WpTransientCacheDriver($this->group, $this->lifetime));
123
  } elseif (is_admin()) {
124
  // TODO get lifetime for backend cache
125
- $this->group = self::ADMIN_GROUP_NAME . '-4.0.8';
126
  $this->cache->addDriver('admin', new WpTransientCacheDriver($this->group, self::ADMIN_LIFETIME));
127
  }
128
  }
26
  /**
27
  *
28
  */
29
+ const ADMIN_GROUP_NAME = 'GantryAdmin-4.1.0';
30
 
31
  const ADMIN_LIFETIME = 86400;
32
 
122
  $this->cache->addDriver('frontend', new WpTransientCacheDriver($this->group, $this->lifetime));
123
  } elseif (is_admin()) {
124
  // TODO get lifetime for backend cache
125
+ $this->group = self::ADMIN_GROUP_NAME . '-4.1.0';
126
  $this->cache->addDriver('admin', new WpTransientCacheDriver($this->group, self::ADMIN_LIFETIME));
127
  }
128
  }
css/gantrydivider.css CHANGED
@@ -1,11 +1,17 @@
1
  /**
2
- * @version $Id: gantrydivider.css 58595 2012-12-11 19:59:45Z btowles $
3
  * @author RocketTheme http://www.rockettheme.com
4
  * @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
5
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
6
  */
 
7
  .gantry-divider {background:none;border: 0px solid #f00 !important;}
8
  .gantry-divider .widget-top {height:17px;background: transparent url(../admin/widgets/images/divider-bar.png) 0 50% no-repeat !important;}
9
- .gantry-divider .widget-top {border: 0px solid #f00 !important;}
 
10
  .gantry-divider .widget-top h4, .gantry-divider .widget-top .widget-title-action, .gantry-divider .widget-inside {display:none !important;}
11
- .gantry-divider .widget-title {height:17px;padding:0;background:url(../admin/widgets/images/divider-grab.png) 50% 50% no-repeat;}
 
 
 
 
1
  /**
2
+ * @version $Id: gantrydivider.css 60286 2013-12-09 23:32:26Z jakub $
3
  * @author RocketTheme http://www.rockettheme.com
4
  * @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
5
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
6
  */
7
+
8
  .gantry-divider {background:none;border: 0px solid #f00 !important;}
9
  .gantry-divider .widget-top {height:17px;background: transparent url(../admin/widgets/images/divider-bar.png) 0 50% no-repeat !important;}
10
+ .gantry-divider .widget-top {border: 0px solid #f00 !important; box-shadow: none;}
11
+ .gantry-divider .widget-top:hover {box-shadow: none !important;}
12
  .gantry-divider .widget-top h4, .gantry-divider .widget-top .widget-title-action, .gantry-divider .widget-inside {display:none !important;}
13
+ .gantry-divider .widget-title {height:17px;padding:0;background:url(../admin/widgets/images/divider-grab.png) 50% 50% no-repeat;}
14
+
15
+ /** WordPress < 3.8 Compatibility **/
16
+
17
+ .gantry-pre-mp6 .gantry-divider .widget-top {height:17px;background: transparent url(../admin/widgets/images/divider-bar-old.png) 0 50% no-repeat !important;}
functions.php CHANGED
@@ -168,7 +168,7 @@ function gantry_construct()
168
  /**
169
  * @name GANTRY_VERSION
170
  */
171
- define('GANTRY_VERSION', '4.0.8');
172
 
173
 
174
  if (!defined('DS')) {
168
  /**
169
  * @name GANTRY_VERSION
170
  */
171
+ define('GANTRY_VERSION', '4.1.0');
172
 
173
 
174
  if (!defined('DS')) {
gantry.php CHANGED
@@ -1,6 +1,6 @@
1
  <?php
2
  /**
3
- * @version $Id: gantry.php 59437 2013-03-22 19:23:38Z btowles $
4
  * @author RocketTheme http://www.rockettheme.com
5
  * @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
6
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
@@ -10,7 +10,7 @@
10
  Plugin Name: Gantry Template Framework
11
  Plugin URI: http://www.gantry-framework.org/
12
  Description: This is a Framework to support easily modifiable themes that are very extensible.
13
- Version: 4.0.8
14
  Author: RocketTheme
15
  Author URI: http://www.rockettheme.com/wordpress
16
  License: http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
@@ -58,6 +58,7 @@ if (file_exists($gantry_templatepath)) {
58
 
59
  } else { // Admin
60
  include(dirname(__FILE__) . '/admin_functions.php');
 
61
  add_action('after_setup_theme', 'gantry_admin_init', -9999);
62
  add_action('admin_init', 'gantry_admin_start_buffer', -10000);
63
  add_action('admin_init', 'gantry_admin_register_theme_settings');
1
  <?php
2
  /**
3
+ * @version $Id: gantry.php 60282 2013-12-09 12:53:41Z jakub $
4
  * @author RocketTheme http://www.rockettheme.com
5
  * @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
6
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
10
  Plugin Name: Gantry Template Framework
11
  Plugin URI: http://www.gantry-framework.org/
12
  Description: This is a Framework to support easily modifiable themes that are very extensible.
13
+ Version: 4.1.0
14
  Author: RocketTheme
15
  Author URI: http://www.rockettheme.com/wordpress
16
  License: http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
58
 
59
  } else { // Admin
60
  include(dirname(__FILE__) . '/admin_functions.php');
61
+ add_filter('admin_body_class', 'gantry_add_old_ui_class');
62
  add_action('after_setup_theme', 'gantry_admin_init', -9999);
63
  add_action('admin_init', 'gantry_admin_start_buffer', -10000);
64
  add_action('admin_init', 'gantry_admin_register_theme_settings');
gizmos/font.php CHANGED
@@ -96,7 +96,7 @@ class GantryGizmoFont extends GantryGizmo
96
  $variant = $variant ? $variant : '';
97
 
98
  $protocol = is_ssl() ? 'https' : 'http';
99
- $gantry->addStyle("{$protocol}://fonts.googleapis.com/css?family=" . str_replace(" ", "+", $name) . $variant);
100
  $gantry->addInlineStyle("h1, h2 { font-family: '" . $name . "', 'Helvetica', arial, serif; }");
101
  }
102
 
96
  $variant = $variant ? $variant : '';
97
 
98
  $protocol = is_ssl() ? 'https' : 'http';
99
+ $gantry->addStyle("{$protocol}://fonts.googleapis.com/css?family=" . str_replace(" ", "+", $name) . "&subset=latin,latin-ext" . $variant);
100
  $gantry->addInlineStyle("h1, h2 { font-family: '" . $name . "', 'Helvetica', arial, serif; }");
101
  }
102
 
gizmos/pagesuffix.php CHANGED
@@ -1,6 +1,6 @@
1
  <?php
2
  /**
3
- * @version $Id: pagesuffix.php 59361 2013-03-13 23:10:27Z btowles $
4
  * @author RocketTheme http://www.rockettheme.com
5
  * @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
6
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
@@ -25,8 +25,12 @@ class GantryGizmoPageSuffix extends GantryGizmo
25
  /** @global $gantry Gantry */
26
  global $gantry;
27
 
 
 
28
  //add body class suffix
29
- $gantry->addBodyClass($gantry->get('pagesuffix-class'));
 
 
30
 
31
  }
32
 
1
  <?php
2
  /**
3
+ * @version $Id: pagesuffix.php 60211 2013-11-14 00:02:42Z jakub $
4
  * @author RocketTheme http://www.rockettheme.com
5
  * @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
6
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
25
  /** @global $gantry Gantry */
26
  global $gantry;
27
 
28
+ $classes = explode(' ', $gantry->get('pagesuffix-class'));
29
+
30
  //add body class suffix
31
+ foreach($classes as $class) {
32
+ $gantry->addBodyClass($class);
33
+ }
34
 
35
  }
36
 
js/browser-engines.js ADDED
@@ -0,0 +1,241 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ (function(){
2
+
3
+ var document = this.document;
4
+ var window = document.window = this;
5
+
6
+ var ua = navigator.userAgent.toLowerCase(),
7
+ platform = navigator.platform.toLowerCase(),
8
+ UA = ua.match(/(opera|ie|trident|firefox|chrome|version)[\s\/:]([\w\d\.]+)?.*?(safari|version[\s\/:]([\w\d\.]+)|rv:(\d.?)|$)/) || [null, 'unknown', 0],
9
+ mode = (UA[1] == 'ie' || UA[1] == 'trident') && document.documentMode;
10
+
11
+ var Browser = this.Browser = {
12
+
13
+ extend: Function.prototype.extend,
14
+
15
+ name: (UA[1] == 'version') ? UA[3] : (UA[1] == 'trident' ? 'ie' : UA[1]),
16
+
17
+ version: mode || parseFloat((UA[1] == 'opera' && UA[4]) ? UA[4] : ((UA[1] == 'trident' && UA[5]) ? UA[5] : UA[2])),
18
+
19
+ Platform: {
20
+ name: ua.match(/ip(?:ad|od|hone)/) ? 'ios' : (ua.match(/(?:webos|android)/) || platform.match(/mac|win|linux/) || ['other'])[0]
21
+ },
22
+
23
+ Features: {
24
+ xpath: !!(document.evaluate),
25
+ air: !!(window.runtime),
26
+ query: !!(document.querySelector),
27
+ json: !!(window.JSON)
28
+ },
29
+
30
+ Plugins: {}
31
+
32
+ };
33
+
34
+ Browser[Browser.name] = true;
35
+ Browser[Browser.name + parseInt(Browser.version, 10)] = true;
36
+ Browser.Platform[Browser.Platform.name] = true;
37
+
38
+ // Request
39
+
40
+ Browser.Request = (function(){
41
+
42
+ var XMLHTTP = function(){
43
+ return new XMLHttpRequest();
44
+ };
45
+
46
+ var MSXML2 = function(){
47
+ return new ActiveXObject('MSXML2.XMLHTTP');
48
+ };
49
+
50
+ var MSXML = function(){
51
+ return new ActiveXObject('Microsoft.XMLHTTP');
52
+ };
53
+
54
+ return Function.attempt(function(){
55
+ XMLHTTP();
56
+ return XMLHTTP;
57
+ }, function(){
58
+ MSXML2();
59
+ return MSXML2;
60
+ }, function(){
61
+ MSXML();
62
+ return MSXML;
63
+ });
64
+
65
+ })();
66
+
67
+ Browser.Features.xhr = !!(Browser.Request);
68
+
69
+ //<1.4compat>
70
+
71
+ // Flash detection
72
+
73
+ var version = (Function.attempt(function(){
74
+ return navigator.plugins['Shockwave Flash'].description;
75
+ }, function(){
76
+ return new ActiveXObject('ShockwaveFlash.ShockwaveFlash').GetVariable('$version');
77
+ }) || '0 r0').match(/\d+/g);
78
+
79
+ Browser.Plugins.Flash = {
80
+ version: Number(version[0] || '0.' + version[1]) || 0,
81
+ build: Number(version[2]) || 0
82
+ };
83
+
84
+ //</1.4compat>
85
+
86
+ // String scripts
87
+
88
+ Browser.exec = function(text){
89
+ if (!text) return text;
90
+ if (window.execScript){
91
+ window.execScript(text);
92
+ } else {
93
+ var script = document.createElement('script');
94
+ script.setAttribute('type', 'text/javascript');
95
+ script.text = text;
96
+ document.head.appendChild(script);
97
+ document.head.removeChild(script);
98
+ }
99
+ return text;
100
+ };
101
+
102
+ String.implement('stripScripts', function(exec){
103
+ var scripts = '';
104
+ var text = this.replace(/<script[^>]*>([\s\S]*?)<\/script>/gi, function(all, code){
105
+ scripts += code + '\n';
106
+ return '';
107
+ });
108
+ if (exec === true) Browser.exec(scripts);
109
+ else if (typeOf(exec) == 'function') exec(scripts, text);
110
+ return text;
111
+ });
112
+
113
+ // Window, Document
114
+
115
+ Browser.extend({
116
+ Document: this.Document,
117
+ Window: this.Window,
118
+ Element: this.Element,
119
+ Event: this.Event
120
+ });
121
+
122
+ this.Window = this.$constructor = new Type('Window', function(){});
123
+
124
+ this.$family = Function.from('window').hide();
125
+
126
+ Window.mirror(function(name, method){
127
+ window[name] = method;
128
+ });
129
+
130
+ this.Document = document.$constructor = new Type('Document', function(){});
131
+
132
+ document.$family = Function.from('document').hide();
133
+
134
+ Document.mirror(function(name, method){
135
+ document[name] = method;
136
+ });
137
+
138
+ document.html = document.documentElement;
139
+ if (!document.head) document.head = document.getElementsByTagName('head')[0];
140
+
141
+ if (document.execCommand) try {
142
+ document.execCommand("BackgroundImageCache", false, true);
143
+ } catch (e){}
144
+
145
+ /*<ltIE9>*/
146
+ if (this.attachEvent && !this.addEventListener){
147
+ var unloadEvent = function(){
148
+ this.detachEvent('onunload', unloadEvent);
149
+ document.head = document.html = document.window = null;
150
+ };
151
+ this.attachEvent('onunload', unloadEvent);
152
+ }
153
+
154
+ // IE fails on collections and <select>.options (refers to <select>)
155
+ var arrayFrom = Array.from;
156
+ try {
157
+ arrayFrom(document.html.childNodes);
158
+ } catch(e){
159
+ Array.from = function(item){
160
+ if (typeof item != 'string' && Type.isEnumerable(item) && typeOf(item) != 'array'){
161
+ var i = item.length, array = new Array(i);
162
+ while (i--) array[i] = item[i];
163
+ return array;
164
+ }
165
+ return arrayFrom(item);
166
+ };
167
+
168
+ var prototype = Array.prototype,
169
+ slice = prototype.slice;
170
+ ['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift', 'concat', 'join', 'slice'].each(function(name){
171
+ var method = prototype[name];
172
+ Array[name] = function(item){
173
+ return method.apply(Array.from(item), slice.call(arguments, 1));
174
+ };
175
+ });
176
+ }
177
+ /*</ltIE9>*/
178
+
179
+ //<1.2compat>
180
+
181
+ if (Browser.Platform.ios) Browser.Platform.ipod = true;
182
+
183
+ Browser.Engine = {};
184
+
185
+ var setEngine = function(name, version){
186
+ Browser.Engine.name = name;
187
+ Browser.Engine[name + version] = true;
188
+ Browser.Engine.version = version;
189
+ };
190
+
191
+ if (Browser.ie){
192
+ Browser.Engine.trident = true;
193
+
194
+ switch (Browser.version){
195
+ case 6: setEngine('trident', 4); break;
196
+ case 7: setEngine('trident', 5); break;
197
+ case 8: setEngine('trident', 6);
198
+ }
199
+ }
200
+
201
+ if (Browser.firefox){
202
+ Browser.Engine.gecko = true;
203
+
204
+ if (Browser.version >= 3) setEngine('gecko', 19);
205
+ else setEngine('gecko', 18);
206
+ }
207
+
208
+ if (Browser.safari || Browser.chrome){
209
+ Browser.Engine.webkit = true;
210
+
211
+ switch (Browser.version){
212
+ case 2: setEngine('webkit', 419); break;
213
+ case 3: setEngine('webkit', 420); break;
214
+ case 4: setEngine('webkit', 525);
215
+ }
216
+ }
217
+
218
+ if (Browser.opera){
219
+ Browser.Engine.presto = true;
220
+
221
+ if (Browser.version >= 9.6) setEngine('presto', 960);
222
+ else if (Browser.version >= 9.5) setEngine('presto', 950);
223
+ else setEngine('presto', 925);
224
+ }
225
+
226
+ if (Browser.name == 'unknown'){
227
+ switch ((ua.match(/(?:webkit|khtml|gecko)/) || [])[0]){
228
+ case 'webkit':
229
+ case 'khtml':
230
+ Browser.Engine.webkit = true;
231
+ break;
232
+ case 'gecko':
233
+ Browser.Engine.gecko = true;
234
+ }
235
+ }
236
+
237
+ this.$exec = Browser.exec;
238
+
239
+ //</1.2compat>
240
+
241
+ })();
libs/google-code-prettify/lang-apollo.js CHANGED
@@ -1,2 +1,2 @@
1
- PR.registerLangHandler(PR.createSimpleLexer([["com",/^#[^\n\r]*/,null,"#"],["pln",/^[\t\n\r \xa0]+/,null,"\t\n\r �\xa0"],["str",/^"(?:[^"\\]|\\[\S\s])*(?:"|$)/,null,'"']],[["kwd",/^(?:ADS|AD|AUG|BZF|BZMF|CAE|CAF|CA|CCS|COM|CS|DAS|DCA|DCOM|DCS|DDOUBL|DIM|DOUBLE|DTCB|DTCF|DV|DXCH|EDRUPT|EXTEND|INCR|INDEX|NDX|INHINT|LXCH|MASK|MSK|MP|MSU|NOOP|OVSK|QXCH|RAND|READ|RELINT|RESUME|RETURN|ROR|RXOR|SQUARE|SU|TCR|TCAA|OVSK|TCF|TC|TS|WAND|WOR|WRITE|XCH|XLQ|XXALQ|ZL|ZQ|ADD|ADZ|SUB|SUZ|MPY|MPR|MPZ|DVP|COM|ABS|CLA|CLZ|LDQ|STO|STQ|ALS|LLS|LRS|TRA|TSQ|TMI|TOV|AXT|TIX|DLY|INP|OUT)\s/,
2
  null],["typ",/^(?:-?GENADR|=MINUS|2BCADR|VN|BOF|MM|-?2CADR|-?[1-6]DNADR|ADRES|BBCON|[ES]?BANK=?|BLOCK|BNKSUM|E?CADR|COUNT\*?|2?DEC\*?|-?DNCHAN|-?DNPTR|EQUALS|ERASE|MEMORY|2?OCT|REMADR|SETLOC|SUBRO|ORG|BSS|BES|SYN|EQU|DEFINE|END)\s/,null],["lit",/^'(?:-*(?:\w|\\[!-~])(?:[\w-]*|\\[!-~])[!=?]?)?/],["pln",/^-*(?:[!-z]|\\[!-~])(?:[\w-]*|\\[!-~])[!=?]?/],["pun",/^[^\w\t\n\r "'-);\\\xa0]+/]]),["apollo","agc","aea"]);
1
+ PR.registerLangHandler(PR.createSimpleLexer([["com",/^#[^\n\r]*/,null,"#"],["pln",/^[\t\n\r \xa0]+/,null,"\t\n\r \u00a0"],["str",/^"(?:[^"\\]|\\[\S\s])*(?:"|$)/,null,'"']],[["kwd",/^(?:ADS|AD|AUG|BZF|BZMF|CAE|CAF|CA|CCS|COM|CS|DAS|DCA|DCOM|DCS|DDOUBL|DIM|DOUBLE|DTCB|DTCF|DV|DXCH|EDRUPT|EXTEND|INCR|INDEX|NDX|INHINT|LXCH|MASK|MSK|MP|MSU|NOOP|OVSK|QXCH|RAND|READ|RELINT|RESUME|RETURN|ROR|RXOR|SQUARE|SU|TCR|TCAA|OVSK|TCF|TC|TS|WAND|WOR|WRITE|XCH|XLQ|XXALQ|ZL|ZQ|ADD|ADZ|SUB|SUZ|MPY|MPR|MPZ|DVP|COM|ABS|CLA|CLZ|LDQ|STO|STQ|ALS|LLS|LRS|TRA|TSQ|TMI|TOV|AXT|TIX|DLY|INP|OUT)\s/,
2
  null],["typ",/^(?:-?GENADR|=MINUS|2BCADR|VN|BOF|MM|-?2CADR|-?[1-6]DNADR|ADRES|BBCON|[ES]?BANK=?|BLOCK|BNKSUM|E?CADR|COUNT\*?|2?DEC\*?|-?DNCHAN|-?DNPTR|EQUALS|ERASE|MEMORY|2?OCT|REMADR|SETLOC|SUBRO|ORG|BSS|BES|SYN|EQU|DEFINE|END)\s/,null],["lit",/^'(?:-*(?:\w|\\[!-~])(?:[\w-]*|\\[!-~])[!=?]?)?/],["pln",/^-*(?:[!-z]|\\[!-~])(?:[\w-]*|\\[!-~])[!=?]?/],["pun",/^[^\w\t\n\r "'-);\\\xa0]+/]]),["apollo","agc","aea"]);
libs/google-code-prettify/lang-basic.js ADDED
@@ -0,0 +1,3 @@
 
 
 
1
+ var a=null;
2
+ PR.registerLangHandler(PR.createSimpleLexer([["str",/^"(?:[^\n\r"\\]|\\.)*(?:"|$)/,a,'"'],["pln",/^\s+/,a," \r\n\t\u00a0"]],[["com",/^REM[^\n\r]*/,a],["kwd",/^\b(?:AND|CLOSE|CLR|CMD|CONT|DATA|DEF ?FN|DIM|END|FOR|GET|GOSUB|GOTO|IF|INPUT|LET|LIST|LOAD|NEW|NEXT|NOT|ON|OPEN|OR|POKE|PRINT|READ|RESTORE|RETURN|RUN|SAVE|STEP|STOP|SYS|THEN|TO|VERIFY|WAIT)\b/,a],["pln",/^[a-z][^\W_]?(?:\$|%)?/i,a],["lit",/^(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?/i,a,"0123456789"],["pun",
3
+ /^.[^\s\w"$%.]*/,a]]),["basic","cbm"]);
libs/google-code-prettify/lang-clj.js CHANGED
@@ -14,5 +14,5 @@
14
  limitations under the License.
15
  */
16
  var a=null;
17
- PR.registerLangHandler(PR.createSimpleLexer([["opn",/^[([{]+/,a,"([{"],["clo",/^[)\]}]+/,a,")]}"],["com",/^;[^\n\r]*/,a,";"],["pln",/^[\t\n\r \xa0]+/,a,"\t\n\r \xa0"],["str",/^"(?:[^"\\]|\\[\S\s])*(?:"|$)/,a,'"']],[["kwd",/^(?:def|if|do|let|quote|var|fn|loop|recur|throw|try|monitor-enter|monitor-exit|defmacro|defn|defn-|macroexpand|macroexpand-1|for|doseq|dosync|dotimes|and|or|when|not|assert|doto|proxy|defstruct|first|rest|cons|defprotocol|deftype|defrecord|reify|defmulti|defmethod|meta|with-meta|ns|in-ns|create-ns|import|intern|refer|alias|namespace|resolve|ref|deref|refset|new|set!|memfn|to-array|into-array|aset|gen-class|reduce|map|filter|find|nil?|empty?|hash-map|hash-set|vec|vector|seq|flatten|reverse|assoc|dissoc|list|list?|disj|get|union|difference|intersection|extend|extend-type|extend-protocol|prn)\b/,a],
18
  ["typ",/^:[\dA-Za-z-]+/]]),["clj"]);
14
  limitations under the License.
15
  */
16
  var a=null;
17
+ PR.registerLangHandler(PR.createSimpleLexer([["opn",/^[([{]+/,a,"([{"],["clo",/^[)\]}]+/,a,")]}"],["com",/^;[^\n\r]*/,a,";"],["pln",/^[\t\n\r \xa0]+/,a,"\t\n\r \u00a0"],["str",/^"(?:[^"\\]|\\[\S\s])*(?:"|$)/,a,'"']],[["kwd",/^(?:def|if|do|let|quote|var|fn|loop|recur|throw|try|monitor-enter|monitor-exit|defmacro|defn|defn-|macroexpand|macroexpand-1|for|doseq|dosync|dotimes|and|or|when|not|assert|doto|proxy|defstruct|first|rest|cons|defprotocol|deftype|defrecord|reify|defmulti|defmethod|meta|with-meta|ns|in-ns|create-ns|import|intern|refer|alias|namespace|resolve|ref|deref|refset|new|set!|memfn|to-array|into-array|aset|gen-class|reduce|map|filter|find|nil?|empty?|hash-map|hash-set|vec|vector|seq|flatten|reverse|assoc|dissoc|list|list?|disj|get|union|difference|intersection|extend|extend-type|extend-protocol|prn)\b/,a],
18
  ["typ",/^:[\dA-Za-z-]+/]]),["clj"]);
libs/google-code-prettify/lang-css.js CHANGED
@@ -1,2 +1,2 @@
1
- PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\f\r ]+/,null," \t\r\n"]],[["str",/^"(?:[^\n\f\r"\\]|\\(?:\r\n?|\n|\f)|\\[\S\s])*"/,null],["str",/^'(?:[^\n\f\r'\\]|\\(?:\r\n?|\n|\f)|\\[\S\s])*'/,null],["lang-css-str",/^url\(([^"')]*)\)/i],["kwd",/^(?:url|rgb|!important|@import|@page|@media|@charset|inherit)(?=[^\w-]|$)/i,null],["lang-css-kw",/^(-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*)\s*:/i],["com",/^\/\*[^*]*\*+(?:[^*/][^*]*\*+)*\//],["com",
2
- /^(?:<\!--|--\>)/],["lit",/^(?:\d+|\d*\.\d+)(?:%|[a-z]+)?/i],["lit",/^#[\da-f]{3,6}/i],["pln",/^-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*/i],["pun",/^[^\s\w"']+/]]),["css"]);PR.registerLangHandler(PR.createSimpleLexer([],[["kwd",/^-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*/i]]),["css-kw"]);PR.registerLangHandler(PR.createSimpleLexer([],[["str",/^[^"')]+/]]),["css-str"]);
1
+ PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\f\r ]+/,null," \t\r\n\u000c"]],[["str",/^"(?:[^\n\f\r"\\]|\\(?:\r\n?|\n|\f)|\\[\S\s])*"/,null],["str",/^'(?:[^\n\f\r'\\]|\\(?:\r\n?|\n|\f)|\\[\S\s])*'/,null],["lang-css-str",/^url\(([^"')]+)\)/i],["kwd",/^(?:url|rgb|!important|@import|@page|@media|@charset|inherit)(?=[^\w-]|$)/i,null],["lang-css-kw",/^(-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*)\s*:/i],["com",/^\/\*[^*]*\*+(?:[^*/][^*]*\*+)*\//],
2
+ ["com",/^(?:<\!--|--\>)/],["lit",/^(?:\d+|\d*\.\d+)(?:%|[a-z]+)?/i],["lit",/^#[\da-f]{3,6}\b/i],["pln",/^-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*/i],["pun",/^[^\s\w"']+/]]),["css"]);PR.registerLangHandler(PR.createSimpleLexer([],[["kwd",/^-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*/i]]),["css-kw"]);PR.registerLangHandler(PR.createSimpleLexer([],[["str",/^[^"')]+/]]),["css-str"]);
libs/google-code-prettify/lang-dart.js ADDED
@@ -0,0 +1,3 @@
 
 
 
1
+ PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xa0]+/,null,"\t\n\r \u00a0"]],[["com",/^#!.*/],["kwd",/^\b(?:import|library|part of|part|as|show|hide)\b/i],["com",/^\/\/.*/],["com",/^\/\*[^*]*\*+(?:[^*/][^*]*\*+)*\//],["kwd",/^\b(?:class|interface)\b/i],["kwd",/^\b(?:assert|break|case|catch|continue|default|do|else|finally|for|if|in|is|new|return|super|switch|this|throw|try|while)\b/i],["kwd",/^\b(?:abstract|const|extends|factory|final|get|implements|native|operator|set|static|typedef|var)\b/i],
2
+ ["typ",/^\b(?:bool|double|dynamic|int|num|object|string|void)\b/i],["kwd",/^\b(?:false|null|true)\b/i],["str",/^r?'''[\S\s]*?[^\\]'''/],["str",/^r?"""[\S\s]*?[^\\]"""/],["str",/^r?'('|[^\n\f\r]*?[^\\]')/],["str",/^r?"("|[^\n\f\r]*?[^\\]")/],["pln",/^[$_a-z]\w*/i],["pun",/^[!%&*+/:<-?^|~-]/],["lit",/^\b0x[\da-f]+/i],["lit",/^\b\d+(?:\.\d*)?(?:e[+-]?\d+)?/i],["lit",/^\b\.\d+(?:e[+-]?\d+)?/i],["pun",/^[(),.;[\]{}]/]]),
3
+ ["dart"]);
libs/google-code-prettify/lang-erlang.js ADDED
@@ -0,0 +1,2 @@
 
 
1
+ PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t-\r ]+/,null,"\t\n\u000b\u000c\r "],["str",/^"(?:[^\n\f\r"\\]|\\[\S\s])*(?:"|$)/,null,'"'],["lit",/^[a-z]\w*/],["lit",/^'(?:[^\n\f\r'\\]|\\[^&])+'?/,null,"'"],["lit",/^\?[^\t\n ({]+/,null,"?"],["lit",/^(?:0o[0-7]+|0x[\da-f]+|\d+(?:\.\d+)?(?:e[+-]?\d+)?)/i,null,"0123456789"]],[["com",/^%[^\n]*/],["kwd",/^(?:module|attributes|do|let|in|letrec|apply|call|primop|case|of|end|when|fun|try|catch|receive|after|char|integer|float,atom,string,var)\b/],
2
+ ["kwd",/^-[_a-z]+/],["typ",/^[A-Z_]\w*/],["pun",/^[,.;]/]]),["erlang","erl"]);
libs/google-code-prettify/lang-go.js CHANGED
@@ -1 +1 @@
1
- PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xa0]+/,null,"\t\n\r �\xa0"],["pln",/^(?:"(?:[^"\\]|\\[\S\s])*(?:"|$)|'(?:[^'\\]|\\[\S\s])+(?:'|$)|`[^`]*(?:`|$))/,null,"\"'"]],[["com",/^(?:\/\/[^\n\r]*|\/\*[\S\s]*?\*\/)/],["pln",/^(?:[^"'/`]|\/(?![*/]))+/]]),["go"]);
1
+ PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xa0]+/,null,"\t\n\r \u00a0"],["pln",/^(?:"(?:[^"\\]|\\[\S\s])*(?:"|$)|'(?:[^'\\]|\\[\S\s])+(?:'|$)|`[^`]*(?:`|$))/,null,"\"'"]],[["com",/^(?:\/\/[^\n\r]*|\/\*[\S\s]*?\*\/)/],["pln",/^(?:[^"'/`]|\/(?![*/]))+/]]),["go"]);
libs/google-code-prettify/lang-hs.js CHANGED
@@ -1,2 +1,2 @@
1
- PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t-\r ]+/,null,"\t\n\r "],["str",/^"(?:[^\n\f\r"\\]|\\[\S\s])*(?:"|$)/,null,'"'],["str",/^'(?:[^\n\f\r'\\]|\\[^&])'?/,null,"'"],["lit",/^(?:0o[0-7]+|0x[\da-f]+|\d+(?:\.\d+)?(?:e[+-]?\d+)?)/i,null,"0123456789"]],[["com",/^(?:--+[^\n\f\r]*|{-(?:[^-]|-+[^}-])*-})/],["kwd",/^(?:case|class|data|default|deriving|do|else|if|import|in|infix|infixl|infixr|instance|let|module|newtype|of|then|type|where|_)(?=[^\d'A-Za-z]|$)/,
2
  null],["pln",/^(?:[A-Z][\w']*\.)*[A-Za-z][\w']*/],["pun",/^[^\d\t-\r "'A-Za-z]+/]]),["hs"]);
1
+ PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t-\r ]+/,null,"\t\n\u000b\u000c\r "],["str",/^"(?:[^\n\f\r"\\]|\\[\S\s])*(?:"|$)/,null,'"'],["str",/^'(?:[^\n\f\r'\\]|\\[^&])'?/,null,"'"],["lit",/^(?:0o[0-7]+|0x[\da-f]+|\d+(?:\.\d+)?(?:e[+-]?\d+)?)/i,null,"0123456789"]],[["com",/^(?:--+[^\n\f\r]*|{-(?:[^-]|-+[^}-])*-})/],["kwd",/^(?:case|class|data|default|deriving|do|else|if|import|in|infix|infixl|infixr|instance|let|module|newtype|of|then|type|where|_)(?=[^\d'A-Za-z]|$)/,
2
  null],["pln",/^(?:[A-Z][\w']*\.)*[A-Za-z][\w']*/],["pun",/^[^\d\t-\r "'A-Za-z]+/]]),["hs"]);
libs/google-code-prettify/lang-lisp.js CHANGED
@@ -1,3 +1,3 @@
1
  var a=null;
2
- PR.registerLangHandler(PR.createSimpleLexer([["opn",/^\(+/,a,"("],["clo",/^\)+/,a,")"],["com",/^;[^\n\r]*/,a,";"],["pln",/^[\t\n\r \xa0]+/,a,"\t\n\r \xa0"],["str",/^"(?:[^"\\]|\\[\S\s])*(?:"|$)/,a,'"']],[["kwd",/^(?:block|c[ad]+r|catch|con[ds]|def(?:ine|un)|do|eq|eql|equal|equalp|eval-when|flet|format|go|if|labels|lambda|let|load-time-value|locally|macrolet|multiple-value-call|nil|progn|progv|quote|require|return-from|setq|symbol-macrolet|t|tagbody|the|throw|unwind)\b/,a],
3
- ["lit",/^[+-]?(?:[#0]x[\da-f]+|\d+\/\d+|(?:\.\d+|\d+(?:\.\d*)?)(?:[de][+-]?\d+)?)/i],["lit",/^'(?:-*(?:\w|\\[!-~])(?:[\w-]*|\\[!-~])[!=?]?)?/],["pln",/^-*(?:[_a-z]|\\[!-~])(?:[\w-]*|\\[!-~])[!=?]?/i],["pun",/^[^\w\t\n\r "'-);\\\xa0]+/]]),["cl","el","lisp","scm"]);
1
  var a=null;
2
+ PR.registerLangHandler(PR.createSimpleLexer([["opn",/^\(+/,a,"("],["clo",/^\)+/,a,")"],["com",/^;[^\n\r]*/,a,";"],["pln",/^[\t\n\r \xa0]+/,a,"\t\n\r \u00a0"],["str",/^"(?:[^"\\]|\\[\S\s])*(?:"|$)/,a,'"']],[["kwd",/^(?:block|c[ad]+r|catch|con[ds]|def(?:ine|un)|do|eq|eql|equal|equalp|eval-when|flet|format|go|if|labels|lambda|let|load-time-value|locally|macrolet|multiple-value-call|nil|progn|progv|quote|require|return-from|setq|symbol-macrolet|t|tagbody|the|throw|unwind)\b/,a],
3
+ ["lit",/^[+-]?(?:[#0]x[\da-f]+|\d+\/\d+|(?:\.\d+|\d+(?:\.\d*)?)(?:[de][+-]?\d+)?)/i],["lit",/^'(?:-*(?:\w|\\[!-~])(?:[\w-]*|\\[!-~])[!=?]?)?/],["pln",/^-*(?:[_a-z]|\\[!-~])(?:[\w-]*|\\[!-~])[!=?]?/i],["pun",/^[^\w\t\n\r "'-);\\\xa0]+/]]),["cl","el","lisp","lsp","scm","ss","rkt"]);
libs/google-code-prettify/lang-llvm.js ADDED
@@ -0,0 +1 @@
 
1
+ PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xa0]+/,null,"\t\n\r \u00a0"],["str",/^!?"(?:[^"\\]|\\[\S\s])*(?:"|$)/,null,'"'],["com",/^;[^\n\r]*/,null,";"]],[["pln",/^[!%@](?:[$\-.A-Z_a-z][\w$\-.]*|\d+)/],["kwd",/^[^\W\d]\w*/,null],["lit",/^\d+\.\d+/],["lit",/^(?:\d+|0[Xx][\dA-Fa-f]+)/],["pun",/^[(-*,:<->[\]{}]|\.\.\.$/]]),["llvm","ll"]);
libs/google-code-prettify/lang-lua.js CHANGED
@@ -1,2 +1,2 @@
1
- PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xa0]+/,null,"\t\n\r �\xa0"],["str",/^(?:"(?:[^"\\]|\\[\S\s])*(?:"|$)|'(?:[^'\\]|\\[\S\s])*(?:'|$))/,null,"\"'"]],[["com",/^--(?:\[(=*)\[[\S\s]*?(?:]\1]|$)|[^\n\r]*)/],["str",/^\[(=*)\[[\S\s]*?(?:]\1]|$)/],["kwd",/^(?:and|break|do|else|elseif|end|false|for|function|if|in|local|nil|not|or|repeat|return|then|true|until|while)\b/,null],["lit",/^[+-]?(?:0x[\da-f]+|(?:\.\d+|\d+(?:\.\d*)?)(?:e[+-]?\d+)?)/i],
2
  ["pln",/^[_a-z]\w*/i],["pun",/^[^\w\t\n\r \xa0][^\w\t\n\r "'+=\xa0-]*/]]),["lua"]);
1
+ PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xa0]+/,null,"\t\n\r \u00a0"],["str",/^(?:"(?:[^"\\]|\\[\S\s])*(?:"|$)|'(?:[^'\\]|\\[\S\s])*(?:'|$))/,null,"\"'"]],[["com",/^--(?:\[(=*)\[[\S\s]*?(?:]\1]|$)|[^\n\r]*)/],["str",/^\[(=*)\[[\S\s]*?(?:]\1]|$)/],["kwd",/^(?:and|break|do|else|elseif|end|false|for|function|if|in|local|nil|not|or|repeat|return|then|true|until|while)\b/,null],["lit",/^[+-]?(?:0x[\da-f]+|(?:\.\d+|\d+(?:\.\d*)?)(?:e[+-]?\d+)?)/i],
2
  ["pln",/^[_a-z]\w*/i],["pun",/^[^\w\t\n\r \xa0][^\w\t\n\r "'+=\xa0-]*/]]),["lua"]);
libs/google-code-prettify/lang-matlab.js ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
1
+ var a=null,b=window.PR,c=[[b.PR_PLAIN,/^[\t-\r \xa0]+/,a," \t\r\n\u000b\u000c\u00a0"],[b.PR_COMMENT,/^%{[^%]*%+(?:[^%}][^%]*%+)*}/,a],[b.PR_COMMENT,/^%[^\n\r]*/,a,"%"],["syscmd",/^![^\n\r]*/,a,"!"]],d=[["linecont",/^\.\.\.\s*[\n\r]/,a],["err",/^\?\?\? [^\n\r]*/,a],["wrn",/^Warning: [^\n\r]*/,a],["codeoutput",/^>>\s+/,a],["codeoutput",/^octave:\d+>\s+/,a],["lang-matlab-operators",/^((?:[A-Za-z]\w*(?:\.[A-Za-z]\w*)*|[).\]}])')/,a],["lang-matlab-identifiers",/^([A-Za-z]\w*(?:\.[A-Za-z]\w*)*)(?!')/,a],
2
+ [b.PR_STRING,/^'(?:[^']|'')*'/,a],[b.PR_LITERAL,/^[+-]?\.?\d+(?:\.\d*)?(?:[Ee][+-]?\d+)?[ij]?/,a],[b.PR_TAG,/^[()[\]{}]/,a],[b.PR_PUNCTUATION,/^[!&*-/:->@\\^|~]/,a]],e=[["lang-matlab-identifiers",/^([A-Za-z]\w*(?:\.[A-Za-z]\w*)*)/,a],[b.PR_TAG,/^[()[\]{}]/,a],[b.PR_PUNCTUATION,/^[!&*-/:->@\\^|~]/,a],["transpose",/^'/,a]];
3
+ b.registerLangHandler(b.createSimpleLexer([],[[b.PR_KEYWORD,/^\b(?:break|case|catch|classdef|continue|else|elseif|end|for|function|global|if|otherwise|parfor|persistent|return|spmd|switch|try|while)\b/,a],["const",/^\b(?:true|false|inf|Inf|nan|NaN|eps|pi|ans|nargin|nargout|varargin|varargout)\b/,a],[b.PR_TYPE,/^\b(?:cell|struct|char|double|single|logical|u?int(?:8|16|32|64)|sparse)\b/,a],["fun",/^\b(?:abs|accumarray|acos(?:d|h)?|acot(?:d|h)?|acsc(?:d|h)?|actxcontrol(?:list|select)?|actxGetRunningServer|actxserver|addlistener|addpath|addpref|addtodate|airy|align|alim|all|allchild|alpha|alphamap|amd|ancestor|and|angle|annotation|any|area|arrayfun|asec(?:d|h)?|asin(?:d|h)?|assert|assignin|atan[2dh]?|audiodevinfo|audioplayer|audiorecorder|aufinfo|auread|autumn|auwrite|avifile|aviinfo|aviread|axes|axis|balance|bar(?:3|3h|h)?|base2dec|beep|BeginInvoke|bench|bessel[h-ky]|beta|betainc|betaincinv|betaln|bicg|bicgstab|bicgstabl|bin2dec|bitand|bitcmp|bitget|bitmax|bitnot|bitor|bitset|bitshift|bitxor|blanks|blkdiag|bone|box|brighten|brush|bsxfun|builddocsearchdb|builtin|bvp4c|bvp5c|bvpget|bvpinit|bvpset|bvpxtend|calendar|calllib|callSoapService|camdolly|cameratoolbar|camlight|camlookat|camorbit|campan|campos|camproj|camroll|camtarget|camup|camva|camzoom|cart2pol|cart2sph|cast|cat|caxis|cd|cdf2rdf|cdfepoch|cdfinfo|cdflib(?:.(?:close|closeVar|computeEpoch|computeEpoch16|create|createAttr|createVar|delete|deleteAttr|deleteAttrEntry|deleteAttrgEntry|deleteVar|deleteVarRecords|epoch16Breakdown|epochBreakdown|getAttrEntry|getAttrgEntry|getAttrMaxEntry|getAttrMaxgEntry|getAttrName|getAttrNum|getAttrScope|getCacheSize|getChecksum|getCompression|getCompressionCacheSize|getConstantNames|getConstantValue|getCopyright|getFileBackward|getFormat|getLibraryCopyright|getLibraryVersion|getMajority|getName|getNumAttrEntries|getNumAttrgEntries|getNumAttributes|getNumgAttributes|getReadOnlyMode|getStageCacheSize|getValidate|getVarAllocRecords|getVarBlockingFactor|getVarCacheSize|getVarCompression|getVarData|getVarMaxAllocRecNum|getVarMaxWrittenRecNum|getVarName|getVarNum|getVarNumRecsWritten|getVarPadValue|getVarRecordData|getVarReservePercent|getVarsMaxWrittenRecNum|getVarSparseRecords|getVersion|hyperGetVarData|hyperPutVarData|inquire|inquireAttr|inquireAttrEntry|inquireAttrgEntry|inquireVar|open|putAttrEntry|putAttrgEntry|putVarData|putVarRecordData|renameAttr|renameVar|setCacheSize|setChecksum|setCompression|setCompressionCacheSize|setFileBackward|setFormat|setMajority|setReadOnlyMode|setStageCacheSize|setValidate|setVarAllocBlockRecords|setVarBlockingFactor|setVarCacheSize|setVarCompression|setVarInitialRecs|setVarPadValue|SetVarReservePercent|setVarsCacheSize|setVarSparseRecords))?|cdfread|cdfwrite|ceil|cell2mat|cell2struct|celldisp|cellfun|cellplot|cellstr|cgs|checkcode|checkin|checkout|chol|cholinc|cholupdate|circshift|cla|clabel|class|clc|clear|clearvars|clf|clipboard|clock|close|closereq|cmopts|cmpermute|cmunique|colamd|colon|colorbar|colordef|colormap|colormapeditor|colperm|Combine|comet|comet3|commandhistory|commandwindow|compan|compass|complex|computer|cond|condeig|condest|coneplot|conj|containers.Map|contour(?:[3cf]|slice)?|contrast|conv|conv2|convhull|convhulln|convn|cool|copper|copyfile|copyobj|corrcoef|cos(?:d|h)?|cot(?:d|h)?|cov|cplxpair|cputime|createClassFromWsdl|createSoapMessage|cross|csc(?:d|h)?|csvread|csvwrite|ctranspose|cumprod|cumsum|cumtrapz|curl|customverctrl|cylinder|daqread|daspect|datacursormode|datatipinfo|date|datenum|datestr|datetick|datevec|dbclear|dbcont|dbdown|dblquad|dbmex|dbquit|dbstack|dbstatus|dbstep|dbstop|dbtype|dbup|dde23|ddeget|ddesd|ddeset|deal|deblank|dec2base|dec2bin|dec2hex|decic|deconv|del2|delaunay|delaunay3|delaunayn|DelaunayTri|delete|demo|depdir|depfun|det|detrend|deval|diag|dialog|diary|diff|diffuse|dir|disp|display|dither|divergence|dlmread|dlmwrite|dmperm|doc|docsearch|dos|dot|dragrect|drawnow|dsearch|dsearchn|dynamicprops|echo|echodemo|edit|eig|eigs|ellipj|ellipke|ellipsoid|empty|enableNETfromNetworkDrive|enableservice|EndInvoke|enumeration|eomday|eq|erf|erfc|erfcinv|erfcx|erfinv|error|errorbar|errordlg|etime|etree|etreeplot|eval|evalc|evalin|event.(?:EventData|listener|PropertyEvent|proplistener)|exifread|exist|exit|exp|expint|expm|expm1|export2wsdlg|eye|ezcontour|ezcontourf|ezmesh|ezmeshc|ezplot|ezplot3|ezpolar|ezsurf|ezsurfc|factor|factorial|fclose|feather|feature|feof|ferror|feval|fft|fft2|fftn|fftshift|fftw|fgetl|fgets|fieldnames|figure|figurepalette|fileattrib|filebrowser|filemarker|fileparts|fileread|filesep|fill|fill3|filter|filter2|find|findall|findfigs|findobj|findstr|finish|fitsdisp|fitsinfo|fitsread|fitswrite|fix|flag|flipdim|fliplr|flipud|floor|flow|fminbnd|fminsearch|fopen|format|fplot|fprintf|frame2im|fread|freqspace|frewind|fscanf|fseek|ftell|FTP|full|fullfile|func2str|functions|funm|fwrite|fzero|gallery|gamma|gammainc|gammaincinv|gammaln|gca|gcbf|gcbo|gcd|gcf|gco|ge|genpath|genvarname|get|getappdata|getenv|getfield|getframe|getpixelposition|getpref|ginput|gmres|gplot|grabcode|gradient|gray|graymon|grid|griddata(?:3|n)?|griddedInterpolant|gsvd|gt|gtext|guidata|guide|guihandles|gunzip|gzip|h5create|h5disp|h5info|h5read|h5readatt|h5write|h5writeatt|hadamard|handle|hankel|hdf|hdf5|hdf5info|hdf5read|hdf5write|hdfinfo|hdfread|hdftool|help|helpbrowser|helpdesk|helpdlg|helpwin|hess|hex2dec|hex2num|hgexport|hggroup|hgload|hgsave|hgsetget|hgtransform|hidden|hilb|hist|histc|hold|home|horzcat|hostid|hot|hsv|hsv2rgb|hypot|ichol|idivide|ifft|ifft2|ifftn|ifftshift|ilu|im2frame|im2java|imag|image|imagesc|imapprox|imfinfo|imformats|import|importdata|imread|imwrite|ind2rgb|ind2sub|inferiorto|info|inline|inmem|inpolygon|input|inputdlg|inputname|inputParser|inspect|instrcallback|instrfind|instrfindall|int2str|integral(?:2|3)?|interp(?:1|1q|2|3|ft|n)|interpstreamspeed|intersect|intmax|intmin|inv|invhilb|ipermute|isa|isappdata|iscell|iscellstr|ischar|iscolumn|isdir|isempty|isequal|isequaln|isequalwithequalnans|isfield|isfinite|isfloat|isglobal|ishandle|ishghandle|ishold|isinf|isinteger|isjava|iskeyword|isletter|islogical|ismac|ismatrix|ismember|ismethod|isnan|isnumeric|isobject|isocaps|isocolors|isonormals|isosurface|ispc|ispref|isprime|isprop|isreal|isrow|isscalar|issorted|isspace|issparse|isstr|isstrprop|isstruct|isstudent|isunix|isvarname|isvector|javaaddpath|javaArray|javachk|javaclasspath|javacomponent|javaMethod|javaMethodEDT|javaObject|javaObjectEDT|javarmpath|jet|keyboard|kron|lasterr|lasterror|lastwarn|lcm|ldivide|ldl|le|legend|legendre|length|libfunctions|libfunctionsview|libisloaded|libpointer|libstruct|license|light|lightangle|lighting|lin2mu|line|lines|linkaxes|linkdata|linkprop|linsolve|linspace|listdlg|listfonts|load|loadlibrary|loadobj|log|log10|log1p|log2|loglog|logm|logspace|lookfor|lower|ls|lscov|lsqnonneg|lsqr|lt|lu|luinc|magic|makehgtform|mat2cell|mat2str|material|matfile|matlab.io.MatFile|matlab.mixin.(?:Copyable|Heterogeneous(?:.getDefaultScalarElement)?)|matlabrc|matlabroot|max|maxNumCompThreads|mean|median|membrane|memmapfile|memory|menu|mesh|meshc|meshgrid|meshz|meta.(?:class(?:.fromName)?|DynamicProperty|EnumeratedValue|event|MetaData|method|package(?:.(?:fromName|getAllPackages))?|property)|metaclass|methods|methodsview|mex(?:.getCompilerConfigurations)?|MException|mexext|mfilename|min|minres|minus|mislocked|mkdir|mkpp|mldivide|mlint|mlintrpt|mlock|mmfileinfo|mmreader|mod|mode|more|move|movefile|movegui|movie|movie2avi|mpower|mrdivide|msgbox|mtimes|mu2lin|multibandread|multibandwrite|munlock|namelengthmax|nargchk|narginchk|nargoutchk|native2unicode|nccreate|ncdisp|nchoosek|ncinfo|ncread|ncreadatt|ncwrite|ncwriteatt|ncwriteschema|ndgrid|ndims|ne|NET(?:.(?:addAssembly|Assembly|convertArray|createArray|createGeneric|disableAutoRelease|enableAutoRelease|GenericClass|invokeGenericMethod|NetException|setStaticProperty))?|netcdf.(?:abort|close|copyAtt|create|defDim|defGrp|defVar|defVarChunking|defVarDeflate|defVarFill|defVarFletcher32|delAtt|endDef|getAtt|getChunkCache|getConstant|getConstantNames|getVar|inq|inqAtt|inqAttID|inqAttName|inqDim|inqDimID|inqDimIDs|inqFormat|inqGrpName|inqGrpNameFull|inqGrpParent|inqGrps|inqLibVers|inqNcid|inqUnlimDims|inqVar|inqVarChunking|inqVarDeflate|inqVarFill|inqVarFletcher32|inqVarID|inqVarIDs|open|putAtt|putVar|reDef|renameAtt|renameDim|renameVar|setChunkCache|setDefaultFormat|setFill|sync)|newplot|nextpow2|nnz|noanimate|nonzeros|norm|normest|not|notebook|now|nthroot|null|num2cell|num2hex|num2str|numel|nzmax|ode(?:113|15i|15s|23|23s|23t|23tb|45)|odeget|odeset|odextend|onCleanup|ones|open|openfig|opengl|openvar|optimget|optimset|or|ordeig|orderfields|ordqz|ordschur|orient|orth|pack|padecoef|pagesetupdlg|pan|pareto|parseSoapResponse|pascal|patch|path|path2rc|pathsep|pathtool|pause|pbaspect|pcg|pchip|pcode|pcolor|pdepe|pdeval|peaks|perl|perms|permute|pie|pink|pinv|planerot|playshow|plot|plot3|plotbrowser|plotedit|plotmatrix|plottools|plotyy|plus|pol2cart|polar|poly|polyarea|polyder|polyeig|polyfit|polyint|polyval|polyvalm|pow2|power|ppval|prefdir|preferences|primes|print|printdlg|printopt|printpreview|prod|profile|profsave|propedit|propertyeditor|psi|publish|PutCharArray|PutFullMatrix|PutWorkspaceData|pwd|qhull|qmr|qr|qrdelete|qrinsert|qrupdate|quad|quad2d|quadgk|quadl|quadv|questdlg|quit|quiver|quiver3|qz|rand|randi|randn|randperm|RandStream(?:.(?:create|getDefaultStream|getGlobalStream|list|setDefaultStream|setGlobalStream))?|rank|rat|rats|rbbox|rcond|rdivide|readasync|real|reallog|realmax|realmin|realpow|realsqrt|record|rectangle|rectint|recycle|reducepatch|reducevolume|refresh|refreshdata|regexp|regexpi|regexprep|regexptranslate|rehash|rem|Remove|RemoveAll|repmat|reset|reshape|residue|restoredefaultpath|rethrow|rgb2hsv|rgb2ind|rgbplot|ribbon|rmappdata|rmdir|rmfield|rmpath|rmpref|rng|roots|rose|rosser|rot90|rotate|rotate3d|round|rref|rsf2csf|run|save|saveas|saveobj|savepath|scatter|scatter3|schur|sec|secd|sech|selectmoveresize|semilogx|semilogy|sendmail|serial|set|setappdata|setdiff|setenv|setfield|setpixelposition|setpref|setstr|setxor|shading|shg|shiftdim|showplottool|shrinkfaces|sign|sin(?:d|h)?|size|slice|smooth3|snapnow|sort|sortrows|sound|soundsc|spalloc|spaugment|spconvert|spdiags|specular|speye|spfun|sph2cart|sphere|spinmap|spline|spones|spparms|sprand|sprandn|sprandsym|sprank|spring|sprintf|spy|sqrt|sqrtm|squeeze|ss2tf|sscanf|stairs|startup|std|stem|stem3|stopasync|str2double|str2func|str2mat|str2num|strcat|strcmp|strcmpi|stream2|stream3|streamline|streamparticles|streamribbon|streamslice|streamtube|strfind|strjust|strmatch|strncmp|strncmpi|strread|strrep|strtok|strtrim|struct2cell|structfun|strvcat|sub2ind|subplot|subsasgn|subsindex|subspace|subsref|substruct|subvolume|sum|summer|superclasses|superiorto|support|surf|surf2patch|surface|surfc|surfl|surfnorm|svd|svds|swapbytes|symamd|symbfact|symmlq|symrcm|symvar|system|tan(?:d|h)?|tar|tempdir|tempname|tetramesh|texlabel|text|textread|textscan|textwrap|tfqmr|throw|tic|Tiff(?:.(?:getTagNames|getVersion))?|timer|timerfind|timerfindall|times|timeseries|title|toc|todatenum|toeplitz|toolboxdir|trace|transpose|trapz|treelayout|treeplot|tril|trimesh|triplequad|triplot|TriRep|TriScatteredInterp|trisurf|triu|tscollection|tsearch|tsearchn|tstool|type|typecast|uibuttongroup|uicontextmenu|uicontrol|uigetdir|uigetfile|uigetpref|uiimport|uimenu|uiopen|uipanel|uipushtool|uiputfile|uiresume|uisave|uisetcolor|uisetfont|uisetpref|uistack|uitable|uitoggletool|uitoolbar|uiwait|uminus|undocheckout|unicode2native|union|unique|unix|unloadlibrary|unmesh|unmkpp|untar|unwrap|unzip|uplus|upper|urlread|urlwrite|usejava|userpath|validateattributes|validatestring|vander|var|vectorize|ver|verctrl|verLessThan|version|vertcat|VideoReader(?:.isPlatformSupported)?|VideoWriter(?:.getProfiles)?|view|viewmtx|visdiff|volumebounds|voronoi|voronoin|wait|waitbar|waitfor|waitforbuttonpress|warndlg|warning|waterfall|wavfinfo|wavplay|wavread|wavrecord|wavwrite|web|weekday|what|whatsnew|which|whitebg|who|whos|wilkinson|winopen|winqueryreg|winter|wk1finfo|wk1read|wk1write|workspace|xlabel|xlim|xlsfinfo|xlsread|xlswrite|xmlread|xmlwrite|xor|xslt|ylabel|ylim|zeros|zip|zlabel|zlim|zoom)\b/,
4
+ a],["fun_tbx",/^\b(?:addedvarplot|andrewsplot|anova[12n]|ansaribradley|aoctool|barttest|bbdesign|beta(?:cdf|fit|inv|like|pdf|rnd|stat)|bino(?:cdf|fit|inv|pdf|rnd|stat)|biplot|bootci|bootstrp|boxplot|candexch|candgen|canoncorr|capability|capaplot|caseread|casewrite|categorical|ccdesign|cdfplot|chi2(?:cdf|gof|inv|pdf|rnd|stat)|cholcov|Classification(?:BaggedEnsemble|Discriminant(?:.(?:fit|make|template))?|Ensemble|KNN(?:.(?:fit|template))?|PartitionedEnsemble|PartitionedModel|Tree(?:.(?:fit|template))?)|classify|classregtree|cluster|clusterdata|cmdscale|combnk|Compact(?:Classification(?:Discriminant|Ensemble|Tree)|Regression(?:Ensemble|Tree)|TreeBagger)|confusionmat|controlchart|controlrules|cophenet|copula(?:cdf|fit|param|pdf|rnd|stat)|cordexch|corr|corrcov|coxphfit|createns|crosstab|crossval|cvpartition|datasample|dataset|daugment|dcovary|dendrogram|dfittool|disttool|dummyvar|dwtest|ecdf|ecdfhist|ev(?:cdf|fit|inv|like|pdf|rnd|stat)|ExhaustiveSearcher|exp(?:cdf|fit|inv|like|pdf|rnd|stat)|factoran|fcdf|ff2n|finv|fitdist|fitensemble|fpdf|fracfact|fracfactgen|friedman|frnd|fstat|fsurfht|fullfact|gagerr|gam(?:cdf|fit|inv|like|pdf|rnd|stat)|GeneralizedLinearModel(?:.fit)?|geo(?:cdf|inv|mean|pdf|rnd|stat)|gev(?:cdf|fit|inv|like|pdf|rnd|stat)|gline|glmfit|glmval|glyphplot|gmdistribution(?:.fit)?|gname|gp(?:cdf|fit|inv|like|pdf|rnd|stat)|gplotmatrix|grp2idx|grpstats|gscatter|haltonset|harmmean|hist3|histfit|hmm(?:decode|estimate|generate|train|viterbi)|hougen|hyge(?:cdf|inv|pdf|rnd|stat)|icdf|inconsistent|interactionplot|invpred|iqr|iwishrnd|jackknife|jbtest|johnsrnd|KDTreeSearcher|kmeans|knnsearch|kruskalwallis|ksdensity|kstest|kstest2|kurtosis|lasso|lassoglm|lassoPlot|leverage|lhsdesign|lhsnorm|lillietest|LinearModel(?:.fit)?|linhyptest|linkage|logn(?:cdf|fit|inv|like|pdf|rnd|stat)|lsline|mad|mahal|maineffectsplot|manova1|manovacluster|mdscale|mhsample|mle|mlecov|mnpdf|mnrfit|mnrnd|mnrval|moment|multcompare|multivarichart|mvn(?:cdf|pdf|rnd)|mvregress|mvregresslike|mvt(?:cdf|pdf|rnd)|NaiveBayes(?:.fit)?|nan(?:cov|max|mean|median|min|std|sum|var)|nbin(?:cdf|fit|inv|pdf|rnd|stat)|ncf(?:cdf|inv|pdf|rnd|stat)|nct(?:cdf|inv|pdf|rnd|stat)|ncx2(?:cdf|inv|pdf|rnd|stat)|NeighborSearcher|nlinfit|nlintool|nlmefit|nlmefitsa|nlparci|nlpredci|nnmf|nominal|NonLinearModel(?:.fit)?|norm(?:cdf|fit|inv|like|pdf|rnd|stat)|normplot|normspec|ordinal|outlierMeasure|parallelcoords|paretotails|partialcorr|pcacov|pcares|pdf|pdist|pdist2|pearsrnd|perfcurve|perms|piecewisedistribution|plsregress|poiss(?:cdf|fit|inv|pdf|rnd|tat)|polyconf|polytool|prctile|princomp|ProbDist(?:Kernel|Parametric|UnivKernel|UnivParam)?|probplot|procrustes|qqplot|qrandset|qrandstream|quantile|randg|random|randsample|randtool|range|rangesearch|ranksum|rayl(?:cdf|fit|inv|pdf|rnd|stat)|rcoplot|refcurve|refline|regress|Regression(?:BaggedEnsemble|Ensemble|PartitionedEnsemble|PartitionedModel|Tree(?:.(?:fit|template))?)|regstats|relieff|ridge|robustdemo|robustfit|rotatefactors|rowexch|rsmdemo|rstool|runstest|sampsizepwr|scatterhist|sequentialfs|signrank|signtest|silhouette|skewness|slicesample|sobolset|squareform|statget|statset|stepwise|stepwisefit|surfht|tabulate|tblread|tblwrite|tcdf|tdfread|tiedrank|tinv|tpdf|TreeBagger|treedisp|treefit|treeprune|treetest|treeval|trimmean|trnd|tstat|ttest|ttest2|unid(?:cdf|inv|pdf|rnd|stat)|unif(?:cdf|inv|it|pdf|rnd|stat)|vartest(?:2|n)?|wbl(?:cdf|fit|inv|like|pdf|rnd|stat)|wblplot|wishrnd|x2fx|xptread|zscore|ztest)\b/,
5
+ a],["fun_tbx",/^\b(?:adapthisteq|analyze75info|analyze75read|applycform|applylut|axes2pix|bestblk|blockproc|bwarea|bwareaopen|bwboundaries|bwconncomp|bwconvhull|bwdist|bwdistgeodesic|bweuler|bwhitmiss|bwlabel|bwlabeln|bwmorph|bwpack|bwperim|bwselect|bwtraceboundary|bwulterode|bwunpack|checkerboard|col2im|colfilt|conndef|convmtx2|corner|cornermetric|corr2|cp2tform|cpcorr|cpselect|cpstruct2pairs|dct2|dctmtx|deconvblind|deconvlucy|deconvreg|deconvwnr|decorrstretch|demosaic|dicom(?:anon|dict|info|lookup|read|uid|write)|edge|edgetaper|entropy|entropyfilt|fan2para|fanbeam|findbounds|fliptform|freqz2|fsamp2|fspecial|ftrans2|fwind1|fwind2|getheight|getimage|getimagemodel|getline|getneighbors|getnhood|getpts|getrangefromclass|getrect|getsequence|gray2ind|graycomatrix|graycoprops|graydist|grayslice|graythresh|hdrread|hdrwrite|histeq|hough|houghlines|houghpeaks|iccfind|iccread|iccroot|iccwrite|idct2|ifanbeam|im2bw|im2col|im2double|im2int16|im2java2d|im2single|im2uint16|im2uint8|imabsdiff|imadd|imadjust|ImageAdapter|imageinfo|imagemodel|imapplymatrix|imattributes|imbothat|imclearborder|imclose|imcolormaptool|imcomplement|imcontour|imcontrast|imcrop|imdilate|imdisplayrange|imdistline|imdivide|imellipse|imerode|imextendedmax|imextendedmin|imfill|imfilter|imfindcircles|imfreehand|imfuse|imgca|imgcf|imgetfile|imhandles|imhist|imhmax|imhmin|imimposemin|imlincomb|imline|immagbox|immovie|immultiply|imnoise|imopen|imoverview|imoverviewpanel|impixel|impixelinfo|impixelinfoval|impixelregion|impixelregionpanel|implay|impoint|impoly|impositionrect|improfile|imputfile|impyramid|imreconstruct|imrect|imregconfig|imregionalmax|imregionalmin|imregister|imresize|imroi|imrotate|imsave|imscrollpanel|imshow|imshowpair|imsubtract|imtool|imtophat|imtransform|imview|ind2gray|ind2rgb|interfileinfo|interfileread|intlut|ippl|iptaddcallback|iptcheckconn|iptcheckhandle|iptcheckinput|iptcheckmap|iptchecknargin|iptcheckstrs|iptdemos|iptgetapi|iptGetPointerBehavior|iptgetpref|ipticondir|iptnum2ordinal|iptPointerManager|iptprefs|iptremovecallback|iptSetPointerBehavior|iptsetpref|iptwindowalign|iradon|isbw|isflat|isgray|isicc|isind|isnitf|isrgb|isrset|lab2double|lab2uint16|lab2uint8|label2rgb|labelmatrix|makecform|makeConstrainToRectFcn|makehdr|makelut|makeresampler|maketform|mat2gray|mean2|medfilt2|montage|nitfinfo|nitfread|nlfilter|normxcorr2|ntsc2rgb|openrset|ordfilt2|otf2psf|padarray|para2fan|phantom|poly2mask|psf2otf|qtdecomp|qtgetblk|qtsetblk|radon|rangefilt|reflect|regionprops|registration.metric.(?:MattesMutualInformation|MeanSquares)|registration.optimizer.(?:OnePlusOneEvolutionary|RegularStepGradientDescent)|rgb2gray|rgb2ntsc|rgb2ycbcr|roicolor|roifill|roifilt2|roipoly|rsetwrite|std2|stdfilt|strel|stretchlim|subimage|tformarray|tformfwd|tforminv|tonemap|translate|truesize|uintlut|viscircles|warp|watershed|whitepoint|wiener2|xyz2double|xyz2uint16|ycbcr2rgb)\b/,
6
+ a],["fun_tbx",/^\b(?:bintprog|color|fgoalattain|fminbnd|fmincon|fminimax|fminsearch|fminunc|fseminf|fsolve|fzero|fzmult|gangstr|ktrlink|linprog|lsqcurvefit|lsqlin|lsqnonlin|lsqnonneg|optimget|optimset|optimtool|quadprog)\b/,a],["ident",/^[A-Za-z]\w*(?:\.[A-Za-z]\w*)*/,a]]),["matlab-identifiers"]);b.registerLangHandler(b.createSimpleLexer([],e),["matlab-operators"]);b.registerLangHandler(b.createSimpleLexer(c,d),["matlab"]);
libs/google-code-prettify/lang-ml.js CHANGED
@@ -1,2 +1,2 @@
1
- PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xa0]+/,null,"\t\n\r �\xa0"],["com",/^#(?:if[\t\n\r \xa0]+(?:[$_a-z][\w']*|``[^\t\n\r`]*(?:``|$))|else|endif|light)/i,null,"#"],["str",/^(?:"(?:[^"\\]|\\[\S\s])*(?:"|$)|'(?:[^'\\]|\\[\S\s])(?:'|$))/,null,"\"'"]],[["com",/^(?:\/\/[^\n\r]*|\(\*[\S\s]*?\*\))/],["kwd",/^(?:abstract|and|as|assert|begin|class|default|delegate|do|done|downcast|downto|elif|else|end|exception|extern|false|finally|for|fun|function|if|in|inherit|inline|interface|internal|lazy|let|match|member|module|mutable|namespace|new|null|of|open|or|override|private|public|rec|return|static|struct|then|to|true|try|type|upcast|use|val|void|when|while|with|yield|asr|land|lor|lsl|lsr|lxor|mod|sig|atomic|break|checked|component|const|constraint|constructor|continue|eager|event|external|fixed|functor|global|include|method|mixin|object|parallel|process|protected|pure|sealed|trait|virtual|volatile)\b/],
2
  ["lit",/^[+-]?(?:0x[\da-f]+|(?:\.\d+|\d+(?:\.\d*)?)(?:e[+-]?\d+)?)/i],["pln",/^(?:[_a-z][\w']*[!#?]?|``[^\t\n\r`]*(?:``|$))/i],["pun",/^[^\w\t\n\r "'\xa0]+/]]),["fs","ml"]);
1
+ PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xa0]+/,null,"\t\n\r \u00a0"],["com",/^#(?:if[\t\n\r \xa0]+(?:[$_a-z][\w']*|``[^\t\n\r`]*(?:``|$))|else|endif|light)/i,null,"#"],["str",/^(?:"(?:[^"\\]|\\[\S\s])*(?:"|$)|'(?:[^'\\]|\\[\S\s])(?:'|$))/,null,"\"'"]],[["com",/^(?:\/\/[^\n\r]*|\(\*[\S\s]*?\*\))/],["kwd",/^(?:abstract|and|as|assert|begin|class|default|delegate|do|done|downcast|downto|elif|else|end|exception|extern|false|finally|for|fun|function|if|in|inherit|inline|interface|internal|lazy|let|match|member|module|mutable|namespace|new|null|of|open|or|override|private|public|rec|return|static|struct|then|to|true|try|type|upcast|use|val|void|when|while|with|yield|asr|land|lor|lsl|lsr|lxor|mod|sig|atomic|break|checked|component|const|constraint|constructor|continue|eager|event|external|fixed|functor|global|include|method|mixin|object|parallel|process|protected|pure|sealed|trait|virtual|volatile)\b/],
2
  ["lit",/^[+-]?(?:0x[\da-f]+|(?:\.\d+|\d+(?:\.\d*)?)(?:e[+-]?\d+)?)/i],["pln",/^(?:[_a-z][\w']*[!#?]?|``[^\t\n\r`]*(?:``|$))/i],["pun",/^[^\w\t\n\r "'\xa0]+/]]),["fs","ml"]);
libs/google-code-prettify/lang-mumps.js ADDED
@@ -0,0 +1,2 @@
 
 
1
+ PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xa0]+/,null,"\t\n\r \u00a0"],["str",/^"(?:[^"]|\\.)*"/,null,'"']],[["com",/^;[^\n\r]*/,null,";"],["dec",/^\$(?:d|device|ec|ecode|es|estack|et|etrap|h|horolog|i|io|j|job|k|key|p|principal|q|quit|st|stack|s|storage|sy|system|t|test|tl|tlevel|tr|trestart|x|y|z[a-z]*|a|ascii|c|char|d|data|e|extract|f|find|fn|fnumber|g|get|j|justify|l|length|na|name|o|order|p|piece|ql|qlength|qs|qsubscript|q|query|r|random|re|reverse|s|select|st|stack|t|text|tr|translate|nan)\b/i,
2
+ null],["kwd",/^(?:[^$]b|break|c|close|d|do|e|else|f|for|g|goto|h|halt|h|hang|i|if|j|job|k|kill|l|lock|m|merge|n|new|o|open|q|quit|r|read|s|set|tc|tcommit|tre|trestart|tro|trollback|ts|tstart|u|use|v|view|w|write|x|xecute)\b/i,null],["lit",/^[+-]?(?:\.\d+|\d+(?:\.\d*)?)(?:e[+-]?\d+)?/i],["pln",/^[a-z][^\W_]*/i],["pun",/^[^\w\t\n\r"$%;^\xa0]|_/]]),["mumps"]);
libs/google-code-prettify/lang-n.js CHANGED
@@ -1,4 +1,4 @@
1
  var a=null;
2
- PR.registerLangHandler(PR.createSimpleLexer([["str",/^(?:'(?:[^\n\r'\\]|\\.)*'|"(?:[^\n\r"\\]|\\.)*(?:"|$))/,a,'"'],["com",/^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\n\r]*)/,a,"#"],["pln",/^\s+/,a," \r\n\t\xa0"]],[["str",/^@"(?:[^"]|"")*(?:"|$)/,a],["str",/^<#[^#>]*(?:#>|$)/,a],["str",/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,a],["com",/^\/\/[^\n\r]*/,a],["com",/^\/\*[\S\s]*?(?:\*\/|$)/,
3
  a],["kwd",/^(?:abstract|and|as|base|catch|class|def|delegate|enum|event|extern|false|finally|fun|implements|interface|internal|is|macro|match|matches|module|mutable|namespace|new|null|out|override|params|partial|private|protected|public|ref|sealed|static|struct|syntax|this|throw|true|try|type|typeof|using|variant|virtual|volatile|when|where|with|assert|assert2|async|break|checked|continue|do|else|ensures|for|foreach|if|late|lock|new|nolate|otherwise|regexp|repeat|requires|return|surroundwith|unchecked|unless|using|while|yield)\b/,
4
  a],["typ",/^(?:array|bool|byte|char|decimal|double|float|int|list|long|object|sbyte|short|string|ulong|uint|ufloat|ulong|ushort|void)\b/,a],["lit",/^@[$_a-z][\w$@]*/i,a],["typ",/^@[A-Z]+[a-z][\w$@]*/,a],["pln",/^'?[$_a-z][\w$@]*/i,a],["lit",/^(?:0x[\da-f]+|(?:\d(?:_\d+)*\d*(?:\.\d*)?|\.\d\+)(?:e[+-]?\d+)?)[a-z]*/i,a,"0123456789"],["pun",/^.[^\s\w"-$'./@`]*/,a]]),["n","nemerle"]);
1
  var a=null;
2
+ PR.registerLangHandler(PR.createSimpleLexer([["str",/^(?:'(?:[^\n\r'\\]|\\.)*'|"(?:[^\n\r"\\]|\\.)*(?:"|$))/,a,'"'],["com",/^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\n\r]*)/,a,"#"],["pln",/^\s+/,a," \r\n\t\u00a0"]],[["str",/^@"(?:[^"]|"")*(?:"|$)/,a],["str",/^<#[^#>]*(?:#>|$)/,a],["str",/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,a],["com",/^\/\/[^\n\r]*/,a],["com",/^\/\*[\S\s]*?(?:\*\/|$)/,
3
  a],["kwd",/^(?:abstract|and|as|base|catch|class|def|delegate|enum|event|extern|false|finally|fun|implements|interface|internal|is|macro|match|matches|module|mutable|namespace|new|null|out|override|params|partial|private|protected|public|ref|sealed|static|struct|syntax|this|throw|true|try|type|typeof|using|variant|virtual|volatile|when|where|with|assert|assert2|async|break|checked|continue|do|else|ensures|for|foreach|if|late|lock|new|nolate|otherwise|regexp|repeat|requires|return|surroundwith|unchecked|unless|using|while|yield)\b/,
4
  a],["typ",/^(?:array|bool|byte|char|decimal|double|float|int|list|long|object|sbyte|short|string|ulong|uint|ufloat|ulong|ushort|void)\b/,a],["lit",/^@[$_a-z][\w$@]*/i,a],["typ",/^@[A-Z]+[a-z][\w$@]*/,a],["pln",/^'?[$_a-z][\w$@]*/i,a],["lit",/^(?:0x[\da-f]+|(?:\d(?:_\d+)*\d*(?:\.\d*)?|\.\d\+)(?:e[+-]?\d+)?)[a-z]*/i,a,"0123456789"],["pun",/^.[^\s\w"-$'./@`]*/,a]]),["n","nemerle"]);
libs/google-code-prettify/lang-pascal.js ADDED
@@ -0,0 +1,3 @@
 
 
 
1
+ var a=null;
2
+ PR.registerLangHandler(PR.createSimpleLexer([["str",/^'(?:[^\n\r'\\]|\\.)*(?:'|$)/,a,"'"],["pln",/^\s+/,a," \r\n\t\u00a0"]],[["com",/^\(\*[\S\s]*?(?:\*\)|$)|^{[\S\s]*?(?:}|$)/,a],["kwd",/^(?:absolute|and|array|asm|assembler|begin|case|const|constructor|destructor|div|do|downto|else|end|external|for|forward|function|goto|if|implementation|in|inline|interface|interrupt|label|mod|not|object|of|or|packed|procedure|program|record|repeat|set|shl|shr|then|to|type|unit|until|uses|var|virtual|while|with|xor)\b/i,a],
3
+ ["lit",/^(?:true|false|self|nil)/i,a],["pln",/^[a-z][^\W_]*/i,a],["lit",/^(?:\$[\da-f]+|(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?)/i,a,"0123456789"],["pun",/^.[^\s\w$'./@]*/,a]]),["pascal"]);
libs/google-code-prettify/lang-r.js ADDED
@@ -0,0 +1,2 @@
 
 
1
+ PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xa0]+/,null,"\t\n\r \u00a0"],["str",/^"(?:[^"\\]|\\[\S\s])*(?:"|$)/,null,'"'],["str",/^'(?:[^'\\]|\\[\S\s])*(?:'|$)/,null,"'"]],[["com",/^#.*/],["kwd",/^(?:if|else|for|while|repeat|in|next|break|return|switch|function)(?![\w.])/],["lit",/^0[Xx][\dA-Fa-f]+([Pp]\d+)?[Li]?/],["lit",/^[+-]?(\d+(\.\d+)?|\.\d+)([Ee][+-]?\d+)?[Li]?/],["lit",/^(?:NULL|NA(?:_(?:integer|real|complex|character)_)?|Inf|TRUE|FALSE|NaN|\.\.(?:\.|\d+))(?![\w.])/],
2
+ ["pun",/^(?:<<?-|->>?|-|==|<=|>=|<|>|&&?|!=|\|\|?|[!*+/^]|%.*?%|[$=@~]|:{1,3}|[(),;?[\]{}])/],["pln",/^(?:[A-Za-z]+[\w.]*|\.[^\W\d][\w.]*)(?![\w.])/],["str",/^`.+`/]]),["r","s","R","S","Splus"]);
libs/google-code-prettify/lang-rd.js ADDED
@@ -0,0 +1 @@
 
1
+ PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xa0]+/,null,"\t\n\r \u00a0"],["com",/^%[^\n\r]*/,null,"%"]],[["lit",/^\\(?:cr|l?dots|R|tab)\b/],["kwd",/^\\[@-Za-z]+/],["kwd",/^#(?:ifn?def|endif)/],["pln",/^\\[{}]/],["pun",/^[()[\]{}]+/]]),["Rd","rd"]);
libs/google-code-prettify/lang-scala.js CHANGED
@@ -1,2 +1,2 @@
1
- PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xa0]+/,null,"\t\n\r �\xa0"],["str",/^"(?:""(?:""?(?!")|[^"\\]|\\.)*"{0,3}|(?:[^\n\r"\\]|\\.)*"?)/,null,'"'],["lit",/^`(?:[^\n\r\\`]|\\.)*`?/,null,"`"],["pun",/^[!#%&(--:-@[-^{-~]+/,null,"!#%&()*+,-:;<=>?@[\\]^{|}~"]],[["str",/^'(?:[^\n\r'\\]|\\(?:'|[^\n\r']+))'/],["lit",/^'[$A-Z_a-z][\w$]*(?![\w$'])/],["kwd",/^(?:abstract|case|catch|class|def|do|else|extends|final|finally|for|forSome|if|implicit|import|lazy|match|new|object|override|package|private|protected|requires|return|sealed|super|throw|trait|try|type|val|var|while|with|yield)\b/],
2
  ["lit",/^(?:true|false|null|this)\b/],["lit",/^(?:0(?:[0-7]+|x[\da-f]+)l?|(?:0|[1-9]\d*)(?:(?:\.\d+)?(?:e[+-]?\d+)?f?|l?)|\\.\d+(?:e[+-]?\d+)?f?)/i],["typ",/^[$_]*[A-Z][\d$A-Z_]*[a-z][\w$]*/],["pln",/^[$A-Z_a-z][\w$]*/],["com",/^\/(?:\/.*|\*(?:\/|\**[^*/])*(?:\*+\/?)?)/],["pun",/^(?:\.+|\/)/]]),["scala"]);
1
+ PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xa0]+/,null,"\t\n\r \u00a0"],["str",/^"(?:""(?:""?(?!")|[^"\\]|\\.)*"{0,3}|(?:[^\n\r"\\]|\\.)*"?)/,null,'"'],["lit",/^`(?:[^\n\r\\`]|\\.)*`?/,null,"`"],["pun",/^[!#%&(--:-@[-^{-~]+/,null,"!#%&()*+,-:;<=>?@[\\]^{|}~"]],[["str",/^'(?:[^\n\r'\\]|\\(?:'|[^\n\r']+))'/],["lit",/^'[$A-Z_a-z][\w$]*(?![\w$'])/],["kwd",/^(?:abstract|case|catch|class|def|do|else|extends|final|finally|for|forSome|if|implicit|import|lazy|match|new|object|override|package|private|protected|requires|return|sealed|super|throw|trait|try|type|val|var|while|with|yield)\b/],
2
  ["lit",/^(?:true|false|null|this)\b/],["lit",/^(?:0(?:[0-7]+|x[\da-f]+)l?|(?:0|[1-9]\d*)(?:(?:\.\d+)?(?:e[+-]?\d+)?f?|l?)|\\.\d+(?:e[+-]?\d+)?f?)/i],["typ",/^[$_]*[A-Z][\d$A-Z_]*[a-z][\w$]*/],["pln",/^[$A-Z_a-z][\w$]*/],["com",/^\/(?:\/.*|\*(?:\/|\**[^*/])*(?:\*+\/?)?)/],["pun",/^(?:\.+|\/)/]]),["scala"]);
libs/google-code-prettify/lang-sql.js CHANGED
@@ -1,2 +1,2 @@
1
- PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xa0]+/,null,"\t\n\r �\xa0"],["str",/^(?:"(?:[^"\\]|\\.)*"|'(?:[^'\\]|\\.)*')/,null,"\"'"]],[["com",/^(?:--[^\n\r]*|\/\*[\S\s]*?(?:\*\/|$))/],["kwd",/^(?:add|all|alter|and|any|as|asc|authorization|backup|begin|between|break|browse|bulk|by|cascade|case|check|checkpoint|close|clustered|coalesce|collate|column|commit|compute|constraint|contains|containstable|continue|convert|create|cross|current|current_date|current_time|current_timestamp|current_user|cursor|database|dbcc|deallocate|declare|default|delete|deny|desc|disk|distinct|distributed|double|drop|dummy|dump|else|end|errlvl|escape|except|exec|execute|exists|exit|fetch|file|fillfactor|for|foreign|freetext|freetexttable|from|full|function|goto|grant|group|having|holdlock|identity|identitycol|identity_insert|if|in|index|inner|insert|intersect|into|is|join|key|kill|left|like|lineno|load|match|merge|national|nocheck|nonclustered|not|null|nullif|of|off|offsets|on|open|opendatasource|openquery|openrowset|openxml|option|or|order|outer|over|percent|plan|precision|primary|print|proc|procedure|public|raiserror|read|readtext|reconfigure|references|replication|restore|restrict|return|revoke|right|rollback|rowcount|rowguidcol|rule|save|schema|select|session_user|set|setuser|shutdown|some|statistics|system_user|table|textsize|then|to|top|tran|transaction|trigger|truncate|tsequal|union|unique|update|updatetext|use|user|using|values|varying|view|waitfor|when|where|while|with|writetext)(?=[^\w-]|$)/i,
2
  null],["lit",/^[+-]?(?:0x[\da-f]+|(?:\.\d+|\d+(?:\.\d*)?)(?:e[+-]?\d+)?)/i],["pln",/^[_a-z][\w-]*/i],["pun",/^[^\w\t\n\r "'\xa0][^\w\t\n\r "'+\xa0-]*/]]),["sql"]);
1
+ PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xa0]+/,null,"\t\n\r \u00a0"],["str",/^(?:"(?:[^"\\]|\\.)*"|'(?:[^'\\]|\\.)*')/,null,"\"'"]],[["com",/^(?:--[^\n\r]*|\/\*[\S\s]*?(?:\*\/|$))/],["kwd",/^(?:add|all|alter|and|any|apply|as|asc|authorization|backup|begin|between|break|browse|bulk|by|cascade|case|check|checkpoint|close|clustered|coalesce|collate|column|commit|compute|connect|constraint|contains|containstable|continue|convert|create|cross|current|current_date|current_time|current_timestamp|current_user|cursor|database|dbcc|deallocate|declare|default|delete|deny|desc|disk|distinct|distributed|double|drop|dummy|dump|else|end|errlvl|escape|except|exec|execute|exists|exit|fetch|file|fillfactor|following|for|foreign|freetext|freetexttable|from|full|function|goto|grant|group|having|holdlock|identity|identitycol|identity_insert|if|in|index|inner|insert|intersect|into|is|join|key|kill|left|like|lineno|load|match|matched|merge|natural|national|nocheck|nonclustered|nocycle|not|null|nullif|of|off|offsets|on|open|opendatasource|openquery|openrowset|openxml|option|or|order|outer|over|partition|percent|pivot|plan|preceding|precision|primary|print|proc|procedure|public|raiserror|read|readtext|reconfigure|references|replication|restore|restrict|return|revoke|right|rollback|rowcount|rowguidcol|rows?|rule|save|schema|select|session_user|set|setuser|shutdown|some|start|statistics|system_user|table|textsize|then|to|top|tran|transaction|trigger|truncate|tsequal|unbounded|union|unique|unpivot|update|updatetext|use|user|using|values|varying|view|waitfor|when|where|while|with|within|writetext|xml)(?=[^\w-]|$)/i,
2
  null],["lit",/^[+-]?(?:0x[\da-f]+|(?:\.\d+|\d+(?:\.\d*)?)(?:e[+-]?\d+)?)/i],["pln",/^[_a-z][\w-]*/i],["pun",/^[^\w\t\n\r "'\xa0][^\w\t\n\r "'+\xa0-]*/]]),["sql"]);
libs/google-code-prettify/lang-tcl.js ADDED
@@ -0,0 +1,3 @@
 
 
 
1
+ var a=null;
2
+ PR.registerLangHandler(PR.createSimpleLexer([["opn",/^{+/,a,"{"],["clo",/^}+/,a,"}"],["com",/^#[^\n\r]*/,a,"#"],["pln",/^[\t\n\r \xa0]+/,a,"\t\n\r \u00a0"],["str",/^"(?:[^"\\]|\\[\S\s])*(?:"|$)/,a,'"']],[["kwd",/^(?:after|append|apply|array|break|case|catch|continue|error|eval|exec|exit|expr|for|foreach|if|incr|info|proc|return|set|switch|trace|uplevel|upvar|while)\b/,a],["lit",/^[+-]?(?:[#0]x[\da-f]+|\d+\/\d+|(?:\.\d+|\d+(?:\.\d*)?)(?:[de][+-]?\d+)?)/i],["lit",
3
+ /^'(?:-*(?:\w|\\[!-~])(?:[\w-]*|\\[!-~])[!=?]?)?/],["pln",/^-*(?:[_a-z]|\\[!-~])(?:[\w-]*|\\[!-~])[!=?]?/i],["pun",/^[^\w\t\n\r "'-);\\\xa0]+/]]),["tcl"]);
libs/google-code-prettify/lang-tex.js CHANGED
@@ -1 +1 @@
1
- PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xa0]+/,null,"\t\n\r �\xa0"],["com",/^%[^\n\r]*/,null,"%"]],[["kwd",/^\\[@-Za-z]+/],["kwd",/^\\./],["typ",/^[$&]/],["lit",/[+-]?(?:\.\d+|\d+(?:\.\d*)?)(cm|em|ex|in|pc|pt|bp|mm)/i],["pun",/^[()=[\]{}]+/]]),["latex","tex"]);
1
+ PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xa0]+/,null,"\t\n\r \u00a0"],["com",/^%[^\n\r]*/,null,"%"]],[["kwd",/^\\[@-Za-z]+/],["kwd",/^\\./],["typ",/^[$&]/],["lit",/[+-]?(?:\.\d+|\d+(?:\.\d*)?)(cm|em|ex|in|pc|pt|bp|mm)/i],["pun",/^[()=[\]{}]+/]]),["latex","tex"]);
libs/google-code-prettify/lang-vb.js CHANGED
@@ -1,2 +1,2 @@
1
- PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xa0\u2028\u2029]+/,null,"\t\n\r �\xa0

"],["str",/^(?:["\u201c\u201d](?:[^"\u201c\u201d]|["\u201c\u201d]{2})(?:["\u201c\u201d]c|$)|["\u201c\u201d](?:[^"\u201c\u201d]|["\u201c\u201d]{2})*(?:["\u201c\u201d]|$))/i,null,'"“”'],["com",/^['\u2018\u2019].*/,null,"'‘’"]],[["kwd",/^(?:addhandler|addressof|alias|and|andalso|ansi|as|assembly|auto|boolean|byref|byte|byval|call|case|catch|cbool|cbyte|cchar|cdate|cdbl|cdec|char|cint|class|clng|cobj|const|cshort|csng|cstr|ctype|date|decimal|declare|default|delegate|dim|directcast|do|double|each|else|elseif|end|endif|enum|erase|error|event|exit|finally|for|friend|function|get|gettype|gosub|goto|handles|if|implements|imports|in|inherits|integer|interface|is|let|lib|like|long|loop|me|mod|module|mustinherit|mustoverride|mybase|myclass|namespace|new|next|not|notinheritable|notoverridable|object|on|option|optional|or|orelse|overloads|overridable|overrides|paramarray|preserve|private|property|protected|public|raiseevent|readonly|redim|removehandler|resume|return|select|set|shadows|shared|short|single|static|step|stop|string|structure|sub|synclock|then|throw|to|try|typeof|unicode|until|variant|wend|when|while|with|withevents|writeonly|xor|endif|gosub|let|variant|wend)\b/i,
2
- null],["com",/^rem.*/i],["lit",/^(?:true\b|false\b|nothing\b|\d+(?:e[+-]?\d+[dfr]?|[dfilrs])?|(?:&h[\da-f]+|&o[0-7]+)[ils]?|\d*\.\d+(?:e[+-]?\d+)?[dfr]?|#\s+(?:\d+[/-]\d+[/-]\d+(?:\s+\d+:\d+(?::\d+)?(\s*(?:am|pm))?)?|\d+:\d+(?::\d+)?(\s*(?:am|pm))?)\s+#)/i],["pln",/^(?:(?:[a-z]|_\w)\w*|\[(?:[a-z]|_\w)\w*])/i],["pun",/^[^\w\t\n\r "'[\]\xa0\u2018\u2019\u201c\u201d\u2028\u2029]+/],["pun",/^(?:\[|])/]]),["vb","vbs"]);
1
+ PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xa0\u2028\u2029]+/,null,"\t\n\r �\xa0

\u00a0\u2028\u2029"],["str",/^(?:["\u201c\u201d](?:[^"\u201c\u201d]|["\u201c\u201d]{2})(?:["\u201c\u201d]c|$)|["\u201c\u201d](?:[^"\u201c\u201d]|["\u201c\u201d]{2})*(?:["\u201c\u201d]|$))/i,null,'"\u201c\u201d'],["com",/^['\u2018\u2019](?:_(?:\r\n?|[^\r]?)|[^\n\r_\u2028\u2029])*/,null,"'\u2018\u2019"]],[["kwd",/^(?:addhandler|addressof|alias|and|andalso|ansi|as|assembly|auto|boolean|byref|byte|byval|call|case|catch|cbool|cbyte|cchar|cdate|cdbl|cdec|char|cint|class|clng|cobj|const|cshort|csng|cstr|ctype|date|decimal|declare|default|delegate|dim|directcast|do|double|each|else|elseif|end|endif|enum|erase|error|event|exit|finally|for|friend|function|get|gettype|gosub|goto|handles|if|implements|imports|in|inherits|integer|interface|is|let|lib|like|long|loop|me|mod|module|mustinherit|mustoverride|mybase|myclass|namespace|new|next|not|notinheritable|notoverridable|object|on|option|optional|or|orelse|overloads|overridable|overrides|paramarray|preserve|private|property|protected|public|raiseevent|readonly|redim|removehandler|resume|return|select|set|shadows|shared|short|single|static|step|stop|string|structure|sub|synclock|then|throw|to|try|typeof|unicode|until|variant|wend|when|while|with|withevents|writeonly|xor|endif|gosub|let|variant|wend)\b/i,
2
+ null],["com",/^rem\b.*/i],["lit",/^(?:true\b|false\b|nothing\b|\d+(?:e[+-]?\d+[dfr]?|[dfilrs])?|(?:&h[\da-f]+|&o[0-7]+)[ils]?|\d*\.\d+(?:e[+-]?\d+)?[dfr]?|#\s+(?:\d+[/-]\d+[/-]\d+(?:\s+\d+:\d+(?::\d+)?(\s*(?:am|pm))?)?|\d+:\d+(?::\d+)?(\s*(?:am|pm))?)\s+#)/i],["pln",/^(?:(?:[a-z]|_\w)\w*(?:\[[!#%&@]+])?|\[(?:[a-z]|_\w)\w*])/i],["pun",/^[^\w\t\n\r "'[\]\xa0\u2018\u2019\u201c\u201d\u2028\u2029]+/],["pun",/^(?:\[|])/]]),["vb","vbs"]);
libs/google-code-prettify/lang-vhdl.js CHANGED
@@ -1,3 +1,3 @@
1
- PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xa0]+/,null,"\t\n\r �\xa0"]],[["str",/^(?:[box]?"(?:[^"]|"")*"|'.')/i],["com",/^--[^\n\r]*/],["kwd",/^(?:abs|access|after|alias|all|and|architecture|array|assert|attribute|begin|block|body|buffer|bus|case|component|configuration|constant|disconnect|downto|else|elsif|end|entity|exit|file|for|function|generate|generic|group|guarded|if|impure|in|inertial|inout|is|label|library|linkage|literal|loop|map|mod|nand|new|next|nor|not|null|of|on|open|or|others|out|package|port|postponed|procedure|process|pure|range|record|register|reject|rem|report|return|rol|ror|select|severity|shared|signal|sla|sll|sra|srl|subtype|then|to|transport|type|unaffected|units|until|use|variable|wait|when|while|with|xnor|xor)(?=[^\w-]|$)/i,
2
  null],["typ",/^(?:bit|bit_vector|character|boolean|integer|real|time|string|severity_level|positive|natural|signed|unsigned|line|text|std_u?logic(?:_vector)?)(?=[^\w-]|$)/i,null],["typ",/^'(?:active|ascending|base|delayed|driving|driving_value|event|high|image|instance_name|last_active|last_event|last_value|left|leftof|length|low|path_name|pos|pred|quiet|range|reverse_range|right|rightof|simple_name|stable|succ|transaction|val|value)(?=[^\w-]|$)/i,null],["lit",/^\d+(?:_\d+)*(?:#[\w.\\]+#(?:[+-]?\d+(?:_\d+)*)?|(?:\.\d+(?:_\d+)*)?(?:e[+-]?\d+(?:_\d+)*)?)/i],
3
  ["pln",/^(?:[a-z]\w*|\\[^\\]*\\)/i],["pun",/^[^\w\t\n\r "'\xa0][^\w\t\n\r "'\xa0-]*/]]),["vhdl","vhd"]);
1
+ PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xa0]+/,null,"\t\n\r \u00a0"]],[["str",/^(?:[box]?"(?:[^"]|"")*"|'.')/i],["com",/^--[^\n\r]*/],["kwd",/^(?:abs|access|after|alias|all|and|architecture|array|assert|attribute|begin|block|body|buffer|bus|case|component|configuration|constant|disconnect|downto|else|elsif|end|entity|exit|file|for|function|generate|generic|group|guarded|if|impure|in|inertial|inout|is|label|library|linkage|literal|loop|map|mod|nand|new|next|nor|not|null|of|on|open|or|others|out|package|port|postponed|procedure|process|pure|range|record|register|reject|rem|report|return|rol|ror|select|severity|shared|signal|sla|sll|sra|srl|subtype|then|to|transport|type|unaffected|units|until|use|variable|wait|when|while|with|xnor|xor)(?=[^\w-]|$)/i,
2
  null],["typ",/^(?:bit|bit_vector|character|boolean|integer|real|time|string|severity_level|positive|natural|signed|unsigned|line|text|std_u?logic(?:_vector)?)(?=[^\w-]|$)/i,null],["typ",/^'(?:active|ascending|base|delayed|driving|driving_value|event|high|image|instance_name|last_active|last_event|last_value|left|leftof|length|low|path_name|pos|pred|quiet|range|reverse_range|right|rightof|simple_name|stable|succ|transaction|val|value)(?=[^\w-]|$)/i,null],["lit",/^\d+(?:_\d+)*(?:#[\w.\\]+#(?:[+-]?\d+(?:_\d+)*)?|(?:\.\d+(?:_\d+)*)?(?:e[+-]?\d+(?:_\d+)*)?)/i],
3
  ["pln",/^(?:[a-z]\w*|\\[^\\]*\\)/i],["pun",/^[^\w\t\n\r "'\xa0][^\w\t\n\r "'\xa0-]*/]]),["vhdl","vhd"]);
libs/google-code-prettify/lang-wiki.js CHANGED
@@ -1,2 +1,2 @@
1
- PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\d\t a-gi-z\xa0]+/,null,"\t �\xa0abcdefgijklmnopqrstuvwxyz0123456789"],["pun",/^[*=[\]^~]+/,null,"=*~^[]"]],[["lang-wiki.meta",/(?:^^|\r\n?|\n)(#[a-z]+)\b/],["lit",/^[A-Z][a-z][\da-z]+[A-Z][a-z][^\W_]+\b/],["lang-",/^{{{([\S\s]+?)}}}/],["lang-",/^`([^\n\r`]+)`/],["str",/^https?:\/\/[^\s#/?]*(?:\/[^\s#?]*)?(?:\?[^\s#]*)?(?:#\S*)?/i],["pln",/^(?:\r\n|[\S\s])[^\n\r#*=A-[^`h{~]*/]]),["wiki"]);
2
  PR.registerLangHandler(PR.createSimpleLexer([["kwd",/^#[a-z]+/i,null,"#"]],[]),["wiki.meta"]);
1
+ PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\d\t a-gi-z\xa0]+/,null,"\t \u00a0abcdefgijklmnopqrstuvwxyz0123456789"],["pun",/^[*=[\]^~]+/,null,"=*~^[]"]],[["lang-wiki.meta",/(?:^^|\r\n?|\n)(#[a-z]+)\b/],["lit",/^[A-Z][a-z][\da-z]+[A-Z][a-z][^\W_]+\b/],["lang-",/^{{{([\S\s]+?)}}}/],["lang-",/^`([^\n\r`]+)`/],["str",/^https?:\/\/[^\s#/?]*(?:\/[^\s#?]*)?(?:\?[^\s#]*)?(?:#\S*)?/i],["pln",/^(?:\r\n|[\S\s])[^\n\r#*=A-[^`h{~]*/]]),["wiki"]);
2
  PR.registerLangHandler(PR.createSimpleLexer([["kwd",/^#[a-z]+/i,null,"#"]],[]),["wiki.meta"]);
libs/google-code-prettify/prettify.css CHANGED
@@ -1,31 +1 @@
1
- .com { color: #93a1a1; }
2
- .lit { color: #195f91; }
3
- .pun, .opn, .clo { color: #93a1a1; }
4
- .fun { color: #dc322f; }
5
- .str, .atv { color: #D14; }
6
- .kwd, .linenums .tag { color: #1e347b; }
7
- .typ, .atn, .dec, .var { color: teal; }
8
- .pln { color: #48484c; }
9
-
10
- .prettyprint {
11
- padding: 8px;
12
- background-color: #f7f7f9;
13
- border: 1px solid #e1e1e8;
14
- }
15
- .prettyprint.linenums {
16
- -webkit-box-shadow: inset 40px 0 0 #fbfbfc, inset 41px 0 0 #ececf0;
17
- -moz-box-shadow: inset 40px 0 0 #fbfbfc, inset 41px 0 0 #ececf0;
18
- box-shadow: inset 40px 0 0 #fbfbfc, inset 41px 0 0 #ececf0;
19
- }
20
-
21
- /* Specify class=linenums on a pre to get line numbering */
22
- ol.linenums {
23
- margin: 0 0 0 33px; /* IE indents via margin-left */
24
- padding-left: 0;
25
- }
26
- ol.linenums li {
27
- padding-left: 12px;
28
- color: #bebec5;
29
- line-height: 18px;
30
- text-shadow: 0 1px 0 #fff;
31
- }
1
+ .pln{color:#000}@media screen{.str{color:#080}.kwd{color:#008}.com{color:#800}.typ{color:#606}.lit{color:#066}.pun,.opn,.clo{color:#660}.tag{color:#008}.atn{color:#606}.atv{color:#080}.dec,.var{color:#606}.fun{color:red}}@media print,projection{.str{color:#060}.kwd{color:#006;font-weight:bold}.com{color:#600;font-style:italic}.typ{color:#404;font-weight:bold}.lit{color:#044}.pun,.opn,.clo{color:#440}.tag{color:#006;font-weight:bold}.atn{color:#404}.atv{color:#060}}pre.prettyprint{padding:2px;border:1px solid #888}ol.linenums{margin-top:0;margin-bottom:0}li.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8{list-style-type:none}li.L1,li.L3,li.L5,li.L7,li.L9{background:#eee}
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
libs/google-code-prettify/prettify.js CHANGED
@@ -53,7 +53,10 @@
53
  */
54
 
55
  // JSLint declarations
56
- /*global console, document, navigator, setTimeout, window */
 
 
 
57
 
58
  /**
59
  * Split {@code prettyPrint} into multiple timeouts so as not to interfere with
@@ -62,33 +65,57 @@
62
  */
63
  window['PR_SHOULD_USE_CONTINUATION'] = true;
64
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
65
  (function () {
 
66
  // Keyword lists for various languages.
67
  // We use things that coerce to strings to make them compact when minified
68
  // and to defeat aggressive optimizers that fold large string constants.
69
  var FLOW_CONTROL_KEYWORDS = ["break,continue,do,else,for,if,return,while"];
70
- var C_KEYWORDS = [FLOW_CONTROL_KEYWORDS,"auto,case,char,const,default," +
71
- "double,enum,extern,float,goto,int,long,register,short,signed,sizeof," +
72
- "static,struct,switch,typedef,union,unsigned,void,volatile"];
73
  var COMMON_KEYWORDS = [C_KEYWORDS,"catch,class,delete,false,import," +
74
  "new,operator,private,protected,public,this,throw,true,try,typeof"];
75
  var CPP_KEYWORDS = [COMMON_KEYWORDS,"alignof,align_union,asm,axiom,bool," +
76
- "concept,concept_map,const_cast,constexpr,decltype," +
77
- "dynamic_cast,explicit,export,friend,inline,late_check," +
78
- "mutable,namespace,nullptr,reinterpret_cast,static_assert,static_cast," +
79
- "template,typeid,typename,using,virtual,where"];
80
  var JAVA_KEYWORDS = [COMMON_KEYWORDS,
81
- "abstract,boolean,byte,extends,final,finally,implements,import," +
82
- "instanceof,null,native,package,strictfp,super,synchronized,throws," +
83
- "transient"];
84
  var CSHARP_KEYWORDS = [JAVA_KEYWORDS,
85
  "as,base,by,checked,decimal,delegate,descending,dynamic,event," +
86
- "fixed,foreach,from,group,implicit,in,interface,internal,into,is,lock," +
87
- "object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed," +
88
- "stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var"];
 
89
  var COFFEE_KEYWORDS = "all,and,by,catch,class,else,extends,false,finally," +
90
  "for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then," +
91
- "true,try,unless,until,when,while,yes";
92
  var JSCRIPT_KEYWORDS = [COMMON_KEYWORDS,
93
  "debugger,eval,export,function,get,null,set,undefined,var,with," +
94
  "Infinity,NaN"];
@@ -103,12 +130,15 @@ window['PR_SHOULD_USE_CONTINUATION'] = true;
103
  "def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo," +
104
  "rescue,retry,self,super,then,true,undef,unless,until,when,yield," +
105
  "BEGIN,END"];
 
 
 
106
  var SH_KEYWORDS = [FLOW_CONTROL_KEYWORDS, "case,done,elif,esac,eval,fi," +
107
  "function,in,local,set,then,until"];
108
  var ALL_KEYWORDS = [
109
- CPP_KEYWORDS, CSHARP_KEYWORDS, JSCRIPT_KEYWORDS, PERL_KEYWORDS +
110
  PYTHON_KEYWORDS, RUBY_KEYWORDS, SH_KEYWORDS];
111
- var C_TYPES = /^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)/;
112
 
113
  // token style names. correspond to css classes
114
  /**
@@ -142,7 +172,7 @@ window['PR_SHOULD_USE_CONTINUATION'] = true;
142
  */
143
  var PR_PUNCTUATION = 'pun';
144
  /**
145
- * token style for a punctuation string.
146
  * @const
147
  */
148
  var PR_PLAIN = 'pln';
@@ -180,35 +210,34 @@ window['PR_SHOULD_USE_CONTINUATION'] = true;
180
  */
181
  var PR_NOCODE = 'nocode';
182
 
183
-
184
-
185
- /**
186
- * A set of tokens that can precede a regular expression literal in
187
- * javascript
188
- * http://web.archive.org/web/20070717142515/http://www.mozilla.org/js/language/js20/rationale/syntax.html
189
- * has the full list, but I've removed ones that might be problematic when
190
- * seen in languages that don't support regular expression literals.
191
- *
192
- * <p>Specifically, I've removed any keywords that can't precede a regexp
193
- * literal in a syntactically legal javascript program, and I've removed the
194
- * "in" keyword since it's not a keyword in many languages, and might be used
195
- * as a count of inches.
196
- *
197
- * <p>The link a above does not accurately describe EcmaScript rules since
198
- * it fails to distinguish between (a=++/b/i) and (a++/b/i) but it works
199
- * very well in practice.
200
- *
201
- * @private
202
- * @const
203
- */
204
- var REGEXP_PRECEDER_PATTERN = '(?:^^\\.?|[+-]|\\!|\\!=|\\!==|\\#|\\%|\\%=|&|&&|&&=|&=|\\(|\\*|\\*=|\\+=|\\,|\\-=|\\->|\\/|\\/=|:|::|\\;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|\\?|\\@|\\[|\\^|\\^=|\\^\\^|\\^\\^=|\\{|\\||\\|=|\\|\\||\\|\\|=|\\~|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\\s*';
205
-
206
- // CAVEAT: this does not properly handle the case where a regular
207
- // expression immediately follows another since a regular expression may
208
- // have flags for case-sensitivity and the like. Having regexp tokens
209
- // adjacent is not valid in any language I'm aware of, so I'm punting.
210
- // TODO: maybe style special characters inside a regexp as punctuation.
211
-
212
 
213
  /**
214
  * Given a group of {@link RegExp}s, returns a {@code RegExp} that globally
@@ -220,7 +249,7 @@ var REGEXP_PRECEDER_PATTERN = '(?:^^\\.?|[+-]|\\!|\\!=|\\!==|\\#|\\%|\\%=|&|&&|&
220
  */
221
  function combinePrefixPatterns(regexs) {
222
  var capturedGroupIndex = 0;
223
-
224
  var needToFoldCase = false;
225
  var ignoreCase = false;
226
  for (var i = 0, n = regexs.length; i < n; ++i) {
@@ -234,7 +263,7 @@ var REGEXP_PRECEDER_PATTERN = '(?:^^\\.?|[+-]|\\!|\\!=|\\!==|\\#|\\%|\\%=|&|&&|&
234
  break;
235
  }
236
  }
237
-
238
  var escapeCharToCodeUnit = {
239
  'b': 8,
240
  't': 9,
@@ -243,7 +272,7 @@ var REGEXP_PRECEDER_PATTERN = '(?:^^\\.?|[+-]|\\!|\\!=|\\!==|\\#|\\%|\\%=|&|&&|&
243
  'f': 0xc,
244
  'r': 0xd
245
  };
246
-
247
  function decodeEscape(charsetPart) {
248
  var cc0 = charsetPart.charCodeAt(0);
249
  if (cc0 !== 92 /* \\ */) {
@@ -261,18 +290,16 @@ var REGEXP_PRECEDER_PATTERN = '(?:^^\\.?|[+-]|\\!|\\!=|\\!==|\\#|\\%|\\%=|&|&&|&
261
  return charsetPart.charCodeAt(1);
262
  }
263
  }
264
-
265
  function encodeEscape(charCode) {
266
  if (charCode < 0x20) {
267
  return (charCode < 0x10 ? '\\x0' : '\\x') + charCode.toString(16);
268
  }
269
  var ch = String.fromCharCode(charCode);
270
- if (ch === '\\' || ch === '-' || ch === '[' || ch === ']') {
271
- ch = '\\' + ch;
272
- }
273
- return ch;
274
  }
275
-
276
  function caseFoldCharset(charSet) {
277
  var charsetParts = charSet.substring(1, charSet.length - 1).match(
278
  new RegExp(
@@ -284,13 +311,16 @@ var REGEXP_PRECEDER_PATTERN = '(?:^^\\.?|[+-]|\\!|\\!=|\\!==|\\#|\\%|\\%=|&|&&|&
284
  + '|-'
285
  + '|[^-\\\\]',
286
  'g'));
287
- var groups = [];
288
  var ranges = [];
289
  var inverse = charsetParts[0] === '^';
 
 
 
 
290
  for (var i = inverse ? 1 : 0, n = charsetParts.length; i < n; ++i) {
291
  var p = charsetParts[i];
292
  if (/\\[bdsw]/i.test(p)) { // Don't muck with named groups.
293
- groups.push(p);
294
  } else {
295
  var start = decodeEscape(p);
296
  var end;
@@ -315,12 +345,12 @@ var REGEXP_PRECEDER_PATTERN = '(?:^^\\.?|[+-]|\\!|\\!=|\\!==|\\#|\\%|\\%=|&|&&|&
315
  }
316
  }
317
  }
318
-
319
  // [[1, 10], [3, 4], [8, 12], [14, 14], [16, 16], [17, 17]]
320
  // -> [[1, 12], [14, 14], [16, 17]]
321
  ranges.sort(function (a, b) { return (a[0] - b[0]) || (b[1] - a[1]); });
322
  var consolidatedRanges = [];
323
- var lastRange = [NaN, NaN];
324
  for (var i = 0; i < ranges.length; ++i) {
325
  var range = ranges[i];
326
  if (range[0] <= lastRange[1] + 1) {
@@ -329,10 +359,7 @@ var REGEXP_PRECEDER_PATTERN = '(?:^^\\.?|[+-]|\\!|\\!=|\\!==|\\#|\\%|\\%=|&|&&|&
329
  consolidatedRanges.push(lastRange = range);
330
  }
331
  }
332
-
333
- var out = ['['];
334
- if (inverse) { out.push('^'); }
335
- out.push.apply(out, groups);
336
  for (var i = 0; i < consolidatedRanges.length; ++i) {
337
  var range = consolidatedRanges[i];
338
  out.push(encodeEscape(range[0]));
@@ -344,7 +371,7 @@ var REGEXP_PRECEDER_PATTERN = '(?:^^\\.?|[+-]|\\!|\\!=|\\!==|\\#|\\%|\\%=|&|&&|&
344
  out.push(']');
345
  return out.join('');
346
  }
347
-
348
  function allowAnywhereFoldCaseAndRenumberGroups(regex) {
349
  // Split into character sets, escape sequences, punctuation strings
350
  // like ('(', '(?:', ')', '^'), and runs of characters that do not
@@ -358,17 +385,17 @@ var REGEXP_PRECEDER_PATTERN = '(?:^^\\.?|[+-]|\\!|\\!=|\\!==|\\#|\\%|\\%=|&|&&|&
358
  + '|\\\\[0-9]+' // a back-reference or octal escape
359
  + '|\\\\[^ux0-9]' // other escape sequence
360
  + '|\\(\\?[:!=]' // start of a non-capturing group
361
- + '|[\\(\\)\\^]' // start/emd of a group, or line start
362
  + '|[^\\x5B\\x5C\\(\\)\\^]+' // run of other characters
363
  + ')',
364
  'g'));
365
  var n = parts.length;
366
-
367
  // Maps captured group numbers to the number they will occupy in
368
  // the output or to -1 if that has not been determined, or to
369
  // undefined if they need not be capturing in the output.
370
  var capturedGroups = [];
371
-
372
  // Walk over and identify back references to build the capturedGroups
373
  // mapping.
374
  for (var i = 0, groupIndex = 0; i < n; ++i) {
@@ -378,12 +405,19 @@ var REGEXP_PRECEDER_PATTERN = '(?:^^\\.?|[+-]|\\!|\\!=|\\!==|\\#|\\%|\\%=|&|&&|&
378
  ++groupIndex;
379
  } else if ('\\' === p.charAt(0)) {
380
  var decimalValue = +p.substring(1);
381
- if (decimalValue && decimalValue <= groupIndex) {
382
- capturedGroups[decimalValue] = -1;
 
 
 
 
 
 
 
383
  }
384
  }
385
  }
386
-
387
  // Renumber groups and reduce capturing groups to non-capturing groups
388
  // where possible.
389
  for (var i = 1; i < capturedGroups.length; ++i) {
@@ -395,23 +429,23 @@ var REGEXP_PRECEDER_PATTERN = '(?:^^\\.?|[+-]|\\!|\\!=|\\!==|\\#|\\%|\\%=|&|&&|&
395
  var p = parts[i];
396
  if (p === '(') {
397
  ++groupIndex;
398
- if (capturedGroups[groupIndex] === undefined) {
399
  parts[i] = '(?:';
400
  }
401
  } else if ('\\' === p.charAt(0)) {
402
  var decimalValue = +p.substring(1);
403
  if (decimalValue && decimalValue <= groupIndex) {
404
- parts[i] = '\\' + capturedGroups[groupIndex];
405
  }
406
  }
407
  }
408
-
409
  // Remove any prefix anchors so that the output will match anywhere.
410
  // ^^ really does mean an anchored match though.
411
- for (var i = 0, groupIndex = 0; i < n; ++i) {
412
  if ('^' === parts[i] && '^' !== parts[i + 1]) { parts[i] = ''; }
413
  }
414
-
415
  // Expand letters to groups to handle mixing of case-sensitive and
416
  // case-insensitive patterns if necessary.
417
  if (regex.ignoreCase && needToFoldCase) {
@@ -431,10 +465,10 @@ var REGEXP_PRECEDER_PATTERN = '(?:^^\\.?|[+-]|\\!|\\!=|\\!==|\\#|\\%|\\%=|&|&&|&
431
  }
432
  }
433
  }
434
-
435
  return parts.join('');
436
  }
437
-
438
  var rewritten = [];
439
  for (var i = 0, n = regexs.length; i < n; ++i) {
440
  var regex = regexs[i];
@@ -442,11 +476,10 @@ var REGEXP_PRECEDER_PATTERN = '(?:^^\\.?|[+-]|\\!|\\!=|\\!==|\\#|\\%|\\%=|&|&&|&
442
  rewritten.push(
443
  '(?:' + allowAnywhereFoldCaseAndRenumberGroups(regex) + ')');
444
  }
445
-
446
  return new RegExp(rewritten.join('|'), ignoreCase ? 'gi' : 'g');
447
  }
448
 
449
-
450
  /**
451
  * Split markup into a string of source code and an array mapping ranges in
452
  * that string to the text nodes in which they appear.
@@ -470,8 +503,8 @@ var REGEXP_PRECEDER_PATTERN = '(?:^^\\.?|[+-]|\\!|\\!=|\\!==|\\#|\\%|\\%=|&|&&|&
470
  * <pre>
471
  * {
472
  * sourceCode: "print 'Hello '\n + 'World';",
473
- * // 1 2
474
- * // 012345678901234 5678901234567
475
  * spans: [0, #1, 6, #2, 14, #3, 15, #4]
476
  * }
477
  * </pre>
@@ -488,66 +521,56 @@ var REGEXP_PRECEDER_PATTERN = '(?:^^\\.?|[+-]|\\!|\\!=|\\!==|\\#|\\%|\\%=|&|&&|&
488
  * </p>
489
  *
490
  * @param {Node} node an HTML DOM subtree containing source-code.
 
 
491
  * @return {Object} source code and the text nodes in which they occur.
492
  */
493
- function extractSourceSpans(node) {
494
  var nocode = /(?:^|\s)nocode(?:\s|$)/;
495
-
496
  var chunks = [];
497
  var length = 0;
498
  var spans = [];
499
  var k = 0;
500
-
501
- var whitespace;
502
- if (node.currentStyle) {
503
- whitespace = node.currentStyle.whiteSpace;
504
- } else if (window.getComputedStyle) {
505
- whitespace = document.defaultView.getComputedStyle(node, null)
506
- .getPropertyValue('white-space');
507
- }
508
- var isPreformatted = whitespace && 'pre' === whitespace.substring(0, 3);
509
-
510
  function walk(node) {
511
- switch (node.nodeType) {
512
- case 1: // Element
513
- if (nocode.test(node.className)) { return; }
514
- for (var child = node.firstChild; child; child = child.nextSibling) {
515
- walk(child);
516
- }
517
- var nodeName = node.nodeName;
518
- if ('BR' === nodeName || 'LI' === nodeName) {
519
- chunks[k] = '\n';
520
- spans[k << 1] = length++;
521
- spans[(k++ << 1) | 1] = node;
522
- }
523
- break;
524
- case 3: case 4: // Text
525
- var text = node.nodeValue;
526
- if (text.length) {
527
- if (!isPreformatted) {
528
- text = text.replace(/[ \t\r\n]+/g, ' ');
529
- } else {
530
- text = text.replace(/\r\n?/g, '\n'); // Normalize newlines.
531
- }
532
- // TODO: handle tabs here?
533
- chunks[k] = text;
534
- spans[k << 1] = length;
535
- length += text.length;
536
- spans[(k++ << 1) | 1] = node;
537
  }
538
- break;
 
 
 
 
 
539
  }
540
  }
541
-
542
  walk(node);
543
-
544
  return {
545
  sourceCode: chunks.join('').replace(/\n$/, ''),
546
  spans: spans
547
  };
548
  }
549
 
550
-
551
  /**
552
  * Apply the given language handler to sourceCode and add the resulting
553
  * decorations to out.
@@ -812,12 +835,13 @@ var REGEXP_PRECEDER_PATTERN = '(?:^^\\.?|[+-]|\\!|\\!=|\\!==|\\#|\\%|\\%=|&|&&|&
812
  } else {
813
  // Stop C preprocessor declarations at an unclosed open comment
814
  shortcutStylePatterns.push(
815
- [PR_COMMENT, /^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\r\n]*)/,
816
  null, '#']);
817
  }
 
818
  fallthroughStylePatterns.push(
819
  [PR_STRING,
820
- /^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,
821
  null]);
822
  } else {
823
  shortcutStylePatterns.push([PR_COMMENT, /^#[^\r\n]*/, null, '#']);
@@ -828,7 +852,18 @@ var REGEXP_PRECEDER_PATTERN = '(?:^^\\.?|[+-]|\\!|\\!=|\\!==|\\#|\\%|\\%=|&|&&|&
828
  fallthroughStylePatterns.push(
829
  [PR_COMMENT, /^\/\*[\s\S]*?(?:\*\/|$)/, null]);
830
  }
831
- if (options['regexLiterals']) {
 
 
 
 
 
 
 
 
 
 
 
832
  /**
833
  * @const
834
  */
@@ -836,18 +871,19 @@ var REGEXP_PRECEDER_PATTERN = '(?:^^\\.?|[+-]|\\!|\\!=|\\!==|\\#|\\%|\\%=|&|&&|&
836
  // A regular expression literal starts with a slash that is
837
  // not followed by * or / so that it is not confused with
838
  // comments.
839
- '/(?=[^/*])'
840
  // and then contains any number of raw characters,
841
- + '(?:[^/\\x5B\\x5C]'
842
  // escape sequences (\x5C),
843
- + '|\\x5C[\\s\\S]'
844
  // or non-nesting character sets (\x5B\x5D);
845
- + '|\\x5B(?:[^\\x5C\\x5D]|\\x5C[\\s\\S])*(?:\\x5D|$))+'
 
846
  // finally closed by a /.
847
  + '/');
848
  fallthroughStylePatterns.push(
849
  ['lang-regex',
850
- new RegExp('^' + REGEXP_PRECEDER_PATTERN + '(' + REGEX_LITERAL + ')')
851
  ]);
852
  }
853
 
@@ -865,6 +901,48 @@ var REGEXP_PRECEDER_PATTERN = '(?:^^\\.?|[+-]|\\!|\\!=|\\!==|\\#|\\%|\\%=|&|&&|&
865
  }
866
 
867
  shortcutStylePatterns.push([PR_PLAIN, /^\s+/, null, ' \r\n\t\xA0']);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
868
  fallthroughStylePatterns.push(
869
  // TODO(mikesamuel): recognize non-latin letters and numerals in idents
870
  [PR_LITERAL, /^@[a-z_$][a-z_$@0-9]*/i, null],
@@ -883,9 +961,10 @@ var REGEXP_PRECEDER_PATTERN = '(?:^^\\.?|[+-]|\\!|\\!=|\\!==|\\#|\\%|\\%=|&|&&|&
883
  // with an optional modifier like UL for unsigned long
884
  + '[a-z]*', 'i'),
885
  null, '0123456789'],
886
- // Don't treat escaped quotes in bash as starting strings. See issue 144.
 
887
  [PR_PLAIN, /^\\[\s\S]?/, null],
888
- [PR_PUNCTUATION, /^.[^\s\w\.$@\'\"\`\/\#\\]*/, null]);
889
 
890
  return createSimpleLexer(shortcutStylePatterns, fallthroughStylePatterns);
891
  }
@@ -906,72 +985,58 @@ var REGEXP_PRECEDER_PATTERN = '(?:^^\\.?|[+-]|\\!|\\!=|\\!==|\\#|\\%|\\%=|&|&&|&
906
  * HTMLOListElement, and each line is moved into a separate list item.
907
  * This requires cloning elements, so the input might not have unique
908
  * IDs after numbering.
 
 
909
  */
910
- function numberLines(node, opt_startLineNum) {
911
  var nocode = /(?:^|\s)nocode(?:\s|$)/;
912
  var lineBreak = /\r\n?|\n/;
913
-
914
  var document = node.ownerDocument;
915
-
916
- var whitespace;
917
- if (node.currentStyle) {
918
- whitespace = node.currentStyle.whiteSpace;
919
- } else if (window.getComputedStyle) {
920
- whitespace = document.defaultView.getComputedStyle(node, null)
921
- .getPropertyValue('white-space');
922
- }
923
- // If it's preformatted, then we need to split lines on line breaks
924
- // in addition to <BR>s.
925
- var isPreformatted = whitespace && 'pre' === whitespace.substring(0, 3);
926
-
927
- var li = document.createElement('LI');
928
  while (node.firstChild) {
929
  li.appendChild(node.firstChild);
930
  }
931
  // An array of lines. We split below, so this is initialized to one
932
  // un-split line.
933
  var listItems = [li];
934
-
935
  function walk(node) {
936
- switch (node.nodeType) {
937
- case 1: // Element
938
- if (nocode.test(node.className)) { break; }
939
- if ('BR' === node.nodeName) {
940
- breakAfter(node);
941
- // Discard the <BR> since it is now flush against a </LI>.
942
- if (node.parentNode) {
943
- node.parentNode.removeChild(node);
944
- }
945
- } else {
946
- for (var child = node.firstChild; child; child = child.nextSibling) {
947
- walk(child);
948
- }
949
  }
950
- break;
951
- case 3: case 4: // Text
952
- if (isPreformatted) {
953
- var text = node.nodeValue;
954
- var match = text.match(lineBreak);
955
- if (match) {
956
- var firstLine = text.substring(0, match.index);
957
- node.nodeValue = firstLine;
958
- var tail = text.substring(match.index + match[0].length);
959
- if (tail) {
960
- var parent = node.parentNode;
961
- parent.insertBefore(
962
- document.createTextNode(tail), node.nextSibling);
963
- }
964
- breakAfter(node);
965
- if (!firstLine) {
966
- // Don't leave blank text nodes in the DOM.
967
- node.parentNode.removeChild(node);
968
- }
969
- }
970
  }
971
- break;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
972
  }
973
  }
974
-
975
  // Split a line after the given node.
976
  function breakAfter(lineEndNode) {
977
  // If there's nothing to the right, then we can skip ending the line
@@ -981,7 +1046,7 @@ var REGEXP_PRECEDER_PATTERN = '(?:^^\\.?|[+-]|\\!|\\!=|\\!==|\\#|\\%|\\%=|&|&&|&
981
  lineEndNode = lineEndNode.parentNode;
982
  if (!lineEndNode) { return; }
983
  }
984
-
985
  function breakLeftOf(limit, copy) {
986
  // Clone shallowly if this node needs to be on both sides of the break.
987
  var rightSide = copy ? limit.cloneNode(false) : limit;
@@ -1003,9 +1068,9 @@ var REGEXP_PRECEDER_PATTERN = '(?:^^\\.?|[+-]|\\!|\\!=|\\!==|\\#|\\%|\\%=|&|&&|&
1003
  }
1004
  return rightSide;
1005
  }
1006
-
1007
  var copiedListItem = breakLeftOf(lineEndNode.nextSibling, 0);
1008
-
1009
  // Walk the parent chain until we reach an unattached LI.
1010
  for (var parent;
1011
  // Check nodeType since IE invents document fragments.
@@ -1015,20 +1080,20 @@ var REGEXP_PRECEDER_PATTERN = '(?:^^\\.?|[+-]|\\!|\\!=|\\!==|\\#|\\%|\\%=|&|&&|&
1015
  // Put it on the list of lines for later processing.
1016
  listItems.push(copiedListItem);
1017
  }
1018
-
1019
  // Split lines while there are lines left to split.
1020
  for (var i = 0; // Number of lines that have been split so far.
1021
  i < listItems.length; // length updated by breakAfter calls.
1022
  ++i) {
1023
  walk(listItems[i]);
1024
  }
1025
-
1026
  // Make sure numeric indices show correctly.
1027
  if (opt_startLineNum === (opt_startLineNum|0)) {
1028
  listItems[0].setAttribute('value', opt_startLineNum);
1029
  }
1030
-
1031
- var ol = document.createElement('OL');
1032
  ol.className = 'linenums';
1033
  var offset = Math.max(0, ((opt_startLineNum - 1 /* zero index */)) | 0) || 0;
1034
  for (var i = 0, n = listItems.length; i < n; ++i) {
@@ -1042,15 +1107,15 @@ var REGEXP_PRECEDER_PATTERN = '(?:^^\\.?|[+-]|\\!|\\!=|\\!==|\\#|\\%|\\%=|&|&&|&
1042
  }
1043
  ol.appendChild(li);
1044
  }
1045
-
1046
  node.appendChild(ol);
1047
  }
1048
-
1049
  /**
1050
  * Breaks {@code job.sourceCode} around style boundaries in
1051
  * {@code job.decorations} and modifies {@code job.sourceNode} in place.
1052
  * @param {Object} job like <pre>{
1053
  * sourceCode: {string} source as plain text,
 
1054
  * spans: {Array.<number|Node>} alternating span start indices into source
1055
  * and the text node or element (e.g. {@code <BR>}) corresponding to that
1056
  * span.
@@ -1060,25 +1125,26 @@ var REGEXP_PRECEDER_PATTERN = '(?:^^\\.?|[+-]|\\!|\\!=|\\!==|\\#|\\%|\\%=|&|&&|&
1060
  * @private
1061
  */
1062
  function recombineTagsAndDecorations(job) {
1063
- var isIE = /\bMSIE\b/.test(navigator.userAgent);
 
1064
  var newlineRe = /\n/g;
1065
-
1066
  var source = job.sourceCode;
1067
  var sourceLength = source.length;
1068
  // Index into source after the last code-unit recombined.
1069
  var sourceIndex = 0;
1070
-
1071
  var spans = job.spans;
1072
  var nSpans = spans.length;
1073
  // Index into spans after the last span which ends at or before sourceIndex.
1074
  var spanIndex = 0;
1075
-
1076
  var decorations = job.decorations;
1077
  var nDecorations = decorations.length;
1078
  // Index into decorations after the last decoration which ends at or before
1079
  // sourceIndex.
1080
  var decorationIndex = 0;
1081
-
1082
  // Remove all zero-length decorations.
1083
  decorations[nDecorations] = sourceLength;
1084
  var decPos, i;
@@ -1091,7 +1157,7 @@ var REGEXP_PRECEDER_PATTERN = '(?:^^\\.?|[+-]|\\!|\\!=|\\!==|\\#|\\%|\\%=|&|&&|&
1091
  }
1092
  }
1093
  nDecorations = decPos;
1094
-
1095
  // Simplify decorations.
1096
  for (i = decPos = 0; i < nDecorations;) {
1097
  var startPos = decorations[i];
@@ -1105,57 +1171,69 @@ var REGEXP_PRECEDER_PATTERN = '(?:^^\\.?|[+-]|\\!|\\!=|\\!==|\\#|\\%|\\%=|&|&&|&
1105
  decorations[decPos++] = startDec;
1106
  i = end;
1107
  }
1108
-
1109
  nDecorations = decorations.length = decPos;
1110
-
1111
- var decoration = null;
1112
- while (spanIndex < nSpans) {
1113
- var spanStart = spans[spanIndex];
1114
- var spanEnd = spans[spanIndex + 2] || sourceLength;
1115
-
1116
- var decStart = decorations[decorationIndex];
1117
- var decEnd = decorations[decorationIndex + 2] || sourceLength;
1118
-
1119
- var end = Math.min(spanEnd, decEnd);
1120
-
1121
- var textNode = spans[spanIndex + 1];
1122
- var styledText;
1123
- if (textNode.nodeType !== 1 // Don't muck with <BR>s or <LI>s
1124
- // Don't introduce spans around empty text nodes.
1125
- && (styledText = source.substring(sourceIndex, end))) {
1126
- // This may seem bizarre, and it is. Emitting LF on IE causes the
1127
- // code to display with spaces instead of line breaks.
1128
- // Emitting Windows standard issue linebreaks (CRLF) causes a blank
1129
- // space to appear at the beginning of every line but the first.
1130
- // Emitting an old Mac OS 9 line separator makes everything spiffy.
1131
- if (isIE) { styledText = styledText.replace(newlineRe, '\r'); }
1132
- textNode.nodeValue = styledText;
1133
- var document = textNode.ownerDocument;
1134
- var span = document.createElement('SPAN');
1135
- span.className = decorations[decorationIndex + 1];
1136
- var parentNode = textNode.parentNode;
1137
- parentNode.replaceChild(span, textNode);
1138
- span.appendChild(textNode);
1139
- if (sourceIndex < spanEnd) { // Split off a text node.
1140
- spans[spanIndex + 1] = textNode
1141
- // TODO: Possibly optimize by using '' if there's no flicker.
1142
- = document.createTextNode(source.substring(end, spanEnd));
1143
- parentNode.insertBefore(textNode, span.nextSibling);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1144
  }
1145
  }
1146
-
1147
- sourceIndex = end;
1148
-
1149
- if (sourceIndex >= spanEnd) {
1150
- spanIndex += 2;
1151
- }
1152
- if (sourceIndex >= decEnd) {
1153
- decorationIndex += 2;
1154
  }
1155
  }
1156
  }
1157
 
1158
-
1159
  /** Maps language-specific file extensions to handlers. */
1160
  var langHandlerRegistry = {};
1161
  /** Register a language handler for the given file extensions.
@@ -1179,7 +1257,7 @@ var REGEXP_PRECEDER_PATTERN = '(?:^^\\.?|[+-]|\\!|\\!=|\\!==|\\#|\\%|\\%=|&|&&|&
1179
  var ext = fileExtensions[i];
1180
  if (!langHandlerRegistry.hasOwnProperty(ext)) {
1181
  langHandlerRegistry[ext] = handler;
1182
- } else if (window['console']) {
1183
  console['warn']('cannot override language handler %s', ext);
1184
  }
1185
  }
@@ -1199,7 +1277,7 @@ var REGEXP_PRECEDER_PATTERN = '(?:^^\\.?|[+-]|\\!|\\!=|\\!==|\\#|\\%|\\%=|&|&&|&
1199
  createSimpleLexer(
1200
  [],
1201
  [
1202
- [PR_PLAIN, /^[^<\?]+/],
1203
  [PR_DECLARATION, /^<!\w[^>]*(?:>|$)/],
1204
  [PR_COMMENT, /^<\!--[\s\S]*?(?:-\->|$)/],
1205
  // Unescaped content in an unknown language
@@ -1259,30 +1337,30 @@ var REGEXP_PRECEDER_PATTERN = '(?:^^\\.?|[+-]|\\!|\\!=|\\!==|\\#|\\%|\\%=|&|&&|&
1259
  'keywords': SH_KEYWORDS,
1260
  'hashComments': true,
1261
  'multiLineStrings': true
1262
- }), ['bsh', 'csh', 'sh']);
1263
  registerLangHandler(sourceDecorator({
1264
  'keywords': PYTHON_KEYWORDS,
1265
  'hashComments': true,
1266
  'multiLineStrings': true,
1267
  'tripleQuotedStrings': true
1268
- }), ['cv', 'py']);
1269
  registerLangHandler(sourceDecorator({
1270
  'keywords': PERL_KEYWORDS,
1271
  'hashComments': true,
1272
  'multiLineStrings': true,
1273
- 'regexLiterals': true
1274
  }), ['perl', 'pl', 'pm']);
1275
  registerLangHandler(sourceDecorator({
1276
  'keywords': RUBY_KEYWORDS,
1277
  'hashComments': true,
1278
  'multiLineStrings': true,
1279
  'regexLiterals': true
1280
- }), ['rb']);
1281
  registerLangHandler(sourceDecorator({
1282
  'keywords': JSCRIPT_KEYWORDS,
1283
  'cStyleComments': true,
1284
  'regexLiterals': true
1285
- }), ['js']);
1286
  registerLangHandler(sourceDecorator({
1287
  'keywords': COFFEE_KEYWORDS,
1288
  'hashComments': 3, // ### style block comments
@@ -1291,14 +1369,20 @@ var REGEXP_PRECEDER_PATTERN = '(?:^^\\.?|[+-]|\\!|\\!=|\\!==|\\#|\\%|\\%=|&|&&|&
1291
  'tripleQuotedStrings': true,
1292
  'regexLiterals': true
1293
  }), ['coffee']);
1294
- registerLangHandler(createSimpleLexer([], [[PR_STRING, /^[\s\S]+/]]), ['regex']);
 
 
 
 
 
 
1295
 
1296
  function applyDecorator(job) {
1297
  var opt_langExtension = job.langExtension;
1298
 
1299
  try {
1300
  // Extract tags, and convert the source code to plain text.
1301
- var sourceAndSpans = extractSourceSpans(job.sourceNode);
1302
  /** Plain text. @type {string} */
1303
  var source = sourceAndSpans.sourceCode;
1304
  job.sourceCode = source;
@@ -1312,40 +1396,58 @@ var REGEXP_PRECEDER_PATTERN = '(?:^^\\.?|[+-]|\\!|\\!=|\\!==|\\#|\\%|\\%=|&|&&|&
1312
  // modifying the sourceNode in place.
1313
  recombineTagsAndDecorations(job);
1314
  } catch (e) {
1315
- if ('console' in window) {
1316
- console['log'](e && e['stack'] ? e['stack'] : e);
1317
  }
1318
  }
1319
  }
1320
 
1321
  /**
 
1322
  * @param sourceCodeHtml {string} The HTML to pretty print.
1323
  * @param opt_langExtension {string} The language name to use.
1324
  * Typically, a filename extension like 'cpp' or 'java'.
1325
  * @param opt_numberLines {number|boolean} True to number lines,
1326
  * or the 1-indexed number of the first line in sourceCodeHtml.
1327
  */
1328
- function prettyPrintOne(sourceCodeHtml, opt_langExtension, opt_numberLines) {
1329
- var container = document.createElement('PRE');
1330
  // This could cause images to load and onload listeners to fire.
1331
  // E.g. <img onerror="alert(1337)" src="nosuchimage.png">.
1332
  // We assume that the inner HTML is from a trusted source.
1333
- container.innerHTML = sourceCodeHtml;
 
 
 
 
 
1334
  if (opt_numberLines) {
1335
- numberLines(container, opt_numberLines);
1336
  }
1337
 
1338
  var job = {
1339
  langExtension: opt_langExtension,
1340
  numberLines: opt_numberLines,
1341
- sourceNode: container
 
1342
  };
1343
  applyDecorator(job);
1344
  return container.innerHTML;
1345
  }
1346
 
1347
- function prettyPrint(opt_whenDone) {
1348
- function byTagName(tn) { return document.getElementsByTagName(tn); }
 
 
 
 
 
 
 
 
 
 
 
1349
  // fetch a list of nodes to rewrite
1350
  var codeSegments = [byTagName('pre'), byTagName('code'), byTagName('xmp')];
1351
  var elements = [];
@@ -1368,59 +1470,124 @@ var REGEXP_PRECEDER_PATTERN = '(?:^^\\.?|[+-]|\\!|\\!=|\\!==|\\#|\\%|\\%=|&|&&|&
1368
 
1369
  var langExtensionRe = /\blang(?:uage)?-([\w.]+)(?!\S)/;
1370
  var prettyPrintRe = /\bprettyprint\b/;
 
 
 
 
 
1371
 
1372
  function doWork() {
1373
- var endTime = (window['PR_SHOULD_USE_CONTINUATION'] ?
1374
  clock['now']() + 250 /* ms */ :
1375
  Infinity);
1376
  for (; k < elements.length && clock['now']() < endTime; k++) {
1377
  var cs = elements[k];
1378
- var className = cs.className;
1379
- if (className.indexOf('prettyprint') >= 0) {
1380
- // If the classes includes a language extensions, use it.
1381
- // Language extensions can be specified like
1382
- // <pre class="prettyprint lang-cpp">
1383
- // the language extension "cpp" is used to find a language handler as
1384
- // passed to PR.registerLangHandler.
1385
- // HTML5 recommends that a language be specified using "language-"
1386
- // as the prefix instead. Google Code Prettify supports both.
1387
- // http://dev.w3.org/html5/spec-author-view/the-code-element.html
1388
- var langExtension = className.match(langExtensionRe);
1389
- // Support <pre class="prettyprint"><code class="language-c">
1390
- var wrapper;
1391
- if (!langExtension && (wrapper = childContentWrapper(cs))
1392
- && "CODE" === wrapper.tagName) {
1393
- langExtension = wrapper.className.match(langExtensionRe);
1394
- }
1395
 
1396
- if (langExtension) {
1397
- langExtension = langExtension[1];
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1398
  }
 
 
 
 
 
 
 
 
1399
 
1400
  // make sure this is not nested in an already prettified element
1401
  var nested = false;
1402
  for (var p = cs.parentNode; p; p = p.parentNode) {
1403
- if ((p.tagName === 'pre' || p.tagName === 'code' ||
1404
- p.tagName === 'xmp') &&
1405
- p.className && p.className.indexOf('prettyprint') >= 0) {
1406
  nested = true;
1407
  break;
1408
  }
1409
  }
1410
  if (!nested) {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1411
  // Look for a class like linenums or linenums:<n> where <n> is the
1412
  // 1-indexed number of the first line.
1413
- var lineNums = cs.className.match(/\blinenums\b(?::(\d+))?/);
1414
- lineNums = lineNums
1415
- ? lineNums[1] && lineNums[1].length ? +lineNums[1] : true
1416
- : false;
1417
- if (lineNums) { numberLines(cs, lineNums); }
 
 
 
 
 
1418
 
1419
  // do the pretty printing
1420
  prettyPrintingJob = {
1421
  langExtension: langExtension,
1422
  sourceNode: cs,
1423
- numberLines: lineNums
 
1424
  };
1425
  applyDecorator(prettyPrintingJob);
1426
  }
@@ -1429,7 +1596,7 @@ var REGEXP_PRECEDER_PATTERN = '(?:^^\\.?|[+-]|\\!|\\!=|\\!==|\\#|\\%|\\%=|&|&&|&
1429
  if (k < elements.length) {
1430
  // finish up in a continuation
1431
  setTimeout(doWork, 250);
1432
- } else if (opt_whenDone) {
1433
  opt_whenDone();
1434
  }
1435
  }
@@ -1437,26 +1604,11 @@ var REGEXP_PRECEDER_PATTERN = '(?:^^\\.?|[+-]|\\!|\\!=|\\!==|\\#|\\%|\\%=|&|&&|&
1437
  doWork();
1438
  }
1439
 
1440
- /**
1441
- * Find all the {@code <pre>} and {@code <code>} tags in the DOM with
1442
- * {@code class=prettyprint} and prettify them.
1443
- *
1444
- * @param {Function?} opt_whenDone if specified, called when the last entry
1445
- * has been finished.
1446
- */
1447
- window['prettyPrintOne'] = prettyPrintOne;
1448
- /**
1449
- * Pretty print a chunk of code.
1450
- *
1451
- * @param {string} sourceCodeHtml code as html
1452
- * @return {string} code as html, but prettier
1453
- */
1454
- window['prettyPrint'] = prettyPrint;
1455
- /**
1456
- * Contains functions for creating and registering new language handlers.
1457
- * @type {Object}
1458
- */
1459
- window['PR'] = {
1460
  'createSimpleLexer': createSimpleLexer,
1461
  'registerLangHandler': registerLangHandler,
1462
  'sourceDecorator': sourceDecorator,
@@ -1472,6 +1624,32 @@ var REGEXP_PRECEDER_PATTERN = '(?:^^\\.?|[+-]|\\!|\\!=|\\!==|\\#|\\%|\\%=|&|&&|&
1472
  'PR_SOURCE': PR_SOURCE,
1473
  'PR_STRING': PR_STRING,
1474
  'PR_TAG': PR_TAG,
1475
- 'PR_TYPE': PR_TYPE
 
 
 
 
 
 
 
 
1476
  };
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1477
  })();
53
  */
54
 
55
  // JSLint declarations
56
+ /*global console, document, navigator, setTimeout, window, define */
57
+
58
+ /** @define {boolean} */
59
+ var IN_GLOBAL_SCOPE = true;
60
 
61
  /**
62
  * Split {@code prettyPrint} into multiple timeouts so as not to interfere with
65
  */
66
  window['PR_SHOULD_USE_CONTINUATION'] = true;
67
 
68
+ /**
69
+ * Pretty print a chunk of code.
70
+ * @param {string} sourceCodeHtml The HTML to pretty print.
71
+ * @param {string} opt_langExtension The language name to use.
72
+ * Typically, a filename extension like 'cpp' or 'java'.
73
+ * @param {number|boolean} opt_numberLines True to number lines,
74
+ * or the 1-indexed number of the first line in sourceCodeHtml.
75
+ * @return {string} code as html, but prettier
76
+ */
77
+ var prettyPrintOne;
78
+ /**
79
+ * Find all the {@code <pre>} and {@code <code>} tags in the DOM with
80
+ * {@code class=prettyprint} and prettify them.
81
+ *
82
+ * @param {Function} opt_whenDone called when prettifying is done.
83
+ * @param {HTMLElement|HTMLDocument} opt_root an element or document
84
+ * containing all the elements to pretty print.
85
+ * Defaults to {@code document.body}.
86
+ */
87
+ var prettyPrint;
88
+
89
+
90
  (function () {
91
+ var win = window;
92
  // Keyword lists for various languages.
93
  // We use things that coerce to strings to make them compact when minified
94
  // and to defeat aggressive optimizers that fold large string constants.
95
  var FLOW_CONTROL_KEYWORDS = ["break,continue,do,else,for,if,return,while"];
96
+ var C_KEYWORDS = [FLOW_CONTROL_KEYWORDS,"auto,case,char,const,default," +
97
+ "double,enum,extern,float,goto,inline,int,long,register,short,signed," +
98
+ "sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"];
99
  var COMMON_KEYWORDS = [C_KEYWORDS,"catch,class,delete,false,import," +
100
  "new,operator,private,protected,public,this,throw,true,try,typeof"];
101
  var CPP_KEYWORDS = [COMMON_KEYWORDS,"alignof,align_union,asm,axiom,bool," +
102
+ "concept,concept_map,const_cast,constexpr,decltype,delegate," +
103
+ "dynamic_cast,explicit,export,friend,generic,late_check," +
104
+ "mutable,namespace,nullptr,property,reinterpret_cast,static_assert," +
105
+ "static_cast,template,typeid,typename,using,virtual,where"];
106
  var JAVA_KEYWORDS = [COMMON_KEYWORDS,
107
+ "abstract,assert,boolean,byte,extends,final,finally,implements,import," +
108
+ "instanceof,interface,null,native,package,strictfp,super,synchronized," +
109
+ "throws,transient"];
110
  var CSHARP_KEYWORDS = [JAVA_KEYWORDS,
111
  "as,base,by,checked,decimal,delegate,descending,dynamic,event," +
112
+ "fixed,foreach,from,group,implicit,in,internal,into,is,let," +
113
+ "lock,object,out,override,orderby,params,partial,readonly,ref,sbyte," +
114
+ "sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort," +
115
+ "var,virtual,where"];
116
  var COFFEE_KEYWORDS = "all,and,by,catch,class,else,extends,false,finally," +
117
  "for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then," +
118
+ "throw,true,try,unless,until,when,while,yes";
119
  var JSCRIPT_KEYWORDS = [COMMON_KEYWORDS,
120
  "debugger,eval,export,function,get,null,set,undefined,var,with," +
121
  "Infinity,NaN"];
130
  "def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo," +
131
  "rescue,retry,self,super,then,true,undef,unless,until,when,yield," +
132
  "BEGIN,END"];
133
+ var RUST_KEYWORDS = [FLOW_CONTROL_KEYWORDS, "as,assert,const,copy,drop," +
134
+ "enum,extern,fail,false,fn,impl,let,log,loop,match,mod,move,mut,priv," +
135
+ "pub,pure,ref,self,static,struct,true,trait,type,unsafe,use"];
136
  var SH_KEYWORDS = [FLOW_CONTROL_KEYWORDS, "case,done,elif,esac,eval,fi," +
137
  "function,in,local,set,then,until"];
138
  var ALL_KEYWORDS = [
139
+ CPP_KEYWORDS, CSHARP_KEYWORDS, JSCRIPT_KEYWORDS, PERL_KEYWORDS,
140
  PYTHON_KEYWORDS, RUBY_KEYWORDS, SH_KEYWORDS];
141
+ var C_TYPES = /^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)\b/;
142
 
143
  // token style names. correspond to css classes
144
  /**
172
  */
173
  var PR_PUNCTUATION = 'pun';
174
  /**
175
+ * token style for plain text.
176
  * @const
177
  */
178
  var PR_PLAIN = 'pln';
210
  */
211
  var PR_NOCODE = 'nocode';
212
 
213
+
214
+
215
+ /**
216
+ * A set of tokens that can precede a regular expression literal in
217
+ * javascript
218
+ * http://web.archive.org/web/20070717142515/http://www.mozilla.org/js/language/js20/rationale/syntax.html
219
+ * has the full list, but I've removed ones that might be problematic when
220
+ * seen in languages that don't support regular expression literals.
221
+ *
222
+ * <p>Specifically, I've removed any keywords that can't precede a regexp
223
+ * literal in a syntactically legal javascript program, and I've removed the
224
+ * "in" keyword since it's not a keyword in many languages, and might be used
225
+ * as a count of inches.
226
+ *
227
+ * <p>The link above does not accurately describe EcmaScript rules since
228
+ * it fails to distinguish between (a=++/b/i) and (a++/b/i) but it works
229
+ * very well in practice.
230
+ *
231
+ * @private
232
+ * @const
233
+ */
234
+ var REGEXP_PRECEDER_PATTERN = '(?:^^\\.?|[+-]|[!=]=?=?|\\#|%=?|&&?=?|\\(|\\*=?|[+\\-]=|->|\\/=?|::?|<<?=?|>>?>?=?|,|;|\\?|@|\\[|~|{|\\^\\^?=?|\\|\\|?=?|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\\s*';
235
+
236
+ // CAVEAT: this does not properly handle the case where a regular
237
+ // expression immediately follows another since a regular expression may
238
+ // have flags for case-sensitivity and the like. Having regexp tokens
239
+ // adjacent is not valid in any language I'm aware of, so I'm punting.
240
+ // TODO: maybe style special characters inside a regexp as punctuation.
 
241
 
242
  /**
243
  * Given a group of {@link RegExp}s, returns a {@code RegExp} that globally
249
  */
250
  function combinePrefixPatterns(regexs) {
251
  var capturedGroupIndex = 0;
252
+
253
  var needToFoldCase = false;
254
  var ignoreCase = false;
255
  for (var i = 0, n = regexs.length; i < n; ++i) {
263
  break;
264
  }
265
  }
266
+
267
  var escapeCharToCodeUnit = {
268
  'b': 8,
269
  't': 9,
272
  'f': 0xc,
273
  'r': 0xd
274
  };
275
+
276
  function decodeEscape(charsetPart) {
277
  var cc0 = charsetPart.charCodeAt(0);
278
  if (cc0 !== 92 /* \\ */) {
290
  return charsetPart.charCodeAt(1);
291
  }
292
  }
293
+
294
  function encodeEscape(charCode) {
295
  if (charCode < 0x20) {
296
  return (charCode < 0x10 ? '\\x0' : '\\x') + charCode.toString(16);
297
  }
298
  var ch = String.fromCharCode(charCode);
299
+ return (ch === '\\' || ch === '-' || ch === ']' || ch === '^')
300
+ ? "\\" + ch : ch;
 
 
301
  }
302
+
303
  function caseFoldCharset(charSet) {
304
  var charsetParts = charSet.substring(1, charSet.length - 1).match(
305
  new RegExp(
311
  + '|-'
312
  + '|[^-\\\\]',
313
  'g'));
 
314
  var ranges = [];
315
  var inverse = charsetParts[0] === '^';
316
+
317
+ var out = ['['];
318
+ if (inverse) { out.push('^'); }
319
+
320
  for (var i = inverse ? 1 : 0, n = charsetParts.length; i < n; ++i) {
321
  var p = charsetParts[i];
322
  if (/\\[bdsw]/i.test(p)) { // Don't muck with named groups.
323
+ out.push(p);
324
  } else {
325
  var start = decodeEscape(p);
326
  var end;
345
  }
346
  }
347
  }
348
+
349
  // [[1, 10], [3, 4], [8, 12], [14, 14], [16, 16], [17, 17]]
350
  // -> [[1, 12], [14, 14], [16, 17]]
351
  ranges.sort(function (a, b) { return (a[0] - b[0]) || (b[1] - a[1]); });
352
  var consolidatedRanges = [];
353
+ var lastRange = [];
354
  for (var i = 0; i < ranges.length; ++i) {
355
  var range = ranges[i];
356
  if (range[0] <= lastRange[1] + 1) {
359
  consolidatedRanges.push(lastRange = range);
360
  }
361
  }
362
+
 
 
 
363
  for (var i = 0; i < consolidatedRanges.length; ++i) {
364
  var range = consolidatedRanges[i];
365
  out.push(encodeEscape(range[0]));
371
  out.push(']');
372
  return out.join('');
373
  }
374
+
375
  function allowAnywhereFoldCaseAndRenumberGroups(regex) {
376
  // Split into character sets, escape sequences, punctuation strings
377
  // like ('(', '(?:', ')', '^'), and runs of characters that do not
385
  + '|\\\\[0-9]+' // a back-reference or octal escape
386
  + '|\\\\[^ux0-9]' // other escape sequence
387
  + '|\\(\\?[:!=]' // start of a non-capturing group
388
+ + '|[\\(\\)\\^]' // start/end of a group, or line start
389
  + '|[^\\x5B\\x5C\\(\\)\\^]+' // run of other characters
390
  + ')',
391
  'g'));
392
  var n = parts.length;
393
+
394
  // Maps captured group numbers to the number they will occupy in
395
  // the output or to -1 if that has not been determined, or to
396
  // undefined if they need not be capturing in the output.
397
  var capturedGroups = [];
398
+
399
  // Walk over and identify back references to build the capturedGroups
400
  // mapping.
401
  for (var i = 0, groupIndex = 0; i < n; ++i) {
405
  ++groupIndex;
406
  } else if ('\\' === p.charAt(0)) {
407
  var decimalValue = +p.substring(1);
408
+ if (decimalValue) {
409
+ if (decimalValue <= groupIndex) {
410
+ capturedGroups[decimalValue] = -1;
411
+ } else {
412
+ // Replace with an unambiguous escape sequence so that
413
+ // an octal escape sequence does not turn into a backreference
414
+ // to a capturing group from an earlier regex.
415
+ parts[i] = encodeEscape(decimalValue);
416
+ }
417
  }
418
  }
419
  }
420
+
421
  // Renumber groups and reduce capturing groups to non-capturing groups
422
  // where possible.
423
  for (var i = 1; i < capturedGroups.length; ++i) {
429
  var p = parts[i];
430
  if (p === '(') {
431
  ++groupIndex;
432
+ if (!capturedGroups[groupIndex]) {
433
  parts[i] = '(?:';
434
  }
435
  } else if ('\\' === p.charAt(0)) {
436
  var decimalValue = +p.substring(1);
437
  if (decimalValue && decimalValue <= groupIndex) {
438
+ parts[i] = '\\' + capturedGroups[decimalValue];
439
  }
440
  }
441
  }
442
+
443
  // Remove any prefix anchors so that the output will match anywhere.
444
  // ^^ really does mean an anchored match though.
445
+ for (var i = 0; i < n; ++i) {
446
  if ('^' === parts[i] && '^' !== parts[i + 1]) { parts[i] = ''; }
447
  }
448
+
449
  // Expand letters to groups to handle mixing of case-sensitive and
450
  // case-insensitive patterns if necessary.
451
  if (regex.ignoreCase && needToFoldCase) {
465
  }
466
  }
467
  }
468
+
469
  return parts.join('');
470
  }
471
+
472
  var rewritten = [];
473
  for (var i = 0, n = regexs.length; i < n; ++i) {
474
  var regex = regexs[i];
476
  rewritten.push(
477
  '(?:' + allowAnywhereFoldCaseAndRenumberGroups(regex) + ')');
478
  }
479
+
480
  return new RegExp(rewritten.join('|'), ignoreCase ? 'gi' : 'g');
481
  }
482
 
 
483
  /**
484
  * Split markup into a string of source code and an array mapping ranges in
485
  * that string to the text nodes in which they appear.
503
  * <pre>
504
  * {
505
  * sourceCode: "print 'Hello '\n + 'World';",
506
+ * // 1 2
507
+ * // 012345678901234 5678901234567
508
  * spans: [0, #1, 6, #2, 14, #3, 15, #4]
509
  * }
510
  * </pre>
521
  * </p>
522
  *
523
  * @param {Node} node an HTML DOM subtree containing source-code.
524
+ * @param {boolean} isPreformatted true if white-space in text nodes should
525
+ * be considered significant.
526
  * @return {Object} source code and the text nodes in which they occur.
527
  */
528
+ function extractSourceSpans(node, isPreformatted) {
529
  var nocode = /(?:^|\s)nocode(?:\s|$)/;
530
+
531
  var chunks = [];
532
  var length = 0;
533
  var spans = [];
534
  var k = 0;
535
+
 
 
 
 
 
 
 
 
 
536
  function walk(node) {
537
+ var type = node.nodeType;
538
+ if (type == 1) { // Element
539
+ if (nocode.test(node.className)) { return; }
540
+ for (var child = node.firstChild; child; child = child.nextSibling) {
541
+ walk(child);
542
+ }
543
+ var nodeName = node.nodeName.toLowerCase();
544
+ if ('br' === nodeName || 'li' === nodeName) {
545
+ chunks[k] = '\n';
546
+ spans[k << 1] = length++;
547
+ spans[(k++ << 1) | 1] = node;
548
+ }
549
+ } else if (type == 3 || type == 4) { // Text
550
+ var text = node.nodeValue;
551
+ if (text.length) {
552
+ if (!isPreformatted) {
553
+ text = text.replace(/[ \t\r\n]+/g, ' ');
554
+ } else {
555
+ text = text.replace(/\r\n?/g, '\n'); // Normalize newlines.
 
 
 
 
 
 
 
556
  }
557
+ // TODO: handle tabs here?
558
+ chunks[k] = text;
559
+ spans[k << 1] = length;
560
+ length += text.length;
561
+ spans[(k++ << 1) | 1] = node;
562
+ }
563
  }
564
  }
565
+
566
  walk(node);
567
+
568
  return {
569
  sourceCode: chunks.join('').replace(/\n$/, ''),
570
  spans: spans
571
  };
572
  }
573
 
 
574
  /**
575
  * Apply the given language handler to sourceCode and add the resulting
576
  * decorations to out.
835
  } else {
836
  // Stop C preprocessor declarations at an unclosed open comment
837
  shortcutStylePatterns.push(
838
+ [PR_COMMENT, /^#(?:(?:define|e(?:l|nd)if|else|error|ifn?def|include|line|pragma|undef|warning)\b|[^\r\n]*)/,
839
  null, '#']);
840
  }
841
+ // #include <stdio.h>
842
  fallthroughStylePatterns.push(
843
  [PR_STRING,
844
+ /^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h(?:h|pp|\+\+)?|[a-z]\w*)>/,
845
  null]);
846
  } else {
847
  shortcutStylePatterns.push([PR_COMMENT, /^#[^\r\n]*/, null, '#']);
852
  fallthroughStylePatterns.push(
853
  [PR_COMMENT, /^\/\*[\s\S]*?(?:\*\/|$)/, null]);
854
  }
855
+ var regexLiterals = options['regexLiterals'];
856
+ if (regexLiterals) {
857
+ /**
858
+ * @const
859
+ */
860
+ var regexExcls = regexLiterals > 1
861
+ ? '' // Multiline regex literals
862
+ : '\n\r';
863
+ /**
864
+ * @const
865
+ */
866
+ var regexAny = regexExcls ? '.' : '[\\S\\s]';
867
  /**
868
  * @const
869
  */
871
  // A regular expression literal starts with a slash that is
872
  // not followed by * or / so that it is not confused with
873
  // comments.
874
+ '/(?=[^/*' + regexExcls + '])'
875
  // and then contains any number of raw characters,
876
+ + '(?:[^/\\x5B\\x5C' + regexExcls + ']'
877
  // escape sequences (\x5C),
878
+ + '|\\x5C' + regexAny
879
  // or non-nesting character sets (\x5B\x5D);
880
+ + '|\\x5B(?:[^\\x5C\\x5D' + regexExcls + ']'
881
+ + '|\\x5C' + regexAny + ')*(?:\\x5D|$))+'
882
  // finally closed by a /.
883
  + '/');
884
  fallthroughStylePatterns.push(
885
  ['lang-regex',
886
+ RegExp('^' + REGEXP_PRECEDER_PATTERN + '(' + REGEX_LITERAL + ')')
887
  ]);
888
  }
889
 
901
  }
902
 
903
  shortcutStylePatterns.push([PR_PLAIN, /^\s+/, null, ' \r\n\t\xA0']);
904
+
905
+ var punctuation =
906
+ // The Bash man page says
907
+
908
+ // A word is a sequence of characters considered as a single
909
+ // unit by GRUB. Words are separated by metacharacters,
910
+ // which are the following plus space, tab, and newline: { }
911
+ // | & $ ; < >
912
+ // ...
913
+
914
+ // A word beginning with # causes that word and all remaining
915
+ // characters on that line to be ignored.
916
+
917
+ // which means that only a '#' after /(?:^|[{}|&$;<>\s])/ starts a
918
+ // comment but empirically
919
+ // $ echo {#}
920
+ // {#}
921
+ // $ echo \$#
922
+ // $#
923
+ // $ echo }#
924
+ // }#
925
+
926
+ // so /(?:^|[|&;<>\s])/ is more appropriate.
927
+
928
+ // http://gcc.gnu.org/onlinedocs/gcc-2.95.3/cpp_1.html#SEC3
929
+ // suggests that this definition is compatible with a
930
+ // default mode that tries to use a single token definition
931
+ // to recognize both bash/python style comments and C
932
+ // preprocessor directives.
933
+
934
+ // This definition of punctuation does not include # in the list of
935
+ // follow-on exclusions, so # will not be broken before if preceeded
936
+ // by a punctuation character. We could try to exclude # after
937
+ // [|&;<>] but that doesn't seem to cause many major problems.
938
+ // If that does turn out to be a problem, we should change the below
939
+ // when hc is truthy to include # in the run of punctuation characters
940
+ // only when not followint [|&;<>].
941
+ '^.[^\\s\\w.$@\'"`/\\\\]*';
942
+ if (options['regexLiterals']) {
943
+ punctuation += '(?!\s*\/)';
944
+ }
945
+
946
  fallthroughStylePatterns.push(
947
  // TODO(mikesamuel): recognize non-latin letters and numerals in idents
948
  [PR_LITERAL, /^@[a-z_$][a-z_$@0-9]*/i, null],
961
  // with an optional modifier like UL for unsigned long
962
  + '[a-z]*', 'i'),
963
  null, '0123456789'],
964
+ // Don't treat escaped quotes in bash as starting strings.
965
+ // See issue 144.
966
  [PR_PLAIN, /^\\[\s\S]?/, null],
967
+ [PR_PUNCTUATION, new RegExp(punctuation), null]);
968
 
969
  return createSimpleLexer(shortcutStylePatterns, fallthroughStylePatterns);
970
  }
985
  * HTMLOListElement, and each line is moved into a separate list item.
986
  * This requires cloning elements, so the input might not have unique
987
  * IDs after numbering.
988
+ * @param {boolean} isPreformatted true iff white-space in text nodes should
989
+ * be treated as significant.
990
  */
991
+ function numberLines(node, opt_startLineNum, isPreformatted) {
992
  var nocode = /(?:^|\s)nocode(?:\s|$)/;
993
  var lineBreak = /\r\n?|\n/;
994
+
995
  var document = node.ownerDocument;
996
+
997
+ var li = document.createElement('li');
 
 
 
 
 
 
 
 
 
 
 
998
  while (node.firstChild) {
999
  li.appendChild(node.firstChild);
1000
  }
1001
  // An array of lines. We split below, so this is initialized to one
1002
  // un-split line.
1003
  var listItems = [li];
1004
+
1005
  function walk(node) {
1006
+ var type = node.nodeType;
1007
+ if (type == 1 && !nocode.test(node.className)) { // Element
1008
+ if ('br' === node.nodeName) {
1009
+ breakAfter(node);
1010
+ // Discard the <BR> since it is now flush against a </LI>.
1011
+ if (node.parentNode) {
1012
+ node.parentNode.removeChild(node);
 
 
 
 
 
 
1013
  }
1014
+ } else {
1015
+ for (var child = node.firstChild; child; child = child.nextSibling) {
1016
+ walk(child);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1017
  }
1018
+ }
1019
+ } else if ((type == 3 || type == 4) && isPreformatted) { // Text
1020
+ var text = node.nodeValue;
1021
+ var match = text.match(lineBreak);
1022
+ if (match) {
1023
+ var firstLine = text.substring(0, match.index);
1024
+ node.nodeValue = firstLine;
1025
+ var tail = text.substring(match.index + match[0].length);
1026
+ if (tail) {
1027
+ var parent = node.parentNode;
1028
+ parent.insertBefore(
1029
+ document.createTextNode(tail), node.nextSibling);
1030
+ }
1031
+ breakAfter(node);
1032
+ if (!firstLine) {
1033
+ // Don't leave blank text nodes in the DOM.
1034
+ node.parentNode.removeChild(node);
1035
+ }
1036
+ }
1037
  }
1038
  }
1039
+
1040
  // Split a line after the given node.
1041
  function breakAfter(lineEndNode) {
1042
  // If there's nothing to the right, then we can skip ending the line
1046
  lineEndNode = lineEndNode.parentNode;
1047
  if (!lineEndNode) { return; }
1048
  }
1049
+
1050
  function breakLeftOf(limit, copy) {
1051
  // Clone shallowly if this node needs to be on both sides of the break.
1052
  var rightSide = copy ? limit.cloneNode(false) : limit;
1068
  }
1069
  return rightSide;
1070
  }
1071
+
1072
  var copiedListItem = breakLeftOf(lineEndNode.nextSibling, 0);
1073
+
1074
  // Walk the parent chain until we reach an unattached LI.
1075
  for (var parent;
1076
  // Check nodeType since IE invents document fragments.
1080
  // Put it on the list of lines for later processing.
1081
  listItems.push(copiedListItem);
1082
  }
1083
+
1084
  // Split lines while there are lines left to split.
1085
  for (var i = 0; // Number of lines that have been split so far.
1086
  i < listItems.length; // length updated by breakAfter calls.
1087
  ++i) {
1088
  walk(listItems[i]);
1089
  }
1090
+
1091
  // Make sure numeric indices show correctly.
1092
  if (opt_startLineNum === (opt_startLineNum|0)) {
1093
  listItems[0].setAttribute('value', opt_startLineNum);
1094
  }
1095
+
1096
+ var ol = document.createElement('ol');
1097
  ol.className = 'linenums';
1098
  var offset = Math.max(0, ((opt_startLineNum - 1 /* zero index */)) | 0) || 0;
1099
  for (var i = 0, n = listItems.length; i < n; ++i) {
1107
  }
1108
  ol.appendChild(li);
1109
  }
1110
+
1111
  node.appendChild(ol);
1112
  }
 
1113
  /**
1114
  * Breaks {@code job.sourceCode} around style boundaries in
1115
  * {@code job.decorations} and modifies {@code job.sourceNode} in place.
1116
  * @param {Object} job like <pre>{
1117
  * sourceCode: {string} source as plain text,
1118
+ * sourceNode: {HTMLElement} the element containing the source,
1119
  * spans: {Array.<number|Node>} alternating span start indices into source
1120
  * and the text node or element (e.g. {@code <BR>}) corresponding to that
1121
  * span.
1125
  * @private
1126
  */
1127
  function recombineTagsAndDecorations(job) {
1128
+ var isIE8OrEarlier = /\bMSIE\s(\d+)/.exec(navigator.userAgent);
1129
+ isIE8OrEarlier = isIE8OrEarlier && +isIE8OrEarlier[1] <= 8;
1130
  var newlineRe = /\n/g;
1131
+
1132
  var source = job.sourceCode;
1133
  var sourceLength = source.length;
1134
  // Index into source after the last code-unit recombined.
1135
  var sourceIndex = 0;
1136
+
1137
  var spans = job.spans;
1138
  var nSpans = spans.length;
1139
  // Index into spans after the last span which ends at or before sourceIndex.
1140
  var spanIndex = 0;
1141
+
1142
  var decorations = job.decorations;
1143
  var nDecorations = decorations.length;
1144
  // Index into decorations after the last decoration which ends at or before
1145
  // sourceIndex.
1146
  var decorationIndex = 0;
1147
+
1148
  // Remove all zero-length decorations.
1149
  decorations[nDecorations] = sourceLength;
1150
  var decPos, i;
1157
  }
1158
  }
1159
  nDecorations = decPos;
1160
+
1161
  // Simplify decorations.
1162
  for (i = decPos = 0; i < nDecorations;) {
1163
  var startPos = decorations[i];
1171
  decorations[decPos++] = startDec;
1172
  i = end;
1173
  }
1174
+
1175
  nDecorations = decorations.length = decPos;
1176
+
1177
+ var sourceNode = job.sourceNode;
1178
+ var oldDisplay;
1179
+ if (sourceNode) {
1180
+ oldDisplay = sourceNode.style.display;
1181
+ sourceNode.style.display = 'none';
1182
+ }
1183
+ try {
1184
+ var decoration = null;
1185
+ while (spanIndex < nSpans) {
1186
+ var spanStart = spans[spanIndex];
1187
+ var spanEnd = spans[spanIndex + 2] || sourceLength;
1188
+
1189
+ var decEnd = decorations[decorationIndex + 2] || sourceLength;
1190
+
1191
+ var end = Math.min(spanEnd, decEnd);
1192
+
1193
+ var textNode = spans[spanIndex + 1];
1194
+ var styledText;
1195
+ if (textNode.nodeType !== 1 // Don't muck with <BR>s or <LI>s
1196
+ // Don't introduce spans around empty text nodes.
1197
+ && (styledText = source.substring(sourceIndex, end))) {
1198
+ // This may seem bizarre, and it is. Emitting LF on IE causes the
1199
+ // code to display with spaces instead of line breaks.
1200
+ // Emitting Windows standard issue linebreaks (CRLF) causes a blank
1201
+ // space to appear at the beginning of every line but the first.
1202
+ // Emitting an old Mac OS 9 line separator makes everything spiffy.
1203
+ if (isIE8OrEarlier) {
1204
+ styledText = styledText.replace(newlineRe, '\r');
1205
+ }
1206
+ textNode.nodeValue = styledText;
1207
+ var document = textNode.ownerDocument;
1208
+ var span = document.createElement('span');
1209
+ span.className = decorations[decorationIndex + 1];
1210
+ var parentNode = textNode.parentNode;
1211
+ parentNode.replaceChild(span, textNode);
1212
+ span.appendChild(textNode);
1213
+ if (sourceIndex < spanEnd) { // Split off a text node.
1214
+ spans[spanIndex + 1] = textNode
1215
+ // TODO: Possibly optimize by using '' if there's no flicker.
1216
+ = document.createTextNode(source.substring(end, spanEnd));
1217
+ parentNode.insertBefore(textNode, span.nextSibling);
1218
+ }
1219
+ }
1220
+
1221
+ sourceIndex = end;
1222
+
1223
+ if (sourceIndex >= spanEnd) {
1224
+ spanIndex += 2;
1225
+ }
1226
+ if (sourceIndex >= decEnd) {
1227
+ decorationIndex += 2;
1228
  }
1229
  }
1230
+ } finally {
1231
+ if (sourceNode) {
1232
+ sourceNode.style.display = oldDisplay;
 
 
 
 
 
1233
  }
1234
  }
1235
  }
1236
 
 
1237
  /** Maps language-specific file extensions to handlers. */
1238
  var langHandlerRegistry = {};
1239
  /** Register a language handler for the given file extensions.
1257
  var ext = fileExtensions[i];
1258
  if (!langHandlerRegistry.hasOwnProperty(ext)) {
1259
  langHandlerRegistry[ext] = handler;
1260
+ } else if (win['console']) {
1261
  console['warn']('cannot override language handler %s', ext);
1262
  }
1263
  }
1277
  createSimpleLexer(
1278
  [],
1279
  [
1280
+ [PR_PLAIN, /^[^<?]+/],
1281
  [PR_DECLARATION, /^<!\w[^>]*(?:>|$)/],
1282
  [PR_COMMENT, /^<\!--[\s\S]*?(?:-\->|$)/],
1283
  // Unescaped content in an unknown language
1337
  'keywords': SH_KEYWORDS,
1338
  'hashComments': true,
1339
  'multiLineStrings': true
1340
+ }), ['bash', 'bsh', 'csh', 'sh']);
1341
  registerLangHandler(sourceDecorator({
1342
  'keywords': PYTHON_KEYWORDS,
1343
  'hashComments': true,
1344
  'multiLineStrings': true,
1345
  'tripleQuotedStrings': true
1346
+ }), ['cv', 'py', 'python']);
1347
  registerLangHandler(sourceDecorator({
1348
  'keywords': PERL_KEYWORDS,
1349
  'hashComments': true,
1350
  'multiLineStrings': true,
1351
+ 'regexLiterals': 2 // multiline regex literals
1352
  }), ['perl', 'pl', 'pm']);
1353
  registerLangHandler(sourceDecorator({
1354
  'keywords': RUBY_KEYWORDS,
1355
  'hashComments': true,
1356
  'multiLineStrings': true,
1357
  'regexLiterals': true
1358
+ }), ['rb', 'ruby']);
1359
  registerLangHandler(sourceDecorator({
1360
  'keywords': JSCRIPT_KEYWORDS,
1361
  'cStyleComments': true,
1362
  'regexLiterals': true
1363
+ }), ['javascript', 'js']);
1364
  registerLangHandler(sourceDecorator({
1365
  'keywords': COFFEE_KEYWORDS,
1366
  'hashComments': 3, // ### style block comments
1369
  'tripleQuotedStrings': true,
1370
  'regexLiterals': true
1371
  }), ['coffee']);
1372
+ registerLangHandler(sourceDecorator({
1373
+ 'keywords': RUST_KEYWORDS,
1374
+ 'cStyleComments': true,
1375
+ 'multilineStrings': true
1376
+ }), ['rc', 'rs', 'rust']);
1377
+ registerLangHandler(
1378
+ createSimpleLexer([], [[PR_STRING, /^[\s\S]+/]]), ['regex']);
1379
 
1380
  function applyDecorator(job) {
1381
  var opt_langExtension = job.langExtension;
1382
 
1383
  try {
1384
  // Extract tags, and convert the source code to plain text.
1385
+ var sourceAndSpans = extractSourceSpans(job.sourceNode, job.pre);
1386
  /** Plain text. @type {string} */
1387
  var source = sourceAndSpans.sourceCode;
1388
  job.sourceCode = source;
1396
  // modifying the sourceNode in place.
1397
  recombineTagsAndDecorations(job);
1398
  } catch (e) {
1399
+ if (win['console']) {
1400
+ console['log'](e && e['stack'] || e);
1401
  }
1402
  }
1403
  }
1404
 
1405
  /**
1406
+ * Pretty print a chunk of code.
1407
  * @param sourceCodeHtml {string} The HTML to pretty print.
1408
  * @param opt_langExtension {string} The language name to use.
1409
  * Typically, a filename extension like 'cpp' or 'java'.
1410
  * @param opt_numberLines {number|boolean} True to number lines,
1411
  * or the 1-indexed number of the first line in sourceCodeHtml.
1412
  */
1413
+ function $prettyPrintOne(sourceCodeHtml, opt_langExtension, opt_numberLines) {
1414
+ var container = document.createElement('div');
1415
  // This could cause images to load and onload listeners to fire.
1416
  // E.g. <img onerror="alert(1337)" src="nosuchimage.png">.
1417
  // We assume that the inner HTML is from a trusted source.
1418
+ // The pre-tag is required for IE8 which strips newlines from innerHTML
1419
+ // when it is injected into a <pre> tag.
1420
+ // http://stackoverflow.com/questions/451486/pre-tag-loses-line-breaks-when-setting-innerhtml-in-ie
1421
+ // http://stackoverflow.com/questions/195363/inserting-a-newline-into-a-pre-tag-ie-javascript
1422
+ container.innerHTML = '<pre>' + sourceCodeHtml + '</pre>';
1423
+ container = container.firstChild;
1424
  if (opt_numberLines) {
1425
+ numberLines(container, opt_numberLines, true);
1426
  }
1427
 
1428
  var job = {
1429
  langExtension: opt_langExtension,
1430
  numberLines: opt_numberLines,
1431
+ sourceNode: container,
1432
+ pre: 1
1433
  };
1434
  applyDecorator(job);
1435
  return container.innerHTML;
1436
  }
1437
 
1438
+ /**
1439
+ * Find all the {@code <pre>} and {@code <code>} tags in the DOM with
1440
+ * {@code class=prettyprint} and prettify them.
1441
+ *
1442
+ * @param {Function} opt_whenDone called when prettifying is done.
1443
+ * @param {HTMLElement|HTMLDocument} opt_root an element or document
1444
+ * containing all the elements to pretty print.
1445
+ * Defaults to {@code document.body}.
1446
+ */
1447
+ function $prettyPrint(opt_whenDone, opt_root) {
1448
+ var root = opt_root || document.body;
1449
+ var doc = root.ownerDocument || document;
1450
+ function byTagName(tn) { return root.getElementsByTagName(tn); }
1451
  // fetch a list of nodes to rewrite
1452
  var codeSegments = [byTagName('pre'), byTagName('code'), byTagName('xmp')];
1453
  var elements = [];
1470
 
1471
  var langExtensionRe = /\blang(?:uage)?-([\w.]+)(?!\S)/;
1472
  var prettyPrintRe = /\bprettyprint\b/;
1473
+ var prettyPrintedRe = /\bprettyprinted\b/;
1474
+ var preformattedTagNameRe = /pre|xmp/i;
1475
+ var codeRe = /^code$/i;
1476
+ var preCodeXmpRe = /^(?:pre|code|xmp)$/i;
1477
+ var EMPTY = {};
1478
 
1479
  function doWork() {
1480
+ var endTime = (win['PR_SHOULD_USE_CONTINUATION'] ?
1481
  clock['now']() + 250 /* ms */ :
1482
  Infinity);
1483
  for (; k < elements.length && clock['now']() < endTime; k++) {
1484
  var cs = elements[k];
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1485
 
1486
+ // Look for a preceding comment like
1487
+ // <?prettify lang="..." linenums="..."?>
1488
+ var attrs = EMPTY;
1489
+ {
1490
+ for (var preceder = cs; (preceder = preceder.previousSibling);) {
1491
+ var nt = preceder.nodeType;
1492
+ // <?foo?> is parsed by HTML 5 to a comment node (8)
1493
+ // like <!--?foo?-->, but in XML is a processing instruction
1494
+ var value = (nt === 7 || nt === 8) && preceder.nodeValue;
1495
+ if (value
1496
+ ? !/^\??prettify\b/.test(value)
1497
+ : (nt !== 3 || /\S/.test(preceder.nodeValue))) {
1498
+ // Skip over white-space text nodes but not others.
1499
+ break;
1500
+ }
1501
+ if (value) {
1502
+ attrs = {};
1503
+ value.replace(
1504
+ /\b(\w+)=([\w:.%+-]+)/g,
1505
+ function (_, name, value) { attrs[name] = value; });
1506
+ break;
1507
+ }
1508
  }
1509
+ }
1510
+
1511
+ var className = cs.className;
1512
+ if ((attrs !== EMPTY || prettyPrintRe.test(className))
1513
+ // Don't redo this if we've already done it.
1514
+ // This allows recalling pretty print to just prettyprint elements
1515
+ // that have been added to the page since last call.
1516
+ && !prettyPrintedRe.test(className)) {
1517
 
1518
  // make sure this is not nested in an already prettified element
1519
  var nested = false;
1520
  for (var p = cs.parentNode; p; p = p.parentNode) {
1521
+ var tn = p.tagName;
1522
+ if (preCodeXmpRe.test(tn)
1523
+ && p.className && prettyPrintRe.test(p.className)) {
1524
  nested = true;
1525
  break;
1526
  }
1527
  }
1528
  if (!nested) {
1529
+ // Mark done. If we fail to prettyprint for whatever reason,
1530
+ // we shouldn't try again.
1531
+ cs.className += ' prettyprinted';
1532
+
1533
+ // If the classes includes a language extensions, use it.
1534
+ // Language extensions can be specified like
1535
+ // <pre class="prettyprint lang-cpp">
1536
+ // the language extension "cpp" is used to find a language handler
1537
+ // as passed to PR.registerLangHandler.
1538
+ // HTML5 recommends that a language be specified using "language-"
1539
+ // as the prefix instead. Google Code Prettify supports both.
1540
+ // http://dev.w3.org/html5/spec-author-view/the-code-element.html
1541
+ var langExtension = attrs['lang'];
1542
+ if (!langExtension) {
1543
+ langExtension = className.match(langExtensionRe);
1544
+ // Support <pre class="prettyprint"><code class="language-c">
1545
+ var wrapper;
1546
+ if (!langExtension && (wrapper = childContentWrapper(cs))
1547
+ && codeRe.test(wrapper.tagName)) {
1548
+ langExtension = wrapper.className.match(langExtensionRe);
1549
+ }
1550
+
1551
+ if (langExtension) { langExtension = langExtension[1]; }
1552
+ }
1553
+
1554
+ var preformatted;
1555
+ if (preformattedTagNameRe.test(cs.tagName)) {
1556
+ preformatted = 1;
1557
+ } else {
1558
+ var currentStyle = cs['currentStyle'];
1559
+ var defaultView = doc.defaultView;
1560
+ var whitespace = (
1561
+ currentStyle
1562
+ ? currentStyle['whiteSpace']
1563
+ : (defaultView
1564
+ && defaultView.getComputedStyle)
1565
+ ? defaultView.getComputedStyle(cs, null)
1566
+ .getPropertyValue('white-space')
1567
+ : 0);
1568
+ preformatted = whitespace
1569
+ && 'pre' === whitespace.substring(0, 3);
1570
+ }
1571
+
1572
  // Look for a class like linenums or linenums:<n> where <n> is the
1573
  // 1-indexed number of the first line.
1574
+ var lineNums = attrs['linenums'];
1575
+ if (!(lineNums = lineNums === 'true' || +lineNums)) {
1576
+ lineNums = className.match(/\blinenums\b(?::(\d+))?/);
1577
+ lineNums =
1578
+ lineNums
1579
+ ? lineNums[1] && lineNums[1].length
1580
+ ? +lineNums[1] : true
1581
+ : false;
1582
+ }
1583
+ if (lineNums) { numberLines(cs, lineNums, preformatted); }
1584
 
1585
  // do the pretty printing
1586
  prettyPrintingJob = {
1587
  langExtension: langExtension,
1588
  sourceNode: cs,
1589
+ numberLines: lineNums,
1590
+ pre: preformatted
1591
  };
1592
  applyDecorator(prettyPrintingJob);
1593
  }
1596
  if (k < elements.length) {
1597
  // finish up in a continuation
1598
  setTimeout(doWork, 250);
1599
+ } else if ('function' === typeof opt_whenDone) {
1600
  opt_whenDone();
1601
  }
1602
  }
1604
  doWork();
1605
  }
1606
 
1607
+ /**
1608
+ * Contains functions for creating and registering new language handlers.
1609
+ * @type {Object}
1610
+ */
1611
+ var PR = win['PR'] = {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1612
  'createSimpleLexer': createSimpleLexer,
1613
  'registerLangHandler': registerLangHandler,
1614
  'sourceDecorator': sourceDecorator,
1624
  'PR_SOURCE': PR_SOURCE,
1625
  'PR_STRING': PR_STRING,
1626
  'PR_TAG': PR_TAG,
1627
+ 'PR_TYPE': PR_TYPE,
1628
+ 'prettyPrintOne':
1629
+ IN_GLOBAL_SCOPE
1630
+ ? (win['prettyPrintOne'] = $prettyPrintOne)
1631
+ : (prettyPrintOne = $prettyPrintOne),
1632
+ 'prettyPrint': prettyPrint =
1633
+ IN_GLOBAL_SCOPE
1634
+ ? (win['prettyPrint'] = $prettyPrint)
1635
+ : (prettyPrint = $prettyPrint)
1636
  };
1637
+
1638
+ // Make PR available via the Asynchronous Module Definition (AMD) API.
1639
+ // Per https://github.com/amdjs/amdjs-api/wiki/AMD:
1640
+ // The Asynchronous Module Definition (AMD) API specifies a
1641
+ // mechanism for defining modules such that the module and its
1642
+ // dependencies can be asynchronously loaded.
1643
+ // ...
1644
+ // To allow a clear indicator that a global define function (as
1645
+ // needed for script src browser loading) conforms to the AMD API,
1646
+ // any global define function SHOULD have a property called "amd"
1647
+ // whose value is an object. This helps avoid conflict with any
1648
+ // other existing JavaScript code that could have defined a define()
1649
+ // function that does not conform to the AMD API.
1650
+ if (typeof define === "function" && define['amd']) {
1651
+ define("google-code-prettify", [], function () {
1652
+ return PR;
1653
+ });
1654
+ }
1655
  })();
libs/google-code-prettify/run_prettify.js ADDED
@@ -0,0 +1,34 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ !function(){var r=null;
2
+ (function(){function X(e){function j(){try{J.doScroll("left")}catch(e){P(j,50);return}w("poll")}function w(j){if(!(j.type=="readystatechange"&&x.readyState!="complete")&&((j.type=="load"?n:x)[z](i+j.type,w,!1),!m&&(m=!0)))e.call(n,j.type||j)}var Y=x.addEventListener,m=!1,C=!0,t=Y?"addEventListener":"attachEvent",z=Y?"removeEventListener":"detachEvent",i=Y?"":"on";if(x.readyState=="complete")e.call(n,"lazy");else{if(x.createEventObject&&J.doScroll){try{C=!n.frameElement}catch(A){}C&&j()}x[t](i+"DOMContentLoaded",
3
+ w,!1);x[t](i+"readystatechange",w,!1);n[t](i+"load",w,!1)}}function Q(){S&&X(function(){var e=K.length;$(e?function(){for(var j=0;j<e;++j)(function(e){P(function(){n.exports[K[e]].apply(n,arguments)},0)})(j)}:void 0)})}for(var n=window,P=n.setTimeout,x=document,J=x.documentElement,L=x.head||x.getElementsByTagName("head")[0]||J,z="",A=x.scripts,m=A.length;--m>=0;){var M=A[m],T=M.src.match(/^[^#?]*\/run_prettify\.js(\?[^#]*)?(?:#.*)?$/);if(T){z=T[1]||"";M.parentNode.removeChild(M);break}}var S=!0,D=
4
+ [],N=[],K=[];z.replace(/[&?]([^&=]+)=([^&]+)/g,function(e,j,w){w=decodeURIComponent(w);j=decodeURIComponent(j);j=="autorun"?S=!/^[0fn]/i.test(w):j=="lang"?D.push(w):j=="skin"?N.push(w):j=="callback"&&K.push(w)});m=0;for(z=D.length;m<z;++m)(function(){var e=x.createElement("script");e.onload=e.onerror=e.onreadystatechange=function(){if(e&&(!e.readyState||/loaded|complete/.test(e.readyState)))e.onerror=e.onload=e.onreadystatechange=r,--R,R||P(Q,0),e.parentNode&&e.parentNode.removeChild(e),e=r};e.type=
5
+ "text/javascript";e.src="https://google-code-prettify.googlecode.com/svn/loader/lang-"+encodeURIComponent(D[m])+".js";L.insertBefore(e,L.firstChild)})(D[m]);for(var R=D.length,A=[],m=0,z=N.length;m<z;++m)A.push("https://google-code-prettify.googlecode.com/svn/loader/skins/"+encodeURIComponent(N[m])+".css");A.push("https://google-code-prettify.googlecode.com/svn/loader/prettify.css");(function(e){function j(m){if(m!==w){var n=x.createElement("link");n.rel="stylesheet";n.type="text/css";if(m+1<w)n.error=
6
+ n.onerror=function(){j(m+1)};n.href=e[m];L.appendChild(n)}}var w=e.length;j(0)})(A);var $=function(){window.PR_SHOULD_USE_CONTINUATION=!0;var e;(function(){function j(a){function d(f){var b=f.charCodeAt(0);if(b!==92)return b;var a=f.charAt(1);return(b=i[a])?b:"0"<=a&&a<="7"?parseInt(f.substring(1),8):a==="u"||a==="x"?parseInt(f.substring(2),16):f.charCodeAt(1)}function h(f){if(f<32)return(f<16?"\\x0":"\\x")+f.toString(16);f=String.fromCharCode(f);return f==="\\"||f==="-"||f==="]"||f==="^"?"\\"+f:
7
+ f}function b(f){var b=f.substring(1,f.length-1).match(/\\u[\dA-Fa-f]{4}|\\x[\dA-Fa-f]{2}|\\[0-3][0-7]{0,2}|\\[0-7]{1,2}|\\[\S\s]|[^\\]/g),f=[],a=b[0]==="^",c=["["];a&&c.push("^");for(var a=a?1:0,g=b.length;a<g;++a){var k=b[a];if(/\\[bdsw]/i.test(k))c.push(k);else{var k=d(k),o;a+2<g&&"-"===b[a+1]?(o=d(b[a+2]),a+=2):o=k;f.push([k,o]);o<65||k>122||(o<65||k>90||f.push([Math.max(65,k)|32,Math.min(o,90)|32]),o<97||k>122||f.push([Math.max(97,k)&-33,Math.min(o,122)&-33]))}}f.sort(function(f,a){return f[0]-
8
+ a[0]||a[1]-f[1]});b=[];g=[];for(a=0;a<f.length;++a)k=f[a],k[0]<=g[1]+1?g[1]=Math.max(g[1],k[1]):b.push(g=k);for(a=0;a<b.length;++a)k=b[a],c.push(h(k[0])),k[1]>k[0]&&(k[1]+1>k[0]&&c.push("-"),c.push(h(k[1])));c.push("]");return c.join("")}function e(f){for(var a=f.source.match(/\[(?:[^\\\]]|\\[\S\s])*]|\\u[\dA-Fa-f]{4}|\\x[\dA-Fa-f]{2}|\\\d+|\\[^\dux]|\(\?[!:=]|[()^]|[^()[\\^]+/g),c=a.length,d=[],g=0,k=0;g<c;++g){var o=a[g];o==="("?++k:"\\"===o.charAt(0)&&(o=+o.substring(1))&&(o<=k?d[o]=-1:a[g]=h(o))}for(g=
9
+ 1;g<d.length;++g)-1===d[g]&&(d[g]=++j);for(k=g=0;g<c;++g)o=a[g],o==="("?(++k,d[k]||(a[g]="(?:")):"\\"===o.charAt(0)&&(o=+o.substring(1))&&o<=k&&(a[g]="\\"+d[o]);for(g=0;g<c;++g)"^"===a[g]&&"^"!==a[g+1]&&(a[g]="");if(f.ignoreCase&&F)for(g=0;g<c;++g)o=a[g],f=o.charAt(0),o.length>=2&&f==="["?a[g]=b(o):f!=="\\"&&(a[g]=o.replace(/[A-Za-z]/g,function(a){a=a.charCodeAt(0);return"["+String.fromCharCode(a&-33,a|32)+"]"}));return a.join("")}for(var j=0,F=!1,l=!1,I=0,c=a.length;I<c;++I){var p=a[I];if(p.ignoreCase)l=
10
+ !0;else if(/[a-z]/i.test(p.source.replace(/\\u[\da-f]{4}|\\x[\da-f]{2}|\\[^UXux]/gi,""))){F=!0;l=!1;break}}for(var i={b:8,t:9,n:10,v:11,f:12,r:13},q=[],I=0,c=a.length;I<c;++I){p=a[I];if(p.global||p.multiline)throw Error(""+p);q.push("(?:"+e(p)+")")}return RegExp(q.join("|"),l?"gi":"g")}function m(a,d){function h(a){var c=a.nodeType;if(c==1){if(!b.test(a.className)){for(c=a.firstChild;c;c=c.nextSibling)h(c);c=a.nodeName.toLowerCase();if("br"===c||"li"===c)e[l]="\n",F[l<<1]=j++,F[l++<<1|1]=a}}else if(c==
11
+ 3||c==4)c=a.nodeValue,c.length&&(c=d?c.replace(/\r\n?/g,"\n"):c.replace(/[\t\n\r ]+/g," "),e[l]=c,F[l<<1]=j,j+=c.length,F[l++<<1|1]=a)}var b=/(?:^|\s)nocode(?:\s|$)/,e=[],j=0,F=[],l=0;h(a);return{a:e.join("").replace(/\n$/,""),d:F}}function n(a,d,h,b){d&&(a={a:d,e:a},h(a),b.push.apply(b,a.g))}function x(a){for(var d=void 0,h=a.firstChild;h;h=h.nextSibling)var b=h.nodeType,d=b===1?d?a:h:b===3?S.test(h.nodeValue)?a:d:d;return d===a?void 0:d}function C(a,d){function h(a){for(var l=a.e,j=[l,"pln"],c=
12
+ 0,p=a.a.match(e)||[],m={},q=0,f=p.length;q<f;++q){var B=p[q],y=m[B],u=void 0,g;if(typeof y==="string")g=!1;else{var k=b[B.charAt(0)];if(k)u=B.match(k[1]),y=k[0];else{for(g=0;g<i;++g)if(k=d[g],u=B.match(k[1])){y=k[0];break}u||(y="pln")}if((g=y.length>=5&&"lang-"===y.substring(0,5))&&!(u&&typeof u[1]==="string"))g=!1,y="src";g||(m[B]=y)}k=c;c+=B.length;if(g){g=u[1];var o=B.indexOf(g),H=o+g.length;u[2]&&(H=B.length-u[2].length,o=H-g.length);y=y.substring(5);n(l+k,B.substring(0,o),h,j);n(l+k+o,g,A(y,
13
+ g),j);n(l+k+H,B.substring(H),h,j)}else j.push(l+k,y)}a.g=j}var b={},e;(function(){for(var h=a.concat(d),l=[],i={},c=0,p=h.length;c<p;++c){var m=h[c],q=m[3];if(q)for(var f=q.length;--f>=0;)b[q.charAt(f)]=m;m=m[1];q=""+m;i.hasOwnProperty(q)||(l.push(m),i[q]=r)}l.push(/[\S\s]/);e=j(l)})();var i=d.length;return h}function t(a){var d=[],h=[];a.tripleQuotedStrings?d.push(["str",/^(?:'''(?:[^'\\]|\\[\S\s]|''?(?=[^']))*(?:'''|$)|"""(?:[^"\\]|\\[\S\s]|""?(?=[^"]))*(?:"""|$)|'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$))/,
14
+ r,"'\""]):a.multiLineStrings?d.push(["str",/^(?:'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$)|`(?:[^\\`]|\\[\S\s])*(?:`|$))/,r,"'\"`"]):d.push(["str",/^(?:'(?:[^\n\r'\\]|\\.)*(?:'|$)|"(?:[^\n\r"\\]|\\.)*(?:"|$))/,r,"\"'"]);a.verbatimStrings&&h.push(["str",/^@"(?:[^"]|"")*(?:"|$)/,r]);var b=a.hashComments;b&&(a.cStyleComments?(b>1?d.push(["com",/^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/,r,"#"]):d.push(["com",/^#(?:(?:define|e(?:l|nd)if|else|error|ifn?def|include|line|pragma|undef|warning)\b|[^\n\r]*)/,
15
+ r,"#"]),h.push(["str",/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h(?:h|pp|\+\+)?|[a-z]\w*)>/,r])):d.push(["com",/^#[^\n\r]*/,r,"#"]));a.cStyleComments&&(h.push(["com",/^\/\/[^\n\r]*/,r]),h.push(["com",/^\/\*[\S\s]*?(?:\*\/|$)/,r]));if(b=a.regexLiterals){var e=(b=b>1?"":"\n\r")?".":"[\\S\\s]";h.push(["lang-regex",RegExp("^(?:^^\\.?|[+-]|[!=]=?=?|\\#|%=?|&&?=?|\\(|\\*=?|[+\\-]=|->|\\/=?|::?|<<?=?|>>?>?=?|,|;|\\?|@|\\[|~|{|\\^\\^?=?|\\|\\|?=?|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\\s*("+
16
+ ("/(?=[^/*"+b+"])(?:[^/\\x5B\\x5C"+b+"]|\\x5C"+e+"|\\x5B(?:[^\\x5C\\x5D"+b+"]|\\x5C"+e+")*(?:\\x5D|$))+/")+")")])}(b=a.types)&&h.push(["typ",b]);b=(""+a.keywords).replace(/^ | $/g,"");b.length&&h.push(["kwd",RegExp("^(?:"+b.replace(/[\s,]+/g,"|")+")\\b"),r]);d.push(["pln",/^\s+/,r," \r\n\t\u00a0"]);b="^.[^\\s\\w.$@'\"`/\\\\]*";a.regexLiterals&&(b+="(?!s*/)");h.push(["lit",/^@[$_a-z][\w$@]*/i,r],["typ",/^(?:[@_]?[A-Z]+[a-z][\w$@]*|\w+_t\b)/,r],["pln",/^[$_a-z][\w$@]*/i,r],["lit",/^(?:0x[\da-f]+|(?:\d(?:_\d+)*\d*(?:\.\d*)?|\.\d\+)(?:e[+-]?\d+)?)[a-z]*/i,
17
+ r,"0123456789"],["pln",/^\\[\S\s]?/,r],["pun",RegExp(b),r]);return C(d,h)}function z(a,d,h){function b(a){var c=a.nodeType;if(c==1&&!j.test(a.className))if("br"===a.nodeName)e(a),a.parentNode&&a.parentNode.removeChild(a);else for(a=a.firstChild;a;a=a.nextSibling)b(a);else if((c==3||c==4)&&h){var d=a.nodeValue,i=d.match(m);if(i)c=d.substring(0,i.index),a.nodeValue=c,(d=d.substring(i.index+i[0].length))&&a.parentNode.insertBefore(l.createTextNode(d),a.nextSibling),e(a),c||a.parentNode.removeChild(a)}}
18
+ function e(a){function b(a,c){var d=c?a.cloneNode(!1):a,f=a.parentNode;if(f){var f=b(f,1),h=a.nextSibling;f.appendChild(d);for(var e=h;e;e=h)h=e.nextSibling,f.appendChild(e)}return d}for(;!a.nextSibling;)if(a=a.parentNode,!a)return;for(var a=b(a.nextSibling,0),d;(d=a.parentNode)&&d.nodeType===1;)a=d;c.push(a)}for(var j=/(?:^|\s)nocode(?:\s|$)/,m=/\r\n?|\n/,l=a.ownerDocument,i=l.createElement("li");a.firstChild;)i.appendChild(a.firstChild);for(var c=[i],p=0;p<c.length;++p)b(c[p]);d===(d|0)&&c[0].setAttribute("value",
19
+ d);var n=l.createElement("ol");n.className="linenums";for(var d=Math.max(0,d-1|0)||0,p=0,q=c.length;p<q;++p)i=c[p],i.className="L"+(p+d)%10,i.firstChild||i.appendChild(l.createTextNode("\u00a0")),n.appendChild(i);a.appendChild(n)}function i(a,d){for(var h=d.length;--h>=0;){var b=d[h];U.hasOwnProperty(b)?V.console&&console.warn("cannot override language handler %s",b):U[b]=a}}function A(a,d){if(!a||!U.hasOwnProperty(a))a=/^\s*</.test(d)?"default-markup":"default-code";return U[a]}function D(a){var d=
20
+ a.h;try{var h=m(a.c,a.i),b=h.a;a.a=b;a.d=h.d;a.e=0;A(d,b)(a);var e=/\bMSIE\s(\d+)/.exec(navigator.userAgent),e=e&&+e[1]<=8,d=/\n/g,i=a.a,j=i.length,h=0,l=a.d,n=l.length,b=0,c=a.g,p=c.length,t=0;c[p]=j;var q,f;for(f=q=0;f<p;)c[f]!==c[f+2]?(c[q++]=c[f++],c[q++]=c[f++]):f+=2;p=q;for(f=q=0;f<p;){for(var x=c[f],y=c[f+1],u=f+2;u+2<=p&&c[u+1]===y;)u+=2;c[q++]=x;c[q++]=y;f=u}c.length=q;var g=a.c,k;if(g)k=g.style.display,g.style.display="none";try{for(;b<n;){var o=l[b+2]||j,H=c[t+2]||j,u=Math.min(o,H),E=l[b+
21
+ 1],W;if(E.nodeType!==1&&(W=i.substring(h,u))){e&&(W=W.replace(d,"\r"));E.nodeValue=W;var Z=E.ownerDocument,s=Z.createElement("span");s.className=c[t+1];var z=E.parentNode;z.replaceChild(s,E);s.appendChild(E);h<o&&(l[b+1]=E=Z.createTextNode(i.substring(u,o)),z.insertBefore(E,s.nextSibling))}h=u;h>=o&&(b+=2);h>=H&&(t+=2)}}finally{if(g)g.style.display=k}}catch(v){V.console&&console.log(v&&v.stack||v)}}var V=window,G=["break,continue,do,else,for,if,return,while"],O=[[G,"auto,case,char,const,default,double,enum,extern,float,goto,inline,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"],
22
+ "catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof"],J=[O,"alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,delegate,dynamic_cast,explicit,export,friend,generic,late_check,mutable,namespace,nullptr,property,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where"],K=[O,"abstract,assert,boolean,byte,extends,final,finally,implements,import,instanceof,interface,null,native,package,strictfp,super,synchronized,throws,transient"],
23
+ L=[K,"as,base,by,checked,decimal,delegate,descending,dynamic,event,fixed,foreach,from,group,implicit,in,internal,into,is,let,lock,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var,virtual,where"],O=[O,"debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN"],M=[G,"and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None"],
24
+ N=[G,"alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END"],R=[G,"as,assert,const,copy,drop,enum,extern,fail,false,fn,impl,let,log,loop,match,mod,move,mut,priv,pub,pure,ref,self,static,struct,true,trait,type,unsafe,use"],G=[G,"case,done,elif,esac,eval,fi,function,in,local,set,then,until"],Q=/^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)\b/,
25
+ S=/\S/,T=t({keywords:[J,L,O,"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END",M,N,G],hashComments:!0,cStyleComments:!0,multiLineStrings:!0,regexLiterals:!0}),U={};i(T,["default-code"]);i(C([],[["pln",/^[^<?]+/],["dec",/^<!\w[^>]*(?:>|$)/],["com",/^<\!--[\S\s]*?(?:--\>|$)/],["lang-",/^<\?([\S\s]+?)(?:\?>|$)/],["lang-",/^<%([\S\s]+?)(?:%>|$)/],["pun",/^(?:<[%?]|[%?]>)/],["lang-",
26
+ /^<xmp\b[^>]*>([\S\s]+?)<\/xmp\b[^>]*>/i],["lang-js",/^<script\b[^>]*>([\S\s]*?)(<\/script\b[^>]*>)/i],["lang-css",/^<style\b[^>]*>([\S\s]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i]]),["default-markup","htm","html","mxml","xhtml","xml","xsl"]);i(C([["pln",/^\s+/,r," \t\r\n"],["atv",/^(?:"[^"]*"?|'[^']*'?)/,r,"\"'"]],[["tag",/^^<\/?[a-z](?:[\w-.:]*\w)?|\/?>$/i],["atn",/^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],["lang-uq.val",/^=\s*([^\s"'>]*(?:[^\s"'/>]|\/(?=\s)))/],["pun",/^[/<->]+/],
27
+ ["lang-js",/^on\w+\s*=\s*"([^"]+)"/i],["lang-js",/^on\w+\s*=\s*'([^']+)'/i],["lang-js",/^on\w+\s*=\s*([^\s"'>]+)/i],["lang-css",/^style\s*=\s*"([^"]+)"/i],["lang-css",/^style\s*=\s*'([^']+)'/i],["lang-css",/^style\s*=\s*([^\s"'>]+)/i]]),["in.tag"]);i(C([],[["atv",/^[\S\s]+/]]),["uq.val"]);i(t({keywords:J,hashComments:!0,cStyleComments:!0,types:Q}),["c","cc","cpp","cxx","cyc","m"]);i(t({keywords:"null,true,false"}),["json"]);i(t({keywords:L,hashComments:!0,cStyleComments:!0,verbatimStrings:!0,types:Q}),
28
+ ["cs"]);i(t({keywords:K,cStyleComments:!0}),["java"]);i(t({keywords:G,hashComments:!0,multiLineStrings:!0}),["bash","bsh","csh","sh"]);i(t({keywords:M,hashComments:!0,multiLineStrings:!0,tripleQuotedStrings:!0}),["cv","py","python"]);i(t({keywords:"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END",hashComments:!0,multiLineStrings:!0,regexLiterals:2}),["perl","pl","pm"]);i(t({keywords:N,
29
+ hashComments:!0,multiLineStrings:!0,regexLiterals:!0}),["rb","ruby"]);i(t({keywords:O,cStyleComments:!0,regexLiterals:!0}),["javascript","js"]);i(t({keywords:"all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,throw,true,try,unless,until,when,while,yes",hashComments:3,cStyleComments:!0,multilineStrings:!0,tripleQuotedStrings:!0,regexLiterals:!0}),["coffee"]);i(t({keywords:R,cStyleComments:!0,multilineStrings:!0}),["rc","rs","rust"]);
30
+ i(C([],[["str",/^[\S\s]+/]]),["regex"]);var X=V.PR={createSimpleLexer:C,registerLangHandler:i,sourceDecorator:t,PR_ATTRIB_NAME:"atn",PR_ATTRIB_VALUE:"atv",PR_COMMENT:"com",PR_DECLARATION:"dec",PR_KEYWORD:"kwd",PR_LITERAL:"lit",PR_NOCODE:"nocode",PR_PLAIN:"pln",PR_PUNCTUATION:"pun",PR_SOURCE:"src",PR_STRING:"str",PR_TAG:"tag",PR_TYPE:"typ",prettyPrintOne:function(a,d,e){var b=document.createElement("div");b.innerHTML="<pre>"+a+"</pre>";b=b.firstChild;e&&z(b,e,!0);D({h:d,j:e,c:b,i:1});return b.innerHTML},
31
+ prettyPrint:e=e=function(a,d){function e(){for(var b=V.PR_SHOULD_USE_CONTINUATION?c.now()+250:Infinity;p<j.length&&c.now()<b;p++){for(var d=j[p],m=k,l=d;l=l.previousSibling;){var n=l.nodeType,s=(n===7||n===8)&&l.nodeValue;if(s?!/^\??prettify\b/.test(s):n!==3||/\S/.test(l.nodeValue))break;if(s){m={};s.replace(/\b(\w+)=([\w%+\-.:]+)/g,function(a,b,c){m[b]=c});break}}l=d.className;if((m!==k||f.test(l))&&!w.test(l)){n=!1;for(s=d.parentNode;s;s=s.parentNode)if(g.test(s.tagName)&&s.className&&f.test(s.className)){n=
32
+ !0;break}if(!n){d.className+=" prettyprinted";n=m.lang;if(!n){var n=l.match(q),A;if(!n&&(A=x(d))&&u.test(A.tagName))n=A.className.match(q);n&&(n=n[1])}if(y.test(d.tagName))s=1;else var s=d.currentStyle,v=i.defaultView,s=(s=s?s.whiteSpace:v&&v.getComputedStyle?v.getComputedStyle(d,r).getPropertyValue("white-space"):0)&&"pre"===s.substring(0,3);v=m.linenums;if(!(v=v==="true"||+v))v=(v=l.match(/\blinenums\b(?::(\d+))?/))?v[1]&&v[1].length?+v[1]:!0:!1;v&&z(d,v,s);t={h:n,c:d,j:v,i:s};D(t)}}}p<j.length?
33
+ P(e,250):"function"===typeof a&&a()}for(var b=d||document.body,i=b.ownerDocument||document,b=[b.getElementsByTagName("pre"),b.getElementsByTagName("code"),b.getElementsByTagName("xmp")],j=[],m=0;m<b.length;++m)for(var l=0,n=b[m].length;l<n;++l)j.push(b[m][l]);var b=r,c=Date;c.now||(c={now:function(){return+new Date}});var p=0,t,q=/\blang(?:uage)?-([\w.]+)(?!\S)/,f=/\bprettyprint\b/,w=/\bprettyprinted\b/,y=/pre|xmp/i,u=/^code$/i,g=/^(?:pre|code|xmp)$/i,k={};e()}};typeof define==="function"&&define.amd&&
34
+ define("google-code-prettify",[],function(){return X})})();return e}();R||P(Q,0)})();}()
libs/phpQuery.php ADDED
@@ -0,0 +1,5702 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * phpQuery is a server-side, chainable, CSS3 selector driven
4
+ * Document Object Model (DOM) API based on jQuery JavaScript Library.
5
+ *
6
+ * @version 0.9.5
7
+ * @link http://code.google.com/p/phpquery/
8
+ * @link http://phpquery-library.blogspot.com/
9
+ * @link http://jquery.com/
10
+ * @author Tobiasz Cudnik <tobiasz.cudnik/gmail.com>
11
+ * @license http://www.opensource.org/licenses/mit-license.php MIT License
12
+ * @package phpQuery
13
+ */
14
+
15
+ // class names for instanceof
16
+ // TODO move them as class constants into phpQuery
17
+ define('DOMDOCUMENT', 'DOMDocument');
18
+ define('DOMELEMENT', 'DOMElement');
19
+ define('DOMNODELIST', 'DOMNodeList');
20
+ define('DOMNODE', 'DOMNode');
21
+
22
+ /**
23
+ * DOMEvent class.
24
+ *
25
+ * Based on
26
+ * @link http://developer.mozilla.org/En/DOM:event
27
+ * @author Tobiasz Cudnik <tobiasz.cudnik/gmail.com>
28
+ * @package phpQuery
29
+ * @todo implement ArrayAccess ?
30
+ */
31
+ class DOMEvent {
32
+ /**
33
+ * Returns a boolean indicating whether the event bubbles up through the DOM or not.
34
+ *
35
+ * @var unknown_type
36
+ */
37
+ public $bubbles = true;
38
+ /**
39
+ * Returns a boolean indicating whether the event is cancelable.
40
+ *
41
+ * @var unknown_type
42
+ */
43
+ public $cancelable = true;
44
+ /**
45
+ * Returns a reference to the currently registered target for the event.
46
+ *
47
+ * @var unknown_type
48
+ */
49
+ public $currentTarget;
50
+ /**
51
+ * Returns detail about the event, depending on the type of event.
52
+ *
53
+ * @var unknown_type
54
+ * @link http://developer.mozilla.org/en/DOM/event.detail
55
+ */
56
+ public $detail; // ???
57
+ /**
58
+ * Used to indicate which phase of the event flow is currently being evaluated.
59
+ *
60
+ * NOT IMPLEMENTED
61
+ *
62
+ * @var unknown_type
63
+ * @link http://developer.mozilla.org/en/DOM/event.eventPhase
64
+ */
65
+ public $eventPhase; // ???
66
+ /**
67
+ * The explicit original target of the event (Mozilla-specific).
68
+ *
69
+ * NOT IMPLEMENTED
70
+ *
71
+ * @var unknown_type
72
+ */
73
+ public $explicitOriginalTarget; // moz only
74
+ /**
75
+ * The original target of the event, before any retargetings (Mozilla-specific).
76
+ *
77
+ * NOT IMPLEMENTED
78
+ *
79
+ * @var unknown_type
80
+ */
81
+ public $originalTarget; // moz only
82
+ /**
83
+ * Identifies a secondary target for the event.
84
+ *
85
+ * @var unknown_type
86
+ */
87
+ public $relatedTarget;
88
+ /**
89
+ * Returns a reference to the target to which the event was originally dispatched.
90
+ *
91
+ * @var unknown_type
92
+ */
93
+ public $target;
94
+ /**
95
+ * Returns the time that the event was created.
96
+ *
97
+ * @var unknown_type
98
+ */
99
+ public $timeStamp;
100
+ /**
101
+ * Returns the name of the event (case-insensitive).
102
+ */
103
+ public $type;
104
+ public $runDefault = true;
105
+ public $data = null;
106
+ public function __construct($data) {
107
+ foreach($data as $k => $v) {
108
+ $this->$k = $v;
109
+ }
110
+ if (! $this->timeStamp)
111
+ $this->timeStamp = time();
112
+ }
113
+ /**
114
+ * Cancels the event (if it is cancelable).
115
+ *
116
+ */
117
+ public function preventDefault() {
118
+ $this->runDefault = false;
119
+ }
120
+ /**
121
+ * Stops the propagation of events further along in the DOM.
122
+ *
123
+ */
124
+ public function stopPropagation() {
125
+ $this->bubbles = false;
126
+ }
127
+ }
128
+
129
+
130
+ /**
131
+ * DOMDocumentWrapper class simplifies work with DOMDocument.
132
+ *
133
+ * Know bug:
134
+ * - in XHTML fragments, <br /> changes to <br clear="none" />
135
+ *
136
+ * @todo check XML catalogs compatibility
137
+ * @author Tobiasz Cudnik <tobiasz.cudnik/gmail.com>
138
+ * @package phpQuery
139
+ */
140
+ class DOMDocumentWrapper {
141
+ /**
142
+ * @var DOMDocument
143
+ */
144
+ public $document;
145
+ public $id;
146
+ /**
147
+ * @todo Rewrite as method and quess if null.
148
+ * @var unknown_type
149
+ */
150
+ public $contentType = '';
151
+ public $xpath;
152
+ public $uuid = 0;
153
+ public $data = array();
154
+ public $dataNodes = array();
155
+ public $events = array();
156
+ public $eventsNodes = array();
157
+ public $eventsGlobal = array();
158
+ /**
159
+ * @TODO iframes support http://code.google.com/p/phpquery/issues/detail?id=28
160
+ * @var unknown_type
161
+ */
162
+ public $frames = array();
163
+ /**
164
+ * Document root, by default equals to document itself.
165
+ * Used by documentFragments.
166
+ *
167
+ * @var DOMNode
168
+ */
169
+ public $root;
170
+ public $isDocumentFragment;
171
+ public $isXML = false;
172
+ public $isXHTML = false;
173
+ public $isHTML = false;
174
+ public $charset;
175
+ public function __construct($markup = null, $contentType = null, $newDocumentID = null) {
176
+ if (isset($markup))
177
+ $this->load($markup, $contentType, $newDocumentID);
178
+ $this->id = $newDocumentID
179
+ ? $newDocumentID
180
+ : md5(microtime());
181
+ }
182
+ public function load($markup, $contentType = null, $newDocumentID = null) {
183
+ // phpQuery::$documents[$id] = $this;
184
+ $this->contentType = strtolower($contentType);
185
+ if ($markup instanceof DOMDOCUMENT) {
186
+ $this->document = $markup;
187
+ $this->root = $this->document;
188
+ $this->charset = $this->document->encoding;
189
+ // TODO isDocumentFragment
190
+ } else {
191
+ $loaded = $this->loadMarkup($markup);
192
+ }
193
+ if ($loaded) {
194
+ // $this->document->formatOutput = true;
195
+ $this->document->preserveWhiteSpace = true;
196
+ $this->xpath = new DOMXPath($this->document);
197
+ $this->afterMarkupLoad();
198
+ return true;
199
+ // remember last loaded document
200
+ // return phpQuery::selectDocument($id);
201
+ }
202
+ return false;
203
+ }
204
+ protected function afterMarkupLoad() {
205
+ if ($this->isXHTML) {
206
+ $this->xpath->registerNamespace("html", "http://www.w3.org/1999/xhtml");
207
+ }
208
+ }
209
+ protected function loadMarkup($markup) {
210
+ $loaded = false;
211
+ if ($this->contentType) {
212
+ self::debug("Load markup for content type {$this->contentType}");
213
+ // content determined by contentType
214
+ list($contentType, $charset) = $this->contentTypeToArray($this->contentType);
215
+ switch($contentType) {
216
+ case 'text/html':
217
+ phpQuery::debug("Loading HTML, content type '{$this->contentType}'");
218
+ $loaded = $this->loadMarkupHTML($markup, $charset);
219
+ break;
220
+ case 'text/xml':
221
+ case 'application/xhtml+xml':
222
+ phpQuery::debug("Loading XML, content type '{$this->contentType}'");
223
+ $loaded = $this->loadMarkupXML($markup, $charset);
224
+ break;
225
+ default:
226
+ // for feeds or anything that sometimes doesn't use text/xml
227
+ if (strpos('xml', $this->contentType) !== false) {
228
+ phpQuery::debug("Loading XML, content type '{$this->contentType}'");
229
+ $loaded = $this->loadMarkupXML($markup, $charset);
230
+ } else
231
+ phpQuery::debug("Could not determine document type from content type '{$this->contentType}'");
232
+ }
233
+ } else {
234
+ // content type autodetection
235
+ if ($this->isXML($markup)) {
236
+ phpQuery::debug("Loading XML, isXML() == true");
237
+ $loaded = $this->loadMarkupXML($markup);
238
+ if (! $loaded && $this->isXHTML) {
239
+ phpQuery::debug('Loading as XML failed, trying to load as HTML, isXHTML == true');
240
+ $loaded = $this->loadMarkupHTML($markup);
241
+ }
242
+ } else {
243
+ phpQuery::debug("Loading HTML, isXML() == false");
244
+ $loaded = $this->loadMarkupHTML($markup);
245
+ }
246
+ }
247
+ return $loaded;
248
+ }
249
+ protected function loadMarkupReset() {
250
+ $this->isXML = $this->isXHTML = $this->isHTML = false;
251
+ }
252
+ protected function documentCreate($charset, $version = '1.0') {
253
+ if (! $version)
254
+ $version = '1.0';
255
+ $this->document = new DOMDocument($version, $charset);
256
+ $this->charset = $this->document->encoding;
257
+ // $this->document->encoding = $charset;
258
+ $this->document->formatOutput = true;
259
+ $this->document->preserveWhiteSpace = true;
260
+ }
261
+ protected function loadMarkupHTML($markup, $requestedCharset = null) {
262
+ if (phpQuery::$debug)
263
+ phpQuery::debug('Full markup load (HTML): '.substr($markup, 0, 250));
264
+ $this->loadMarkupReset();
265
+ $this->isHTML = true;
266
+ if (!isset($this->isDocumentFragment))
267
+ $this->isDocumentFragment = self::isDocumentFragmentHTML($markup);
268
+ $charset = null;
269
+ $documentCharset = $this->charsetFromHTML($markup);
270
+ $addDocumentCharset = false;
271
+ if ($documentCharset) {
272
+ $charset = $documentCharset;
273
+ $markup = $this->charsetFixHTML($markup);
274
+ } else if ($requestedCharset) {
275
+ $charset = $requestedCharset;
276
+ }
277
+ if (! $charset)
278
+ $charset = phpQuery::$defaultCharset;
279
+ // HTTP 1.1 says that the default charset is ISO-8859-1
280
+ // @see http://www.w3.org/International/O-HTTP-charset
281
+ if (! $documentCharset) {
282
+ $documentCharset = 'ISO-8859-1';
283
+ $addDocumentCharset = true;
284
+ }
285
+ // Should be careful here, still need 'magic encoding detection' since lots of pages have other 'default encoding'
286
+ // Worse, some pages can have mixed encodings... we'll try not to worry about that
287
+ $requestedCharset = strtoupper($requestedCharset);
288
+ $documentCharset = strtoupper($documentCharset);
289
+ phpQuery::debug("DOC: $documentCharset REQ: $requestedCharset");
290
+ if ($requestedCharset && $documentCharset && $requestedCharset !== $documentCharset) {
291
+ phpQuery::debug("CHARSET CONVERT");
292
+ // Document Encoding Conversion
293
+ // http://code.google.com/p/phpquery/issues/detail?id=86
294
+ if (function_exists('mb_detect_encoding')) {
295
+ $possibleCharsets = array($documentCharset, $requestedCharset, 'AUTO');
296
+ $docEncoding = mb_detect_encoding($markup, implode(', ', $possibleCharsets));
297
+ if (! $docEncoding)
298
+ $docEncoding = $documentCharset; // ok trust the document
299
+ phpQuery::debug("DETECTED '$docEncoding'");
300
+ // Detected does not match what document says...
301
+ if ($docEncoding !== $documentCharset) {
302
+ // Tricky..
303
+ }
304
+ if ($docEncoding !== $requestedCharset) {
305
+ phpQuery::debug("CONVERT $docEncoding => $requestedCharset");
306
+ $markup = mb_convert_encoding($markup, $requestedCharset, $docEncoding);
307
+ $markup = $this->charsetAppendToHTML($markup, $requestedCharset);
308
+ $charset = $requestedCharset;
309
+ }
310
+ } else {
311
+ phpQuery::debug("TODO: charset conversion without mbstring...");
312
+ }
313
+ }
314
+ $return = false;
315
+ if ($this->isDocumentFragment) {
316
+ phpQuery::debug("Full markup load (HTML), DocumentFragment detected, using charset '$charset'");
317
+ $return = $this->documentFragmentLoadMarkup($this, $charset, $markup);
318
+ } else {
319
+ if ($addDocumentCharset) {
320
+ phpQuery::debug("Full markup load (HTML), appending charset: '$charset'");
321
+ $markup = $this->charsetAppendToHTML($markup, $charset);
322
+ }
323
+ phpQuery::debug("Full markup load (HTML), documentCreate('$charset')");
324
+ $this->documentCreate($charset);
325
+ $return = phpQuery::$debug === 2
326
+ ? $this->document->loadHTML($markup)
327
+ : @$this->document->loadHTML($markup);
328
+ if ($return)
329
+ $this->root = $this->document;
330
+ }
331
+ if ($return && ! $this->contentType)
332
+ $this->contentType = 'text/html';
333
+ return $return;
334
+ }
335
+ protected function loadMarkupXML($markup, $requestedCharset = null) {
336
+ if (phpQuery::$debug)
337
+ phpQuery::debug('Full markup load (XML): '.substr($markup, 0, 250));
338
+ $this->loadMarkupReset();
339
+ $this->isXML = true;
340
+ // check agains XHTML in contentType or markup
341
+ $isContentTypeXHTML = $this->isXHTML();
342
+ $isMarkupXHTML = $this->isXHTML($markup);
343
+ if ($isContentTypeXHTML || $isMarkupXHTML) {
344
+ self::debug('Full markup load (XML), XHTML detected');
345
+ $this->isXHTML = true;
346
+ }
347
+ // determine document fragment
348
+ if (! isset($this->isDocumentFragment))
349
+ $this->isDocumentFragment = $this->isXHTML
350
+ ? self::isDocumentFragmentXHTML($markup)
351
+ : self::isDocumentFragmentXML($markup);
352
+ // this charset will be used
353
+ $charset = null;
354
+ // charset from XML declaration @var string
355
+ $documentCharset = $this->charsetFromXML($markup);
356
+ if (! $documentCharset) {
357
+ if ($this->isXHTML) {
358
+ // this is XHTML, try to get charset from content-type meta header
359
+ $documentCharset = $this->charsetFromHTML($markup);
360
+ if ($documentCharset) {
361
+ phpQuery::debug("Full markup load (XML), appending XHTML charset '$documentCharset'");
362
+ $this->charsetAppendToXML($markup, $documentCharset);
363
+ $charset = $documentCharset;
364
+ }
365
+ }
366
+ if (! $documentCharset) {
367
+ // if still no document charset...
368
+ $charset = $requestedCharset;
369
+ }
370
+ } else if ($requestedCharset) {
371
+ $charset = $requestedCharset;
372
+ }
373
+ if (! $charset) {
374
+ $charset = phpQuery::$defaultCharset;
375
+ }
376
+ if ($requestedCharset && $documentCharset && $requestedCharset != $documentCharset) {
377
+ // TODO place for charset conversion
378
+ // $charset = $requestedCharset;
379
+ }
380
+ $return = false;
381
+ if ($this->isDocumentFragment) {
382
+ phpQuery::debug("Full markup load (XML), DocumentFragment detected, using charset '$charset'");
383
+ $return = $this->documentFragmentLoadMarkup($this, $charset, $markup);
384
+ } else {
385
+ // FIXME ???
386
+ if ($isContentTypeXHTML && ! $isMarkupXHTML)
387
+ if (! $documentCharset) {
388
+ phpQuery::debug("Full markup load (XML), appending charset '$charset'");
389
+ $markup = $this->charsetAppendToXML($markup, $charset);
390
+ }
391
+ // see http://pl2.php.net/manual/en/book.dom.php#78929
392
+ // LIBXML_DTDLOAD (>= PHP 5.1)
393
+ // does XML ctalogues works with LIBXML_NONET
394
+ // $this->document->resolveExternals = true;
395
+ // TODO test LIBXML_COMPACT for performance improvement
396
+ // create document
397
+ $this->documentCreate($charset);
398
+ if (phpversion() < 5.1) {
399
+ $this->document->resolveExternals = true;
400
+ $return = phpQuery::$debug === 2
401
+ ? $this->document->loadXML($markup)
402
+ : @$this->document->loadXML($markup);
403
+ } else {
404
+ /** @link http://pl2.php.net/manual/en/libxml.constants.php */
405
+ $libxmlStatic = phpQuery::$debug === 2
406
+ ? LIBXML_DTDLOAD|LIBXML_DTDATTR|LIBXML_NONET
407
+ : LIBXML_DTDLOAD|LIBXML_DTDATTR|LIBXML_NONET|LIBXML_NOWARNING|LIBXML_NOERROR;
408
+ $return = $this->document->loadXML($markup, $libxmlStatic);
409
+ // if (! $return)
410
+ // $return = $this->document->loadHTML($markup);
411
+ }
412
+ if ($return)
413
+ $this->root = $this->document;
414
+ }
415
+ if ($return) {
416
+ if (! $this->contentType) {
417
+ if ($this->isXHTML)
418
+ $this->contentType = 'application/xhtml+xml';
419
+ else
420
+ $this->contentType = 'text/xml';
421
+ }
422
+ return $return;
423
+ } else {
424
+ throw new Exception("Error loading XML markup");
425
+ }
426
+ }
427
+ protected function isXHTML($markup = null) {
428
+ if (! isset($markup)) {
429
+ return strpos($this->contentType, 'xhtml') !== false;
430
+ }
431
+ // XXX ok ?
432
+ return strpos($markup, "<!DOCTYPE html") !== false;
433
+ // return stripos($doctype, 'xhtml') !== false;
434
+ // $doctype = isset($dom->doctype) && is_object($dom->doctype)
435
+ // ? $dom->doctype->publicId
436
+ // : self::$defaultDoctype;
437
+ }
438
+ protected function isXML($markup) {
439
+ // return strpos($markup, '<?xml') !== false && stripos($markup, 'xhtml') === false;
440
+ return strpos(substr($markup, 0, 100), '<'.'?xml') !== false;
441
+ }
442
+ protected function contentTypeToArray($contentType) {
443
+ $matches = explode(';', trim(strtolower($contentType)));
444
+ if (isset($matches[1])) {
445
+ $matches[1] = explode('=', $matches[1]);
446
+ // strip 'charset='
447
+ $matches[1] = isset($matches[1][1]) && trim($matches[1][1])
448
+ ? $matches[1][1]
449
+ : $matches[1][0];
450
+ } else
451
+ $matches[1] = null;
452
+ return $matches;
453
+ }
454
+ /**
455
+ *
456
+ * @param $markup
457
+ * @return array contentType, charset
458
+ */
459
+ protected function contentTypeFromHTML($markup) {
460
+ $matches = array();
461
+ // find meta tag
462
+ preg_match('@<meta[^>]+http-equiv\\s*=\\s*(["|\'])Content-Type\\1([^>]+?)>@i',
463
+ $markup, $matches
464
+ );
465
+ if (! isset($matches[0]))
466
+ return array(null, null);
467
+ // get attr 'content'
468
+ preg_match('@content\\s*=\\s*(["|\'])(.+?)\\1@', $matches[0], $matches);
469
+ if (! isset($matches[0]))
470
+ return array(null, null);
471
+ return $this->contentTypeToArray($matches[2]);
472
+ }
473
+ protected function charsetFromHTML($markup) {
474
+ $contentType = $this->contentTypeFromHTML($markup);
475
+ return $contentType[1];
476
+ }
477
+ protected function charsetFromXML($markup) {
478
+ $matches;
479
+ // find declaration
480
+ preg_match('@<'.'?xml[^>]+encoding\\s*=\\s*(["|\'])(.*?)\\1@i',
481
+ $markup, $matches
482
+ );
483
+ return isset($matches[2])
484
+ ? strtolower($matches[2])
485
+ : null;
486
+ }
487
+ /**
488
+ * Repositions meta[type=charset] at the start of head. Bypasses DOMDocument bug.
489
+ *
490
+ * @link http://code.google.com/p/phpquery/issues/detail?id=80
491
+ * @param $html
492
+ */
493
+ protected function charsetFixHTML($markup) {
494
+ $matches = array();
495
+ // find meta tag
496
+ preg_match('@\s*<meta[^>]+http-equiv\\s*=\\s*(["|\'])Content-Type\\1([^>]+?)>@i',
497
+ $markup, $matches, PREG_OFFSET_CAPTURE
498
+ );
499
+ if (! isset($matches[0]))
500
+ return;
501
+ $metaContentType = $matches[0][0];
502
+ $markup = substr($markup, 0, $matches[0][1])
503
+ .substr($markup, $matches[0][1]+strlen($metaContentType));
504
+ $headStart = stripos($markup, '<head>');
505
+ $markup = substr($markup, 0, $headStart+6).$metaContentType
506
+ .substr($markup, $headStart+6);
507
+ return $markup;
508
+ }
509
+ protected function charsetAppendToHTML($html, $charset, $xhtml = false) {
510
+ // remove existing meta[type=content-type]
511
+ $html = preg_replace('@\s*<meta[^>]+http-equiv\\s*=\\s*(["|\'])Content-Type\\1([^>]+?)>@i', '', $html);
512
+ $meta = '<meta http-equiv="Content-Type" content="text/html;charset='
513
+ .$charset.'" '
514
+ .($xhtml ? '/' : '')
515
+ .'>';
516
+ if (strpos($html, '<head') === false) {
517
+ if (strpos($hltml, '<html') === false) {
518
+ return $meta.$html;
519
+ } else {
520
+ return preg_replace(
521
+ '@<html(.*?)(?(?<!\?)>)@s',
522
+ "<html\\1><head>{$meta}</head>",
523
+ $html
524
+ );
525
+ }
526
+ } else {
527
+ return preg_replace(
528
+ '@<head(.*?)(?(?<!\?)>)@s',
529
+ '<head\\1>'.$meta,
530
+ $html
531
+ );
532
+ }
533
+ }
534
+ protected function charsetAppendToXML($markup, $charset) {
535
+ $declaration = '<'.'?xml version="1.0" encoding="'.$charset.'"?'.'>';
536
+ return $declaration.$markup;
537
+ }
538
+ public static function isDocumentFragmentHTML($markup) {
539
+ return stripos($markup, '<html') === false && stripos($markup, '<!doctype') === false;
540
+ }
541
+ public static function isDocumentFragmentXML($markup) {
542
+ return stripos($markup, '<'.'?xml') === false;
543
+ }
544
+ public static function isDocumentFragmentXHTML($markup) {
545
+ return self::isDocumentFragmentHTML($markup);
546
+ }
547
+ public function importAttr($value) {
548
+ // TODO
549
+ }
550
+ /**
551
+ *
552
+ * @param $source
553
+ * @param $target
554
+ * @param $sourceCharset
555
+ * @return array Array of imported nodes.
556
+ */
557
+ public function import($source, $sourceCharset = null) {
558
+ // TODO charset conversions
559
+ $return = array();
560
+ if ($source instanceof DOMNODE && !($source instanceof DOMNODELIST))
561
+ $source = array($source);
562
+ // if (is_array($source)) {
563
+ // foreach($source as $node) {
564
+ // if (is_string($node)) {
565
+ // // string markup
566
+ // $fake = $this->documentFragmentCreate($node, $sourceCharset);
567
+ // if ($fake === false)
568
+ // throw new Exception("Error loading documentFragment markup");
569
+ // else
570
+ // $return = array_merge($return,
571
+ // $this->import($fake->root->childNodes)
572
+ // );
573
+ // } else {
574
+ // $return[] = $this->document->importNode($node, true);
575
+ // }
576
+ // }
577
+ // return $return;
578
+ // } else {
579
+ // // string markup
580
+ // $fake = $this->documentFragmentCreate($source, $sourceCharset);
581
+ // if ($fake === false)
582
+ // throw new Exception("Error loading documentFragment markup");
583
+ // else
584
+ // return $this->import($fake->root->childNodes);
585
+ // }
586
+ if (is_array($source) || $source instanceof DOMNODELIST) {
587
+ // dom nodes
588
+ self::debug('Importing nodes to document');
589
+ foreach($source as $node)
590
+ $return[] = $this->document->importNode($node, true);
591
+ } else {
592
+ // string markup
593
+ $fake = $this->documentFragmentCreate($source, $sourceCharset);
594
+ if ($fake === false)
595
+ throw new Exception("Error loading documentFragment markup");
596
+ else
597
+ return $this->import($fake->root->childNodes);
598
+ }
599
+ return $return;
600
+ }
601
+ /**
602
+ * Creates new document fragment.
603
+ *
604
+ * @param $source
605
+ * @return DOMDocumentWrapper
606
+ */
607
+ protected function documentFragmentCreate($source, $charset = null) {
608
+ $fake = new DOMDocumentWrapper();
609
+ $fake->contentType = $this->contentType;
610
+ $fake->isXML = $this->isXML;
611
+ $fake->isHTML = $this->isHTML;
612
+ $fake->isXHTML = $this->isXHTML;
613
+ $fake->root = $fake->document;
614
+ if (! $charset)
615
+ $charset = $this->charset;
616
+ // $fake->documentCreate($this->charset);
617
+ if ($source instanceof DOMNODE && !($source instanceof DOMNODELIST))
618
+ $source = array($source);
619
+ if (is_array($source) || $source instanceof DOMNODELIST) {
620
+ // dom nodes
621
+ // load fake document
622
+ if (! $this->documentFragmentLoadMarkup($fake, $charset))
623
+ return false;
624
+ $nodes = $fake->import($source);
625
+ foreach($nodes as $node)
626
+ $fake->root->appendChild($node);
627
+ } else {
628
+ // string markup
629
+ $this->documentFragmentLoadMarkup($fake, $charset, $source);
630
+ }
631
+ return $fake;
632
+ }
633
+ /**
634
+ *
635
+ * @param $document DOMDocumentWrapper
636
+ * @param $markup
637
+ * @return $document
638
+ */
639
+ private function documentFragmentLoadMarkup($fragment, $charset, $markup = null) {
640
+ // TODO error handling
641
+ // TODO copy doctype
642
+ // tempolary turn off
643
+ $fragment->isDocumentFragment = false;
644
+ if ($fragment->isXML) {
645
+ if ($fragment->isXHTML) {
646
+ // add FAKE element to set default namespace
647
+ $fragment->loadMarkupXML('<?xml version="1.0" encoding="'.$charset.'"?>'
648
+ .'<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" '
649
+ .'"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">'
650
+ .'<fake xmlns="http://www.w3.org/1999/xhtml">'.$markup.'</fake>');
651
+ $fragment->root = $fragment->document->firstChild->nextSibling;
652
+ } else {
653
+ $fragment->loadMarkupXML('<?xml version="1.0" encoding="'.$charset.'"?><fake>'.$markup.'</fake>');
654
+ $fragment->root = $fragment->document->firstChild;
655
+ }
656
+ } else {
657
+ $markup2 = phpQuery::$defaultDoctype.'<html><head><meta http-equiv="Content-Type" content="text/html;charset='
658
+ .$charset.'"></head>';
659
+ $noBody = strpos($markup, '<body') === false;
660
+ if ($noBody)
661
+ $markup2 .= '<body>';
662
+ $markup2 .= $markup;
663
+ if ($noBody)
664
+ $markup2 .= '</body>';
665
+ $markup2 .= '</html>';
666
+ $fragment->loadMarkupHTML($markup2);
667
+ // TODO resolv body tag merging issue
668
+ $fragment->root = $noBody
669
+ ? $fragment->document->firstChild->nextSibling->firstChild->nextSibling
670
+ : $fragment->document->firstChild->nextSibling->firstChild->nextSibling;
671
+ }
672
+ if (! $fragment->root)
673
+ return false;
674
+ $fragment->isDocumentFragment = true;
675
+ return true;
676
+ }
677
+ protected function documentFragmentToMarkup($fragment) {
678
+ phpQuery::debug('documentFragmentToMarkup');
679
+ $tmp = $fragment->isDocumentFragment;
680
+ $fragment->isDocumentFragment = false;
681
+ $markup = $fragment->markup();
682
+ if ($fragment->isXML) {
683
+ $markup = substr($markup, 0, strrpos($markup, '</fake>'));
684
+ if ($fragment->isXHTML) {
685
+ $markup = substr($markup, strpos($markup, '<fake')+43);
686
+ } else {
687
+ $markup = substr($markup, strpos($markup, '<fake>')+6);
688
+ }
689
+ } else {
690
+ $markup = substr($markup, strpos($markup, '<body>')+6);
691
+ $markup = substr($markup, 0, strrpos($markup, '</body>'));
692
+ }
693
+ $fragment->isDocumentFragment = $tmp;
694
+ if (phpQuery::$debug)
695
+ phpQuery::debug('documentFragmentToMarkup: '.substr($markup, 0, 150));
696
+ return $markup;
697
+ }
698
+ /**
699
+ * Return document markup, starting with optional $nodes as root.
700
+ *
701
+ * @param $nodes DOMNode|DOMNodeList
702
+ * @return string
703
+ */
704
+ public function markup($nodes = null, $innerMarkup = false) {
705
+ if (isset($nodes) && count($nodes) == 1 && $nodes[0] instanceof DOMDOCUMENT)
706
+ $nodes = null;
707
+ if (isset($nodes)) {
708
+ $markup = '';
709
+ if (!is_array($nodes) && !($nodes instanceof DOMNODELIST) )
710
+ $nodes = array($nodes);
711
+ if ($this->isDocumentFragment && ! $innerMarkup)
712
+ foreach($nodes as $i => $node)
713
+ if ($node->isSameNode($this->root)) {
714
+ // var_dump($node);
715
+ $nodes = array_slice($nodes, 0, $i)
716
+ + phpQuery::DOMNodeListToArray($node->childNodes)
717
+ + array_slice($nodes, $i+1);
718
+ }
719
+ if ($this->isXML && ! $innerMarkup) {
720
+ self::debug("Getting outerXML with charset '{$this->charset}'");
721
+ // we need outerXML, so we can benefit from
722
+ // $node param support in saveXML()
723
+ foreach($nodes as $node)
724
+ $markup .= $this->document->saveXML($node);
725
+ } else {
726
+ $loop = array();
727
+ if ($innerMarkup)
728
+ foreach($nodes as $node) {
729
+ if ($node->childNodes)
730
+ foreach($node->childNodes as $child)
731
+ $loop[] = $child;
732
+ else
733
+ $loop[] = $node;
734
+ }
735
+ else
736
+ $loop = $nodes;
737
+ self::debug("Getting markup, moving selected nodes (".count($loop).") to new DocumentFragment");
738
+ $fake = $this->documentFragmentCreate($loop);
739
+ $markup = $this->documentFragmentToMarkup($fake);
740
+ }
741
+ if ($this->isXHTML) {
742
+ self::debug("Fixing XHTML");
743
+ $markup = self::markupFixXHTML($markup);
744
+ }
745
+ self::debug("Markup: ".substr($markup, 0, 250));
746
+ return $markup;
747
+ } else {
748
+ if ($this->isDocumentFragment) {
749
+ // documentFragment, html only...
750
+ self::debug("Getting markup, DocumentFragment detected");
751
+ // return $this->markup(
752
+ //// $this->document->getElementsByTagName('body')->item(0)
753
+ // $this->document->root, true
754
+ // );
755
+ $markup = $this->documentFragmentToMarkup($this);
756
+ // no need for markupFixXHTML, as it's done thought markup($nodes) method
757
+ return $markup;
758
+ } else {
759
+ self::debug("Getting markup (".($this->isXML?'XML':'HTML')."), final with charset '{$this->charset}'");
760
+ $markup = $this->isXML
761
+ ? $this->document->saveXML()
762
+ : $this->document->saveHTML();
763
+ if ($this->isXHTML) {
764
+ self::debug("Fixing XHTML");
765
+ $markup = self::markupFixXHTML($markup);
766
+ }
767
+ self::debug("Markup: ".substr($markup, 0, 250));
768
+ return $markup;
769
+ }
770
+ }
771
+ }
772
+ protected static function markupFixXHTML($markup) {
773
+ $markup = self::expandEmptyTag('script', $markup);
774
+ $markup = self::expandEmptyTag('select', $markup);
775
+ $markup = self::expandEmptyTag('textarea', $markup);
776
+ return $markup;
777
+ }
778
+ public static function debug($text) {
779
+ phpQuery::debug($text);
780
+ }
781
+ /**
782
+ * expandEmptyTag
783
+ *
784
+ * @param $tag
785
+ * @param $xml
786
+ * @return unknown_type
787
+ * @author mjaque at ilkebenson dot com
788
+ * @link http://php.net/manual/en/domdocument.savehtml.php#81256
789
+ */
790
+ public static function expandEmptyTag($tag, $xml){
791
+ $indice = 0;
792
+ while ($indice< strlen($xml)){
793
+ $pos = strpos($xml, "<$tag ", $indice);
794
+ if ($pos){
795
+ $posCierre = strpos($xml, ">", $pos);
796
+ if ($xml[$posCierre-1] == "/"){
797
+ $xml = substr_replace($xml, "></$tag>", $posCierre-1, 2);
798
+ }
799
+ $indice = $posCierre;
800
+ }
801
+ else break;
802
+ }
803
+ return $xml;
804
+ }
805
+ }
806
+
807
+ /**
808
+ * Event handling class.
809
+ *
810
+ * @author Tobiasz Cudnik
811
+ * @package phpQuery
812
+ * @static
813
+ */
814
+ abstract class phpQueryEvents {
815
+ /**
816
+ * Trigger a type of event on every matched element.
817
+ *
818
+ * @param DOMNode|phpQueryObject|string $document
819
+ * @param unknown_type $type
820
+ * @param unknown_type $data
821
+ *
822
+ * @TODO exclusive events (with !)
823
+ * @TODO global events (test)
824
+ * @TODO support more than event in $type (space-separated)
825
+ */
826
+ public static function trigger($document, $type, $data = array(), $node = null) {
827
+ // trigger: function(type, data, elem, donative, extra) {
828
+ $documentID = phpQuery::getDocumentID($document);
829
+ $namespace = null;
830
+ if (strpos($type, '.') !== false)
831
+ list($name, $namespace) = explode('.', $type);
832
+ else
833
+ $name = $type;
834
+ if (! $node) {
835
+ if (self::issetGlobal($documentID, $type)) {
836
+ $pq = phpQuery::getDocument($documentID);
837
+ // TODO check add($pq->document)
838
+ $pq->find('*')->add($pq->document)
839
+ ->trigger($type, $data);
840
+ }
841
+ } else {
842
+ if (isset($data[0]) && $data[0] instanceof DOMEvent) {
843
+ $event = $data[0];
844
+ $event->relatedTarget = $event->target;
845
+ $event->target = $node;
846
+ $data = array_slice($data, 1);
847
+ } else {
848
+ $event = new DOMEvent(array(
849
+ 'type' => $type,
850
+ 'target' => $node,
851
+ 'timeStamp' => time(),
852
+ ));
853
+ }
854
+ $i = 0;
855
+ while($node) {
856
+ // TODO whois
857
+ phpQuery::debug("Triggering ".($i?"bubbled ":'')."event '{$type}' on "
858
+ ."node \n");//.phpQueryObject::whois($node)."\n");
859
+ $event->currentTarget = $node;
860
+ $eventNode = self::getNode($documentID, $node);
861
+ if (isset($eventNode->eventHandlers)) {
862
+ foreach($eventNode->eventHandlers as $eventType => $handlers) {
863
+ $eventNamespace = null;
864
+ if (strpos($type, '.') !== false)
865
+ list($eventName, $eventNamespace) = explode('.', $eventType);
866
+ else
867
+ $eventName = $eventType;
868
+ if ($name != $eventName)
869
+ continue;
870
+ if ($namespace && $eventNamespace && $namespace != $eventNamespace)
871
+ continue;
872
+ foreach($handlers as $handler) {
873
+ phpQuery::debug("Calling event handler\n");
874
+ $event->data = $handler['data']
875
+ ? $handler['data']
876
+ : null;
877
+ $params = array_merge(array($event), $data);
878
+ $return = phpQuery::callbackRun($handler['callback'], $params);
879
+ if ($return === false) {
880
+ $event->bubbles = false;
881
+ }
882
+ }
883
+ }
884
+ }
885
+ // to bubble or not to bubble...
886
+ if (! $event->bubbles)
887
+ break;
888
+ $node = $node->parentNode;
889
+ $i++;
890
+ }
891
+ }
892
+ }
893
+ /**
894
+ * Binds a handler to one or more events (like click) for each matched element.
895
+ * Can also bind custom events.
896
+ *
897
+ * @param DOMNode|phpQueryObject|string $document
898
+ * @param unknown_type $type
899
+ * @param unknown_type $data Optional
900
+ * @param unknown_type $callback
901
+ *
902
+ * @TODO support '!' (exclusive) events
903
+ * @TODO support more than event in $type (space-separated)
904
+ * @TODO support binding to global events
905
+ */
906
+ public static function add($document, $node, $type, $data, $callback = null) {
907
+ phpQuery::debug("Binding '$type' event");
908
+ $documentID = phpQuery::getDocumentID($document);
909
+ // if (is_null($callback) && is_callable($data)) {
910
+ // $callback = $data;
911
+ // $data = null;
912
+ // }
913
+ $eventNode = self::getNode($documentID, $node);
914
+ if (! $eventNode)
915
+ $eventNode = self::setNode($documentID, $node);
916
+ if (!isset($eventNode->eventHandlers[$type]))
917
+ $eventNode->eventHandlers[$type] = array();
918
+ $eventNode->eventHandlers[$type][] = array(
919
+ 'callback' => $callback,
920
+ 'data' => $data,
921
+ );
922
+ }
923
+ /**
924
+ * Enter description here...
925
+ *
926
+ * @param DOMNode|phpQueryObject|string $document
927
+ * @param unknown_type $type
928
+ * @param unknown_type $callback
929
+ *
930
+ * @TODO namespace events
931
+ * @TODO support more than event in $type (space-separated)
932
+ */
933
+ public static function remove($document, $node, $type = null, $callback = null) {
934
+ $documentID = phpQuery::getDocumentID($document);
935
+ $eventNode = self::getNode($documentID, $node);
936
+ if (is_object($eventNode) && isset($eventNode->eventHandlers[$type])) {
937
+ if ($callback) {
938
+ foreach($eventNode->eventHandlers[$type] as $k => $handler)
939
+ if ($handler['callback'] == $callback)
940
+ unset($eventNode->eventHandlers[$type][$k]);
941
+ } else {
942
+ unset($eventNode->eventHandlers[$type]);
943
+ }
944
+ }
945
+ }
946
+ protected static function getNode($documentID, $node) {
947
+ foreach(phpQuery::$documents[$documentID]->eventsNodes as $eventNode) {
948
+ if ($node->isSameNode($eventNode))
949
+ return $eventNode;
950
+ }
951
+ }
952
+ protected static function setNode($documentID, $node) {
953
+ phpQuery::$documents[$documentID]->eventsNodes[] = $node;
954
+ return phpQuery::$documents[$documentID]->eventsNodes[
955
+ count(phpQuery::$documents[$documentID]->eventsNodes)-1
956
+ ];
957
+ }
958
+ protected static function issetGlobal($documentID, $type) {
959
+ return isset(phpQuery::$documents[$documentID])
960
+ ? in_array($type, phpQuery::$documents[$documentID]->eventsGlobal)
961
+ : false;
962
+ }
963
+ }
964
+
965
+
966
+ interface ICallbackNamed {
967
+ function hasName();
968
+ function getName();
969
+ }
970
+ /**
971
+ * Callback class introduces currying-like pattern.
972
+ *
973
+ * Example:
974
+ * function foo($param1, $param2, $param3) {
975
+ * var_dump($param1, $param2, $param3);
976
+ * }
977
+ * $fooCurried = new Callback('foo',
978
+ * 'param1 is now statically set',
979
+ * new CallbackParam, new CallbackParam
980
+ * );
981
+ * phpQuery::callbackRun($fooCurried,
982
+ * array('param2 value', 'param3 value'
983
+ * );
984
+ *
985
+ * Callback class is supported in all phpQuery methods which accepts callbacks.
986
+ *
987
+ * @link http://code.google.com/p/phpquery/wiki/Callbacks#Param_Structures
988
+ * @author Tobiasz Cudnik <tobiasz.cudnik/gmail.com>
989
+ *
990
+ * @TODO??? return fake forwarding function created via create_function
991
+ * @TODO honor paramStructure
992
+ */
993
+ class Callback
994
+ implements ICallbackNamed {
995
+ public $callback = null;
996
+ public $params = null;
997
+ protected $name;
998
+ public function __construct($callback, $param1 = null, $param2 = null,
999
+ $param3 = null) {
1000
+ $params = func_get_args();
1001
+ $params = array_slice($params, 1);
1002
+ if ($callback instanceof Callback) {
1003
+ // TODO implement recurention
1004
+ } else {
1005
+ $this->callback = $callback;
1006
+ $this->params = $params;
1007
+ }
1008
+ }
1009
+ public function getName() {
1010
+ return 'Callback: '.$this->name;
1011
+ }
1012
+ public function hasName() {
1013
+ return isset($this->name) && $this->name;
1014
+ }
1015
+ public function setName($name) {
1016
+ $this->name = $name;
1017
+ return $this;
1018
+ }
1019
+ // TODO test me
1020
+ // public function addParams() {
1021
+ // $params = func_get_args();
1022
+ // return new Callback($this->callback, $this->params+$params);
1023
+ // }
1024
+ }
1025
+ /**
1026
+ * Shorthand for new Callback(create_function(...), ...);
1027
+ *
1028
+ * @author Tobiasz Cudnik <tobiasz.cudnik/gmail.com>
1029
+ */
1030
+ class CallbackBody extends Callback {
1031
+ public function __construct($paramList, $code, $param1 = null, $param2 = null,
1032
+ $param3 = null) {
1033
+ $params = func_get_args();
1034
+ $params = array_slice($params, 2);
1035
+ $this->callback = create_function($paramList, $code);
1036
+ $this->params = $params;
1037
+ }
1038
+ }
1039
+ /**
1040
+ * Callback type which on execution returns reference passed during creation.
1041
+ *
1042
+ * @author Tobiasz Cudnik <tobiasz.cudnik/gmail.com>
1043
+ */
1044
+ class CallbackReturnReference extends Callback
1045
+ implements ICallbackNamed {
1046
+ protected $reference;
1047
+ public function __construct(&$reference, $name = null){
1048
+ $this->reference =& $reference;
1049
+ $this->callback = array($this, 'callback');
1050
+ }
1051
+ public function callback() {
1052
+ return $this->reference;
1053
+ }
1054
+ public function getName() {
1055
+ return 'Callback: '.$this->name;
1056
+ }
1057
+ public function hasName() {
1058
+ return isset($this->name) && $this->name;
1059
+ }
1060
+ }
1061
+ /**
1062
+ * Callback type which on execution returns value passed during creation.
1063
+ *
1064
+ * @author Tobiasz Cudnik <tobiasz.cudnik/gmail.com>
1065
+ */
1066
+ class CallbackReturnValue extends Callback
1067
+ implements ICallbackNamed {
1068
+ protected $value;
1069
+ protected $name;
1070
+ public function __construct($value, $name = null){
1071
+ $this->value =& $value;
1072
+ $this->name = $name;
1073
+ $this->callback = array($this, 'callback');
1074
+ }
1075
+ public function callback() {
1076
+ return $this->value;
1077
+ }
1078
+ public function __toString() {
1079
+ return $this->getName();
1080
+ }
1081
+ public function getName() {
1082
+ return 'Callback: '.$this->name;
1083
+ }
1084
+ public function hasName() {
1085
+ return isset($this->name) && $this->name;
1086
+ }
1087
+ }
1088
+ /**
1089
+ * CallbackParameterToReference can be used when we don't really want a callback,
1090
+ * only parameter passed to it. CallbackParameterToReference takes first
1091
+ * parameter's value and passes it to reference.
1092
+ *
1093
+ * @author Tobiasz Cudnik <tobiasz.cudnik/gmail.com>
1094
+ */
1095
+ class CallbackParameterToReference extends Callback {
1096
+ /**
1097
+ * @param $reference
1098
+ * @TODO implement $paramIndex;
1099
+ * param index choose which callback param will be passed to reference
1100
+ */
1101
+ public function __construct(&$reference){
1102
+ $this->callback =& $reference;
1103
+ }
1104
+ }
1105
+ //class CallbackReference extends Callback {
1106
+ // /**
1107
+ // *
1108
+ // * @param $reference
1109
+ // * @param $paramIndex
1110
+ // * @todo implement $paramIndex; param index choose which callback param will be passed to reference
1111
+ // */
1112
+ // public function __construct(&$reference, $name = null){
1113
+ // $this->callback =& $reference;
1114
+ // }
1115
+ //}
1116
+ class CallbackParam {}
1117
+
1118
+ /**
1119
+ * Class representing phpQuery objects.
1120
+ *
1121
+ * @author Tobiasz Cudnik <tobiasz.cudnik/gmail.com>
1122
+ * @package phpQuery
1123
+ * @method phpQueryObject clone() clone()
1124
+ * @method phpQueryObject empty() empty()
1125
+ * @method phpQueryObject next() next($selector = null)
1126
+ * @method phpQueryObject prev() prev($selector = null)
1127
+ * @property Int $length
1128
+ */
1129
+ class phpQueryObject
1130
+ implements Iterator, Countable, ArrayAccess {
1131
+ public $documentID = null;
1132
+ /**
1133
+ * DOMDocument class.
1134
+ *
1135
+ * @var DOMDocument
1136
+ */
1137
+ public $document = null;
1138
+ public $charset = null;
1139
+ /**
1140
+ *
1141
+ * @var DOMDocumentWrapper
1142
+ */
1143
+ public $documentWrapper = null;
1144
+ /**
1145
+ * XPath interface.
1146
+ *
1147
+ * @var DOMXPath
1148
+ */
1149
+ public $xpath = null;
1150
+ /**
1151
+ * Stack of selected elements.
1152
+ * @TODO refactor to ->nodes
1153
+ * @var array
1154
+ */
1155
+ public $elements = array();
1156
+ /**
1157
+ * @access private
1158
+ */
1159
+ protected $elementsBackup = array();
1160
+ /**
1161
+ * @access private
1162
+ */
1163
+ protected $previous = null;
1164
+ /**
1165
+ * @access private
1166
+ * @TODO deprecate
1167
+ */
1168
+ protected $root = array();
1169
+ /**
1170
+ * Indicated if doument is just a fragment (no <html> tag).
1171
+ *
1172
+ * Every document is realy a full document, so even documentFragments can
1173
+ * be queried against <html>, but getDocument(id)->htmlOuter() will return
1174
+ * only contents of <body>.
1175
+ *
1176
+ * @var bool
1177
+ */
1178
+ public $documentFragment = true;
1179
+ /**
1180
+ * Iterator interface helper
1181
+ * @access private
1182
+ */
1183
+ protected $elementsInterator = array();
1184
+ /**
1185
+ * Iterator interface helper
1186
+ * @access private
1187
+ */
1188
+ protected $valid = false;
1189
+ /**
1190
+ * Iterator interface helper
1191
+ * @access private
1192
+ */
1193
+ protected $current = null;
1194
+ /**
1195
+ * Enter description here...
1196
+ *
1197
+ * @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
1198
+ */
1199
+ public function __construct($documentID) {
1200
+ // if ($documentID instanceof self)
1201
+ // var_dump($documentID->getDocumentID());
1202
+ $id = $documentID instanceof self
1203
+ ? $documentID->getDocumentID()
1204
+ : $documentID;
1205
+ // var_dump($id);
1206
+ if (! isset(phpQuery::$documents[$id] )) {
1207
+ // var_dump(phpQuery::$documents);
1208
+ throw new Exception("Document with ID '{$id}' isn't loaded. Use phpQuery::newDocument(\$html) or phpQuery::newDocumentFile(\$file) first.");
1209
+ }
1210
+ $this->documentID = $id;
1211
+ $this->documentWrapper =& phpQuery::$documents[$id];
1212
+ $this->document =& $this->documentWrapper->document;
1213
+ $this->xpath =& $this->documentWrapper->xpath;
1214
+ $this->charset =& $this->documentWrapper->charset;
1215
+ $this->documentFragment =& $this->documentWrapper->isDocumentFragment;
1216
+ // TODO check $this->DOM->documentElement;
1217
+ // $this->root = $this->document->documentElement;
1218
+ $this->root =& $this->documentWrapper->root;
1219
+ // $this->toRoot();
1220
+ $this->elements = array($this->root);
1221
+ }
1222
+ /**
1223
+ *
1224
+ * @access private
1225
+ * @param $attr
1226
+ * @return unknown_type
1227
+ */
1228
+ public function __get($attr) {
1229
+ switch($attr) {
1230
+ // FIXME doesnt work at all ?
1231
+ case 'length':
1232
+ return $this->size();
1233
+ break;
1234
+ default:
1235
+ return $this->$attr;
1236
+ }
1237
+ }
1238
+ /**
1239
+ * Saves actual object to $var by reference.
1240
+ * Useful when need to break chain.
1241
+ * @param phpQueryObject $var
1242
+ * @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
1243
+ */
1244
+ public function toReference(&$var) {
1245
+ return $var = $this;
1246
+ }
1247
+ public function documentFragment($state = null) {
1248
+ if ($state) {
1249
+ phpQuery::$documents[$this->getDocumentID()]['documentFragment'] = $state;
1250
+ return $this;
1251
+ }
1252
+ return $this->documentFragment;
1253
+ }
1254
+ /**
1255
+ * @access private
1256
+ * @TODO documentWrapper
1257
+ */
1258
+ protected function isRoot( $node) {
1259
+ // return $node instanceof DOMDOCUMENT || $node->tagName == 'html';
1260
+ return $node instanceof DOMDOCUMENT
1261
+ || ($node instanceof DOMELEMENT && $node->tagName == 'html')
1262
+ || $this->root->isSameNode($node);
1263
+ }
1264
+ /**
1265
+ * @access private
1266
+ */
1267
+ protected function stackIsRoot() {
1268
+ return $this->size() == 1 && $this->isRoot($this->elements[0]);
1269
+ }
1270
+ /**
1271
+ * Enter description here...
1272
+ * NON JQUERY METHOD
1273
+ *
1274
+ * Watch out, it doesn't creates new instance, can be reverted with end().
1275
+ *
1276
+ * @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
1277
+ */
1278
+ public function toRoot() {
1279
+ $this->elements = array($this->root);
1280
+ return $this;
1281
+ // return $this->newInstance(array($this->root));
1282
+ }
1283
+ /**
1284
+ * Saves object's DocumentID to $var by reference.
1285
+ * <code>
1286
+ * $myDocumentId;
1287
+ * phpQuery::newDocument('<div/>')
1288
+ * ->getDocumentIDRef($myDocumentId)
1289
+ * ->find('div')->...
1290
+ * </code>
1291
+ *
1292
+ * @param unknown_type $domId
1293
+ * @see phpQuery::newDocument
1294
+ * @see phpQuery::newDocumentFile
1295
+ * @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
1296
+ */
1297
+ public function getDocumentIDRef(&$documentID) {
1298
+ $documentID = $this->getDocumentID();
1299
+ return $this;
1300
+ }
1301
+ /**
1302
+ * Returns object with stack set to document root.
1303
+ *
1304
+ * @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
1305
+ */
1306
+ public function getDocument() {
1307
+ return phpQuery::getDocument($this->getDocumentID());
1308
+ }
1309
+ /**
1310
+ *
1311
+ * @return DOMDocument
1312
+ */
1313
+ public function getDOMDocument() {
1314
+ return $this->document;
1315
+ }
1316
+ /**
1317
+ * Get object's Document ID.
1318
+ *
1319
+ * @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
1320
+ */
1321
+ public function getDocumentID() {
1322
+ return $this->documentID;
1323
+ }
1324
+ /**
1325
+ * Unloads whole document from memory.
1326
+ * CAUTION! None further operations will be possible on this document.
1327
+ * All objects refering to it will be useless.
1328
+ *
1329
+ * @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
1330
+ */
1331
+ public function unloadDocument() {
1332
+ phpQuery::unloadDocuments($this->getDocumentID());
1333
+ }
1334
+ public function isHTML() {
1335
+ return $this->documentWrapper->isHTML;
1336
+ }
1337
+ public function isXHTML() {
1338
+ return $this->documentWrapper->isXHTML;
1339
+ }
1340
+ public function isXML() {
1341
+ return $this->documentWrapper->isXML;
1342
+ }
1343
+ /**
1344
+ * Enter description here...
1345
+ *
1346
+ * @link http://docs.jquery.com/Ajax/serialize
1347
+ * @return string
1348
+ */
1349
+ public function serialize() {
1350
+ return phpQuery::param($this->serializeArray());
1351
+ }
1352
+ /**
1353
+ * Enter description here...
1354
+ *
1355
+ * @link http://docs.jquery.com/Ajax/serializeArray
1356
+ * @return array
1357
+ */
1358
+ public function serializeArray($submit = null) {
1359
+ $source = $this->filter('form, input, select, textarea')
1360
+ ->find('input, select, textarea')
1361
+ ->andSelf()
1362
+ ->not('form');
1363
+ $return = array();
1364
+ // $source->dumpDie();
1365
+ foreach($source as $input) {
1366
+ $input = phpQuery::pq($input);
1367
+ if ($input->is('[disabled]'))
1368
+ continue;
1369
+ if (!$input->is('[name]'))
1370
+ continue;
1371
+ if ($input->is('[type=checkbox]') && !$input->is('[checked]'))
1372
+ continue;
1373
+ // jquery diff
1374
+ if ($submit && $input->is('[type=submit]')) {
1375
+ if ($submit instanceof DOMELEMENT && ! $input->elements[0]->isSameNode($submit))
1376
+ continue;
1377
+ else if (is_string($submit) && $input->attr('name') != $submit)
1378
+ continue;
1379
+ }
1380
+ $return[] = array(
1381
+ 'name' => $input->attr('name'),
1382
+ 'value' => $input->val(),
1383
+ );
1384
+ }
1385
+ return $return;
1386
+ }
1387
+ /**
1388
+ * @access private
1389
+ */
1390
+ protected function debug($in) {
1391
+ if (! phpQuery::$debug )
1392
+ return;
1393
+ print('<pre>');
1394
+ print_r($in);
1395
+ // file debug
1396
+ // file_put_contents(dirname(__FILE__).'/phpQuery.log', print_r($in, true)."\n", FILE_APPEND);
1397
+ // quite handy debug trace
1398
+ // if ( is_array($in))
1399
+ // print_r(array_slice(debug_backtrace(), 3));
1400
+ print("</pre>\n");
1401
+ }
1402
+ /**
1403
+ * @access private
1404
+ */
1405
+ protected function isRegexp($pattern) {
1406
+ return in_array(
1407
+ $pattern[ mb_strlen($pattern)-1 ],
1408
+ array('^','*','$')
1409
+ );
1410
+ }
1411
+ /**
1412
+ * Determines if $char is really a char.
1413
+ *
1414
+ * @param string $char
1415
+ * @return bool
1416
+ * @todo rewrite me to charcode range ! ;)
1417
+ * @access private
1418
+ */
1419
+ protected function isChar($char) {
1420
+ return extension_loaded('mbstring') && in_array('mb_eregi', get_extension_funcs("mbstring")) && phpQuery::$mbstringSupport
1421
+ ? mb_eregi('\w', $char)
1422
+ : preg_match('@\w@', $char);
1423
+ }
1424
+ /**
1425
+ * @access private
1426
+ */
1427
+ protected function parseSelector($query) {
1428
+ // clean spaces
1429
+ // TODO include this inside parsing ?
1430
+ $query = trim(
1431
+ preg_replace('@\s+@', ' ',
1432
+ preg_replace('@\s*(>|\\+|~)\s*@', '\\1', $query)
1433
+ )
1434
+ );
1435
+ $queries = array(array());
1436
+ if (! $query)
1437
+ return $queries;
1438
+ $return =& $queries[0];
1439
+ $specialChars = array('>',' ');
1440
+ // $specialCharsMapping = array('/' => '>');
1441
+ $specialCharsMapping = array();
1442
+ $strlen = mb_strlen($query);
1443
+ $classChars = array('.', '-');
1444
+ $pseudoChars = array('-');
1445
+ $tagChars = array('*', '|', '-');
1446
+ // split multibyte string
1447
+ // http://code.google.com/p/phpquery/issues/detail?id=76
1448
+ $_query = array();
1449
+ for ($i=0; $i<$strlen; $i++)
1450
+ $_query[] = mb_substr($query, $i, 1);
1451
+ $query = $_query;
1452
+ // it works, but i dont like it...
1453
+ $i = 0;
1454
+ while( $i < $strlen) {
1455
+ $c = $query[$i];
1456
+ $tmp = '';
1457
+ // TAG
1458
+ if ($this->isChar($c) || in_array($c, $tagChars)) {
1459
+ while(isset($query[$i])
1460
+ && ($this->isChar($query[$i]) || in_array($query[$i], $tagChars))) {
1461
+ $tmp .= $query[$i];
1462
+ $i++;
1463
+ }
1464
+ $return[] = $tmp;
1465
+ // IDs
1466
+ } else if ( $c == '#') {
1467
+ $i++;
1468
+ while( isset($query[$i]) && ($this->isChar($query[$i]) || $query[$i] == '-')) {
1469
+ $tmp .= $query[$i];
1470
+ $i++;
1471
+ }
1472
+ $return[] = '#'.$tmp;
1473
+ // SPECIAL CHARS
1474
+ } else if (in_array($c, $specialChars)) {
1475
+ $return[] = $c;
1476
+ $i++;
1477
+ // MAPPED SPECIAL MULTICHARS
1478
+ // } else if ( $c.$query[$i+1] == '//') {
1479
+ // $return[] = ' ';
1480
+ // $i = $i+2;
1481
+ // MAPPED SPECIAL CHARS
1482
+ } else if ( isset($specialCharsMapping[$c])) {
1483
+ $return[] = $specialCharsMapping[$c];
1484
+ $i++;
1485
+ // COMMA
1486
+ } else if ( $c == ',') {
1487
+ $queries[] = array();
1488
+ $return =& $queries[ count($queries)-1 ];
1489
+ $i++;
1490
+ while( isset($query[$i]) && $query[$i] == ' ')
1491
+ $i++;
1492
+ // CLASSES
1493
+ } else if ($c == '.') {
1494
+ while( isset($query[$i]) && ($this->isChar($query[$i]) || in_array($query[$i], $classChars))) {
1495
+ $tmp .= $query[$i];
1496
+ $i++;
1497
+ }
1498
+ $return[] = $tmp;
1499
+ // ~ General Sibling Selector
1500
+ } else if ($c == '~') {
1501
+ $spaceAllowed = true;
1502
+ $tmp .= $query[$i++];
1503
+ while( isset($query[$i])
1504
+ && ($this->isChar($query[$i])
1505
+ || in_array($query[$i], $classChars)
1506
+ || $query[$i] == '*'
1507
+ || ($query[$i] == ' ' && $spaceAllowed)
1508
+ )) {
1509
+ if ($query[$i] != ' ')
1510
+ $spaceAllowed = false;
1511
+ $tmp .= $query[$i];
1512
+ $i++;
1513
+ }
1514
+ $return[] = $tmp;
1515
+ // + Adjacent sibling selectors
1516
+ } else if ($c == '+') {
1517
+ $spaceAllowed = true;
1518
+ $tmp .= $query[$i++];
1519
+ while( isset($query[$i])
1520
+ && ($this->isChar($query[$i])
1521
+ || in_array($query[$i], $classChars)
1522
+ || $query[$i] == '*'
1523
+ || ($spaceAllowed && $query[$i] == ' ')
1524
+ )) {
1525
+ if ($query[$i] != ' ')
1526
+ $spaceAllowed = false;
1527
+ $tmp .= $query[$i];
1528
+ $i++;
1529
+ }
1530
+ $return[] = $tmp;
1531
+ // ATTRS
1532
+ } else if ($c == '[') {
1533
+ $stack = 1;
1534
+ $tmp .= $c;
1535
+ while( isset($query[++$i])) {
1536
+ $tmp .= $query[$i];
1537
+ if ( $query[$i] == '[') {
1538
+ $stack++;
1539
+ } else if ( $query[$i] == ']') {
1540
+ $stack--;
1541
+ if (! $stack )
1542
+ break;
1543
+ }
1544
+ }
1545
+ $return[] = $tmp;
1546
+ $i++;
1547
+ // PSEUDO CLASSES
1548
+ } else if ($c == ':') {
1549
+ $stack = 1;
1550
+ $tmp .= $query[$i++];
1551
+ while( isset($query[$i]) && ($this->isChar($query[$i]) || in_array($query[$i], $pseudoChars))) {
1552
+ $tmp .= $query[$i];
1553
+ $i++;
1554
+ }
1555
+ // with arguments ?
1556
+ if ( isset($query[$i]) && $query[$i] == '(') {
1557
+ $tmp .= $query[$i];
1558
+ $stack = 1;
1559
+ while( isset($query[++$i])) {
1560
+ $tmp .= $query[$i];
1561
+ if ( $query[$i] == '(') {
1562
+ $stack++;
1563
+ } else if ( $query[$i] == ')') {
1564
+ $stack--;
1565
+ if (! $stack )
1566
+ break;
1567
+ }
1568
+ }
1569
+ $return[] = $tmp;
1570
+ $i++;
1571
+ } else {
1572
+ $return[] = $tmp;
1573
+ }
1574
+ } else {
1575
+ $i++;
1576
+ }
1577
+ }
1578
+ foreach($queries as $k => $q) {
1579
+ if (isset($q[0])) {
1580
+ if (isset($q[0][0]) && $q[0][0] == ':')
1581
+ array_unshift($queries[$k], '*');
1582
+ if ($q[0] != '>')
1583
+ array_unshift($queries[$k], ' ');
1584
+ }
1585
+ }
1586
+ return $queries;
1587
+ }
1588
+ /**
1589
+ * Return matched DOM nodes.
1590
+ *
1591
+ * @param int $index
1592
+ * @return array|DOMElement Single DOMElement or array of DOMElement.
1593
+ */
1594
+ public function get($index = null, $callback1 = null, $callback2 = null, $callback3 = null) {
1595
+ $return = isset($index)
1596
+ ? (isset($this->elements[$index]) ? $this->elements[$index] : null)
1597
+ : $this->elements;
1598
+ // pass thou callbacks
1599
+ $args = func_get_args();
1600
+ $args = array_slice($args, 1);
1601
+ foreach($args as $callback) {
1602
+ if (is_array($return))
1603
+ foreach($return as $k => $v)
1604
+ $return[$k] = phpQuery::callbackRun($callback, array($v));
1605
+ else
1606
+ $return = phpQuery::callbackRun($callback, array($return));
1607
+ }
1608
+ return $return;
1609
+ }
1610
+ /**
1611
+ * Return matched DOM nodes.
1612
+ * jQuery difference.
1613
+ *
1614
+ * @param int $index
1615
+ * @return array|string Returns string if $index != null
1616
+ * @todo implement callbacks
1617
+ * @todo return only arrays ?
1618
+ * @todo maybe other name...
1619
+ */
1620
+ public function getString($index = null, $callback1 = null, $callback2 = null, $callback3 = null) {
1621
+ if ($index)
1622
+ $return = $this->eq($index)->text();
1623
+ else {
1624
+ $return = array();
1625
+ for($i = 0; $i < $this->size(); $i++) {
1626
+ $return[] = $this->eq($i)->text();
1627
+ }
1628
+ }
1629
+ // pass thou callbacks
1630
+ $args = func_get_args();
1631
+ $args = array_slice($args, 1);
1632
+ foreach($args as $callback) {
1633
+ $return = phpQuery::callbackRun($callback, array($return));
1634
+ }
1635
+ return $return;
1636
+ }
1637
+ /**
1638
+ * Return matched DOM nodes.
1639
+ * jQuery difference.
1640
+ *
1641
+ * @param int $index
1642
+ * @return array|string Returns string if $index != null
1643
+ * @todo implement callbacks
1644
+ * @todo return only arrays ?
1645
+ * @todo maybe other name...
1646
+ */
1647
+ public function getStrings($index = null, $callback1 = null, $callback2 = null, $callback3 = null) {
1648
+ if ($index)
1649
+ $return = $this->eq($index)->text();
1650
+ else {
1651
+ $return = array();
1652
+ for($i = 0; $i < $this->size(); $i++) {
1653
+ $return[] = $this->eq($i)->text();
1654
+ }
1655
+ // pass thou callbacks
1656
+ $args = func_get_args();
1657
+ $args = array_slice($args, 1);
1658
+ }
1659
+ foreach($args as $callback) {
1660
+ if (is_array($return))
1661
+ foreach($return as $k => $v)
1662
+ $return[$k] = phpQuery::callbackRun($callback, array($v));
1663
+ else
1664
+ $return = phpQuery::callbackRun($callback, array($return));
1665
+ }
1666
+ return $return;
1667
+ }
1668
+ /**
1669
+ * Returns new instance of actual class.
1670
+ *
1671
+ * @param array $newStack Optional. Will replace old stack with new and move old one to history.c
1672
+ */
1673
+ public function newInstance($newStack = null) {
1674
+ $class = get_class($this);
1675
+ // support inheritance by passing old object to overloaded constructor
1676
+ $new = $class != 'phpQuery'
1677
+ ? new $class($this, $this->getDocumentID())
1678
+ : new phpQueryObject($this->getDocumentID());
1679
+ $new->previous = $this;
1680
+ if (is_null($newStack)) {
1681
+ $new->elements = $this->elements;
1682
+ if ($this->elementsBackup)
1683
+ $this->elements = $this->elementsBackup;
1684
+ } else if (is_string($newStack)) {
1685
+ $new->elements = phpQuery::pq($newStack, $this->getDocumentID())->stack();
1686
+ } else {
1687
+ $new->elements = $newStack;
1688
+ }
1689
+ return $new;
1690
+ }
1691
+ /**
1692
+ * Enter description here...
1693
+ *
1694
+ * In the future, when PHP will support XLS 2.0, then we would do that this way:
1695
+ * contains(tokenize(@class, '\s'), "something")
1696
+ * @param unknown_type $class
1697
+ * @param unknown_type $node
1698
+ * @return boolean
1699
+ * @access private
1700
+ */
1701
+ protected function matchClasses($class, $node) {
1702
+ // multi-class
1703
+ if ( mb_strpos($class, '.', 1)) {
1704
+ $classes = explode('.', substr($class, 1));
1705
+ $classesCount = count( $classes );
1706
+ $nodeClasses = explode(' ', $node->getAttribute('class') );
1707
+ $nodeClassesCount = count( $nodeClasses );
1708
+ if ( $classesCount > $nodeClassesCount )
1709
+ return false;
1710
+ $diff = count(
1711
+ array_diff(
1712
+ $classes,
1713
+ $nodeClasses
1714
+ )
1715
+ );
1716
+ if (! $diff )
1717
+ return true;
1718
+ // single-class
1719
+ } else {
1720
+ return in_array(
1721
+ // strip leading dot from class name
1722
+ substr($class, 1),
1723
+ // get classes for element as array
1724
+ explode(' ', $node->getAttribute('class') )
1725
+ );
1726
+ }
1727
+ }
1728
+ /**
1729
+ * @access private
1730
+ */
1731
+ protected function runQuery($XQuery, $selector = null, $compare = null) {
1732
+ if ($compare && ! method_exists($this, $compare))
1733
+ return false;
1734
+ $stack = array();
1735
+ if (! $this->elements)
1736
+ $this->debug('Stack empty, skipping...');
1737
+ // var_dump($this->elements[0]->nodeType);
1738
+ // element, document
1739
+ foreach($this->stack(array(1, 9, 13)) as $k => $stackNode) {
1740
+ $detachAfter = false;
1741
+ // to work on detached nodes we need temporary place them somewhere
1742
+ // thats because context xpath queries sucks ;]
1743
+ $testNode = $stackNode;
1744
+ while ($testNode) {
1745
+ if (! $testNode->parentNode && ! $this->isRoot($testNode)) {
1746
+ $this->root->appendChild($testNode);
1747
+ $detachAfter = $testNode;
1748
+ break;
1749
+ }
1750
+ $testNode = isset($testNode->parentNode)
1751
+ ? $testNode->parentNode
1752
+ : null;
1753
+ }
1754
+ // XXX tmp ?
1755
+ $xpath = $this->documentWrapper->isXHTML
1756
+ ? $this->getNodeXpath($stackNode, 'html')
1757
+ : $this->getNodeXpath($stackNode);
1758
+ // FIXME pseudoclasses-only query, support XML
1759
+ $query = $XQuery == '//' && $xpath == '/html[1]'
1760
+ ? '//*'
1761
+ : $xpath.$XQuery;
1762
+ $this->debug("XPATH: {$query}");
1763
+ // run query, get elements
1764
+ $nodes = $this->xpath->query($query);
1765
+ $this->debug("QUERY FETCHED");
1766
+ if (! $nodes->length )
1767
+ $this->debug('Nothing found');
1768
+ $debug = array();
1769
+ foreach($nodes as $node) {
1770
+ $matched = false;
1771
+ if ( $compare) {
1772
+ phpQuery::$debug ?
1773
+ $this->debug("Found: ".$this->whois( $node ).", comparing with {$compare}()")
1774
+ : null;
1775
+ $phpQueryDebug = phpQuery::$debug;
1776
+ phpQuery::$debug = false;
1777
+ // TODO ??? use phpQuery::callbackRun()
1778
+ if (call_user_func_array(array($this, $compare), array($selector, $node)))
1779
+ $matched = true;
1780
+ phpQuery::$debug = $phpQueryDebug;
1781
+ } else {
1782
+ $matched = true;
1783
+ }
1784
+ if ( $matched) {
1785
+ if (phpQuery::$debug)
1786
+ $debug[] = $this->whois( $node );
1787
+ $stack[] = $node;
1788
+ }
1789
+ }
1790
+ if (phpQuery::$debug) {
1791
+ $this->debug("Matched ".count($debug).": ".implode(', ', $debug));
1792
+ }
1793
+ if ($detachAfter)
1794
+ $this->root->removeChild($detachAfter);
1795
+ }
1796
+ $this->elements = $stack;
1797
+ }
1798
+ /**
1799
+ * Enter description here...
1800
+ *
1801
+ * @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
1802
+ */
1803
+ public function find($selectors, $context = null, $noHistory = false) {
1804
+ if (!$noHistory)
1805
+ // backup last stack /for end()/
1806
+ $this->elementsBackup = $this->elements;
1807
+ // allow to define context
1808
+ // TODO combine code below with phpQuery::pq() context guessing code
1809
+ // as generic function
1810
+ if ($context) {
1811
+ if (! is_array($context) && $context instanceof DOMELEMENT)
1812
+ $this->elements = array($context);
1813
+ else if (is_array($context)) {
1814
+ $this->elements = array();
1815
+ foreach ($context as $c)
1816
+ if ($c instanceof DOMELEMENT)
1817
+ $this->elements[] = $c;
1818
+ } else if ( $context instanceof self )
1819
+ $this->elements = $context->elements;
1820
+ }
1821
+ $queries = $this->parseSelector($selectors);
1822
+ $this->debug(array('FIND', $selectors, $queries));
1823
+ $XQuery = '';
1824
+ // remember stack state because of multi-queries
1825
+ $oldStack = $this->elements;
1826
+ // here we will be keeping found elements
1827
+ $stack = array();
1828
+ foreach($queries as $selector) {
1829
+ $this->elements = $oldStack;
1830
+ $delimiterBefore = false;
1831
+ foreach($selector as $s) {
1832
+ // TAG
1833
+ $isTag = extension_loaded('mbstring') && in_array('mb_ereg_match', get_extension_funcs("mbstring")) && phpQuery::$mbstringSupport
1834
+ ? mb_ereg_match('^[\w|\||-]+$', $s) || $s == '*'
1835
+ : preg_match('@^[\w|\||-]+$@', $s) || $s == '*';
1836
+ if ($isTag) {
1837
+ if ($this->isXML()) {
1838
+ // namespace support
1839
+ if (mb_strpos($s, '|') !== false) {
1840
+ $ns = $tag = null;
1841
+ list($ns, $tag) = explode('|', $s);
1842
+ $XQuery .= "$ns:$tag";
1843
+ } else if ($s == '*') {
1844
+ $XQuery .= "*";
1845
+ } else {
1846
+ $XQuery .= "*[local-name()='$s']";
1847
+ }
1848
+ } else {
1849
+ $XQuery .= $s;
1850
+ }
1851
+ // ID
1852
+ } else if ($s[0] == '#') {
1853
+ if ($delimiterBefore)
1854
+ $XQuery .= '*';
1855
+ $XQuery .= "[@id='".substr($s, 1)."']";
1856
+ // ATTRIBUTES
1857
+ } else if ($s[0] == '[') {
1858
+ if ($delimiterBefore)
1859
+ $XQuery .= '*';
1860
+ // strip side brackets
1861
+ $attr = trim($s, '][');
1862
+ $execute = false;
1863
+ // attr with specifed value
1864
+ if (mb_strpos($s, '=')) {
1865
+ $value = null;
1866
+ list($attr, $value) = explode('=', $attr);
1867
+ $value = trim($value, "'\"");
1868
+ if ($this->isRegexp($attr)) {
1869
+ // cut regexp character
1870
+ $attr = substr($attr, 0, -1);
1871
+ $execute = true;
1872
+ $XQuery .= "[@{$attr}]";
1873
+ } else {
1874
+ $XQuery .= "[@{$attr}='{$value}']";
1875
+ }
1876
+ // attr without specified value
1877
+ } else {
1878
+ $XQuery .= "[@{$attr}]";
1879
+ }
1880
+ if ($execute) {
1881
+ $this->runQuery($XQuery, $s, 'is');
1882
+ $XQuery = '';
1883
+ if (! $this->length())
1884
+ break;
1885
+ }
1886
+ // CLASSES
1887
+ } else if ($s[0] == '.') {
1888
+ // TODO use return $this->find("./self::*[contains(concat(\" \",@class,\" \"), \" $class \")]");
1889
+ // thx wizDom ;)
1890
+ if ($delimiterBefore)
1891
+ $XQuery .= '*';
1892
+ $XQuery .= '[@class]';
1893
+ $this->runQuery($XQuery, $s, 'matchClasses');
1894
+ $XQuery = '';
1895
+ if (! $this->length() )
1896
+ break;
1897
+ // ~ General Sibling Selector
1898
+ } else if ($s[0] == '~') {
1899
+ $this->runQuery($XQuery);
1900
+ $XQuery = '';
1901
+ $this->elements = $this
1902
+ ->siblings(
1903
+ substr($s, 1)
1904
+ )->elements;
1905
+ if (! $this->length() )
1906
+ break;
1907
+ // + Adjacent sibling selectors
1908
+ } else if ($s[0] == '+') {
1909
+ // TODO /following-sibling::
1910
+ $this->runQuery($XQuery);
1911
+ $XQuery = '';
1912
+ $subSelector = substr($s, 1);
1913
+ $subElements = $this->elements;
1914
+ $this->elements = array();
1915
+ foreach($subElements as $node) {
1916
+ // search first DOMElement sibling
1917
+ $test = $node->nextSibling;
1918
+ while($test && ! ($test instanceof DOMELEMENT))
1919
+ $test = $test->nextSibling;
1920
+ if ($test && $this->is($subSelector, $test))
1921
+ $this->elements[] = $test;
1922
+ }
1923
+ if (! $this->length() )
1924
+ break;
1925
+ // PSEUDO CLASSES
1926
+ } else if ($s[0] == ':') {
1927
+ // TODO optimization for :first :last
1928
+ if ($XQuery) {
1929
+ $this->runQuery($XQuery);
1930
+ $XQuery = '';
1931
+ }
1932
+ if (! $this->length())
1933
+ break;
1934
+ $this->pseudoClasses($s);
1935
+ if (! $this->length())
1936
+ break;
1937
+ // DIRECT DESCENDANDS
1938
+ } else if ($s == '>') {
1939
+ $XQuery .= '/';
1940
+ $delimiterBefore = 2;
1941
+ // ALL DESCENDANDS
1942
+ } else if ($s == ' ') {
1943
+ $XQuery .= '//';
1944
+ $delimiterBefore = 2;
1945
+ // ERRORS
1946
+ } else {
1947
+ phpQuery::debug("Unrecognized token '$s'");
1948
+ }
1949
+ $delimiterBefore = $delimiterBefore === 2;
1950
+ }
1951
+ // run query if any
1952
+ if ($XQuery && $XQuery != '//') {
1953
+ $this->runQuery($XQuery);
1954
+ $XQuery = '';
1955
+ }
1956
+ foreach($this->elements as $node)
1957
+ if (! $this->elementsContainsNode($node, $stack))
1958
+ $stack[] = $node;
1959
+ }
1960
+ $this->elements = $stack;
1961
+ return $this->newInstance();
1962
+ }
1963
+ /**
1964
+ * @todo create API for classes with pseudoselectors
1965
+ * @access private
1966
+ */
1967
+ protected function pseudoClasses($class) {
1968
+ // TODO clean args parsing ?
1969
+ $class = ltrim($class, ':');
1970
+ $haveArgs = mb_strpos($class, '(');
1971
+ if ($haveArgs !== false) {
1972
+ $args = substr($class, $haveArgs+1, -1);
1973
+ $class = substr($class, 0, $haveArgs);
1974
+ }
1975
+ switch($class) {
1976
+ case 'even':
1977
+ case 'odd':
1978
+ $stack = array();
1979
+ foreach($this->elements as $i => $node) {
1980
+ if ($class == 'even' && ($i%2) == 0)
1981
+ $stack[] = $node;
1982
+ else if ( $class == 'odd' && $i % 2 )
1983
+ $stack[] = $node;
1984
+ }
1985
+ $this->elements = $stack;
1986
+ break;
1987
+ case 'eq':
1988
+ $k = intval($args);
1989
+ $this->elements = isset( $this->elements[$k] )
1990
+ ? array( $this->elements[$k] )
1991
+ : array();
1992
+ break;
1993
+ case 'gt':
1994
+ $this->elements = array_slice($this->elements, $args+1);
1995
+ break;
1996
+ case 'lt':
1997
+ $this->elements = array_slice($this->elements, 0, $args+1);
1998
+ break;
1999
+ case 'first':
2000
+ if (isset($this->elements[0]))
2001
+ $this->elements = array($this->elements[0]);
2002
+ break;
2003
+ case 'last':
2004
+ if ($this->elements)
2005
+ $this->elements = array($this->elements[count($this->elements)-1]);
2006
+ break;
2007
+ /*case 'parent':
2008
+ $stack = array();
2009
+ foreach($this->elements as $node) {
2010
+ if ( $node->childNodes->length )
2011
+ $stack[] = $node;
2012
+ }
2013
+ $this->elements = $stack;
2014
+ break;*/
2015
+ case 'contains':
2016
+ $text = trim($args, "\"'");
2017
+ $stack = array();
2018
+ foreach($this->elements as $node) {
2019
+ if (mb_stripos($node->textContent, $text) === false)
2020
+ continue;
2021
+ $stack[] = $node;
2022
+ }
2023
+ $this->elements = $stack;
2024
+ break;
2025
+ case 'not':
2026
+ $selector = self::unQuote($args);
2027
+ $this->elements = $this->not($selector)->stack();
2028
+ break;
2029
+ case 'slice':
2030
+ // TODO jQuery difference ?
2031
+ $args = explode(',',
2032
+ str_replace(', ', ',', trim($args, "\"'"))
2033
+ );
2034
+ $start = $args[0];
2035
+ $end = isset($args[1])
2036
+ ? $args[1]
2037
+ : null;
2038
+ if ($end > 0)
2039
+ $end = $end-$start;
2040
+ $this->elements = array_slice($this->elements, $start, $end);
2041
+ break;
2042
+ case 'has':
2043
+ $selector = trim($args, "\"'");
2044
+ $stack = array();
2045
+ foreach($this->stack(1) as $el) {
2046
+ if ($this->find($selector, $el, true)->length)
2047
+ $stack[] = $el;
2048
+ }
2049
+ $this->elements = $stack;
2050
+ break;
2051
+ case 'submit':
2052
+ case 'reset':
2053
+ $this->elements = phpQuery::merge(
2054
+ $this->map(array($this, 'is'),
2055
+ "input[type=$class]", new CallbackParam()
2056
+ ),
2057
+ $this->map(array($this, 'is'),
2058
+ "button[type=$class]", new CallbackParam()
2059
+ )
2060
+ );
2061
+ break;
2062
+ // $stack = array();
2063
+ // foreach($this->elements as $node)
2064
+ // if ($node->is('input[type=submit]') || $node->is('button[type=submit]'))
2065
+ // $stack[] = $el;
2066
+ // $this->elements = $stack;
2067
+ case 'input':
2068
+ $this->elements = $this->map(
2069
+ array($this, 'is'),
2070
+ 'input', new CallbackParam()
2071
+ )->elements;
2072
+ break;
2073
+ case 'password':
2074
+ case 'checkbox':
2075
+ case 'radio':
2076
+ case 'hidden':
2077
+ case 'image':
2078
+ case 'file':
2079
+ $this->elements = $this->map(
2080
+ array($this, 'is'),
2081
+ "input[type=$class]", new CallbackParam()
2082
+ )->elements;
2083
+ break;
2084
+ case 'parent':
2085
+ $this->elements = $this->map(
2086
+ create_function('$node', '
2087
+ return $node instanceof DOMELEMENT && $node->childNodes->length
2088
+ ? $node : null;')
2089
+ )->elements;
2090
+ break;
2091
+ case 'empty':
2092
+ $this->elements = $this->map(
2093
+ create_function('$node', '
2094
+ return $node instanceof DOMELEMENT && $node->childNodes->length
2095
+ ? null : $node;')
2096
+ )->elements;
2097
+ break;
2098
+ case 'disabled':
2099
+ case 'selected':
2100
+ case 'checked':
2101
+ $this->elements = $this->map(
2102
+ array($this, 'is'),
2103
+ "[$class]", new CallbackParam()
2104
+ )->elements;
2105
+ break;
2106
+ case 'enabled':
2107
+ $this->elements = $this->map(
2108
+ create_function('$node', '
2109
+ return pq($node)->not(":disabled") ? $node : null;')
2110
+ )->elements;
2111
+ break;
2112
+ case 'header':
2113
+ $this->elements = $this->map(
2114
+ create_function('$node',
2115
+ '$isHeader = isset($node->tagName) && in_array($node->tagName, array(
2116
+ "h1", "h2", "h3", "h4", "h5", "h6", "h7"
2117
+ ));
2118
+ return $isHeader
2119
+ ? $node
2120
+ : null;')
2121
+ )->elements;
2122
+ // $this->elements = $this->map(
2123
+ // create_function('$node', '$node = pq($node);
2124
+ // return $node->is("h1")
2125
+ // || $node->is("h2")
2126
+ // || $node->is("h3")
2127
+ // || $node->is("h4")
2128
+ // || $node->is("h5")
2129
+ // || $node->is("h6")
2130
+ // || $node->is("h7")
2131
+ // ? $node
2132
+ // : null;')
2133
+ // )->elements;
2134
+ break;
2135
+ case 'only-child':
2136
+ $this->elements = $this->map(
2137
+ create_function('$node',
2138
+ 'return pq($node)->siblings()->size() == 0 ? $node : null;')
2139
+ )->elements;
2140
+ break;
2141
+ case 'first-child':
2142
+ $this->elements = $this->map(
2143
+ create_function('$node', 'return pq($node)->prevAll()->size() == 0 ? $node : null;')
2144
+ )->elements;
2145
+ break;
2146
+ case 'last-child':
2147
+ $this->elements = $this->map(
2148
+ create_function('$node', 'return pq($node)->nextAll()->size() == 0 ? $node : null;')
2149
+ )->elements;
2150
+ break;
2151
+ case 'nth-child':
2152
+ $param = trim($args, "\"'");
2153
+ if (! $param)
2154
+ break;
2155
+ // nth-child(n+b) to nth-child(1n+b)
2156
+ if ($param{0} == 'n')
2157
+ $param = '1'.$param;
2158
+ // :nth-child(index/even/odd/equation)
2159
+ if ($param == 'even' || $param == 'odd')
2160
+ $mapped = $this->map(
2161
+ create_function('$node, $param',
2162
+ '$index = pq($node)->prevAll()->size()+1;
2163
+ if ($param == "even" && ($index%2) == 0)
2164
+ return $node;
2165
+ else if ($param == "odd" && $index%2 == 1)
2166
+ return $node;
2167
+ else
2168
+ return null;'),
2169
+ new CallbackParam(), $param
2170
+ );
2171
+ else if (mb_strlen($param) > 1 && $param{1} == 'n')
2172
+ // an+b
2173
+ $mapped = $this->map(
2174
+ create_function('$node, $param',
2175
+ '$prevs = pq($node)->prevAll()->size();
2176
+ $index = 1+$prevs;
2177
+ $b = mb_strlen($param) > 3
2178
+ ? $param{3}
2179
+ : 0;
2180
+ $a = $param{0};
2181
+ if ($b && $param{2} == "-")
2182
+ $b = -$b;
2183
+ if ($a > 0) {
2184
+ return ($index-$b)%$a == 0
2185
+ ? $node
2186
+ : null;
2187
+ phpQuery::debug($a."*".floor($index/$a)."+$b-1 == ".($a*floor($index/$a)+$b-1)." ?= $prevs");
2188
+ return $a*floor($index/$a)+$b-1 == $prevs
2189
+ ? $node
2190
+ : null;
2191
+ } else if ($a == 0)
2192
+ return $index == $b
2193
+ ? $node
2194
+ : null;
2195
+ else
2196
+ // negative value
2197
+ return $index <= $b
2198
+ ? $node
2199
+ : null;
2200
+ // if (! $b)
2201
+ // return $index%$a == 0
2202
+ // ? $node
2203
+ // : null;
2204
+ // else
2205
+ // return ($index-$b)%$a == 0
2206
+ // ? $node
2207
+ // : null;
2208
+ '),
2209
+ new CallbackParam(), $param
2210
+ );
2211
+ else
2212
+ // index
2213
+ $mapped = $this->map(
2214
+ create_function('$node, $index',
2215
+ '$prevs = pq($node)->prevAll()->size();
2216
+ if ($prevs && $prevs == $index-1)
2217
+ return $node;
2218
+ else if (! $prevs && $index == 1)
2219
+ return $node;
2220
+ else
2221
+ return null;'),
2222
+ new CallbackParam(), $param
2223
+ );
2224
+ $this->elements = $mapped->elements;
2225
+ break;
2226
+ default:
2227
+ $this->debug("Unknown pseudoclass '{$class}', skipping...");
2228
+ }
2229
+ }
2230
+ /**
2231
+ * @access private
2232
+ */
2233
+ protected function __pseudoClassParam($paramsString) {
2234
+ // TODO;
2235
+ }
2236
+ /**
2237
+ * Enter description here...
2238
+ *
2239
+ * @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
2240
+ */
2241
+ public function is($selector, $nodes = null) {
2242
+ phpQuery::debug(array("Is:", $selector));
2243
+ if (! $selector)
2244
+ return false;
2245
+ $oldStack = $this->elements;
2246
+ $returnArray = false;
2247
+ if ($nodes && is_array($nodes)) {
2248
+ $this->elements = $nodes;
2249
+ } else if ($nodes)
2250
+ $this->elements = array($nodes);
2251
+ $this->filter($selector, true);
2252
+ $stack = $this->elements;
2253
+ $this->elements = $oldStack;
2254
+ if ($nodes)
2255
+ return $stack ? $stack : null;
2256
+ return (bool)count($stack);
2257
+ }
2258
+ /**
2259
+ * Enter description here...
2260
+ * jQuery difference.
2261
+ *
2262
+ * Callback:
2263
+ * - $index int
2264
+ * - $node DOMNode
2265
+ *
2266
+ * @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
2267
+ * @link http://docs.jquery.com/Traversing/filter
2268
+ */
2269
+ public function filterCallback($callback, $_skipHistory = false) {
2270
+ if (! $_skipHistory) {
2271
+ $this->elementsBackup = $this->elements;
2272
+ $this->debug("Filtering by callback");
2273
+ }
2274
+ $newStack = array();
2275
+ foreach($this->elements as $index => $node) {
2276
+ $result = phpQuery::callbackRun($callback, array($index, $node));
2277
+ if (is_null($result) || (! is_null($result) && $result))
2278
+ $newStack[] = $node;
2279
+ }
2280
+ $this->elements = $newStack;
2281
+ return $_skipHistory
2282
+ ? $this
2283
+ : $this->newInstance();
2284
+ }
2285
+ /**
2286
+ * Enter description here...
2287
+ *
2288
+ * @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
2289
+ * @link http://docs.jquery.com/Traversing/filter
2290
+ */
2291
+ public function filter($selectors, $_skipHistory = false) {
2292
+ if ($selectors instanceof Callback OR $selectors instanceof Closure)
2293
+ return $this->filterCallback($selectors, $_skipHistory);
2294
+ if (! $_skipHistory)
2295
+ $this->elementsBackup = $this->elements;
2296
+ $notSimpleSelector = array(' ', '>', '~', '+', '/');
2297
+ if (! is_array($selectors))
2298
+ $selectors = $this->parseSelector($selectors);
2299
+ if (! $_skipHistory)
2300
+ $this->debug(array("Filtering:", $selectors));
2301
+ $finalStack = array();
2302
+ foreach($selectors as $selector) {
2303
+ $stack = array();
2304
+ if (! $selector)
2305
+ break;
2306
+ // avoid first space or /
2307
+ if (in_array($selector[0], $notSimpleSelector))
2308
+ $selector = array_slice($selector, 1);
2309
+ // PER NODE selector chunks
2310
+ foreach($this->stack() as $node) {
2311
+ $break = false;
2312
+ foreach($selector as $s) {
2313
+ if (!($node instanceof DOMELEMENT)) {
2314
+ // all besides DOMElement
2315
+ if ( $s[0] == '[') {
2316
+ $attr = trim($s, '[]');
2317
+ if ( mb_strpos($attr, '=')) {
2318
+ list( $attr, $val ) = explode('=', $attr);
2319
+ if ($attr == 'nodeType' && $node->nodeType != $val)
2320
+ $break = true;
2321
+ }
2322
+ } else
2323
+ $break = true;
2324
+ } else {
2325
+ // DOMElement only
2326
+ // ID
2327
+ if ( $s[0] == '#') {
2328
+ if ( $node->getAttribute('id') != substr($s, 1) )
2329
+ $break = true;
2330
+ // CLASSES
2331
+ } else if ( $s[0] == '.') {
2332
+ if (! $this->matchClasses( $s, $node ) )
2333
+ $break = true;
2334
+ // ATTRS
2335
+ } else if ( $s[0] == '[') {
2336
+ // strip side brackets
2337
+ $attr = trim($s, '[]');
2338
+ if (mb_strpos($attr, '=')) {
2339
+ list($attr, $val) = explode('=', $attr);
2340
+ $val = self::unQuote($val);
2341
+ if ($attr == 'nodeType') {
2342
+ if ($val != $node->nodeType)
2343
+ $break = true;
2344
+ } else if ($this->isRegexp($attr)) {
2345
+ $val = extension_loaded('mbstring') && phpQuery::$mbstringSupport
2346
+ ? quotemeta(trim($val, '"\''))
2347
+ : preg_quote(trim($val, '"\''), '@');
2348
+ // switch last character
2349
+ switch( substr($attr, -1)) {
2350
+ // quotemeta used insted of preg_quote
2351
+ // http://code.google.com/p/phpquery/issues/detail?id=76
2352
+ case '^':
2353
+ $pattern = '^'.$val;
2354
+ break;
2355
+ case '*':
2356
+ $pattern = '.*'.$val.'.*';
2357
+ break;
2358
+ case '$':
2359
+ $pattern = '.*'.$val.'$';
2360
+ break;
2361
+ }
2362
+ // cut last character
2363
+ $attr = substr($attr, 0, -1);
2364
+ $isMatch = extension_loaded('mbstring') && in_array('mb_ereg_match', get_extension_funcs("mbstring")) && phpQuery::$mbstringSupport
2365
+ ? mb_ereg_match($pattern, $node->getAttribute($attr))
2366
+ : preg_match("@{$pattern}@", $node->getAttribute($attr));
2367
+ if (! $isMatch)
2368
+ $break = true;
2369
+ } else if ($node->getAttribute($attr) != $val)
2370
+ $break = true;
2371
+ } else if (! $node->hasAttribute($attr))
2372
+ $break = true;
2373
+ // PSEUDO CLASSES
2374
+ } else if ( $s[0] == ':') {
2375
+ // skip
2376
+ // TAG
2377
+ } else if (trim($s)) {
2378
+ if ($s != '*') {
2379
+ // TODO namespaces
2380
+ if (isset($node->tagName)) {
2381
+ if ($node->tagName != $s)
2382
+ $break = true;
2383
+ } else if ($s == 'html' && ! $this->isRoot($node))
2384
+ $break = true;
2385
+ }
2386
+ // AVOID NON-SIMPLE SELECTORS
2387
+ } else if (in_array($s, $notSimpleSelector)) {
2388
+ $break = true;
2389
+ $this->debug(array('Skipping non simple selector', $selector));
2390
+ }
2391
+ }
2392
+ if ($break)
2393
+ break;
2394
+ }
2395
+ // if element passed all chunks of selector - add it to new stack
2396
+ if (! $break )
2397
+ $stack[] = $node;
2398
+ }
2399
+ $tmpStack = $this->elements;
2400
+ $this->elements = $stack;
2401
+ // PER ALL NODES selector chunks
2402
+ foreach($selector as $s)
2403
+ // PSEUDO CLASSES
2404
+ if ($s[0] == ':')
2405
+ $this->pseudoClasses($s);
2406
+ foreach($this->elements as $node)
2407
+ // XXX it should be merged without duplicates
2408
+ // but jQuery doesnt do that
2409
+ $finalStack[] = $node;
2410
+ $this->elements = $tmpStack;
2411
+ }
2412
+ $this->elements = $finalStack;
2413
+ if ($_skipHistory) {
2414
+ return $this;
2415
+ } else {
2416
+ $this->debug("Stack length after filter(): ".count($finalStack));
2417
+ return $this->newInstance();
2418
+ }
2419
+ }
2420
+ /**
2421
+ *
2422
+ * @param $value
2423
+ * @return unknown_type
2424
+ * @TODO implement in all methods using passed parameters
2425
+ */
2426
+ protected static function unQuote($value) {
2427
+ return $value[0] == '\'' || $value[0] == '"'
2428
+ ? substr($value, 1, -1)
2429
+ : $value;
2430
+ }
2431
+ /**
2432
+ * Enter description here...
2433
+ *
2434
+ * @link http://docs.jquery.com/Ajax/load
2435
+ * @return phpQuery|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
2436
+ * @todo Support $selector
2437
+ */
2438
+ public function load($url, $data = null, $callback = null) {
2439
+ if ($data && ! is_array($data)) {
2440
+ $callback = $data;
2441
+ $data = null;
2442
+ }
2443
+ if (mb_strpos($url, ' ') !== false) {
2444
+ $matches = null;
2445
+ if (extension_loaded('mbstring') && in_array('mb_ereg', get_extension_funcs("mbstring")) && phpQuery::$mbstringSupport)
2446
+ mb_ereg('^([^ ]+) (.*)$', $url, $matches);
2447
+ else
2448
+ preg_match('^([^ ]+) (.*)$', $url, $matches);
2449
+ $url = $matches[1];
2450
+ $selector = $matches[2];
2451
+ // FIXME this sucks, pass as callback param
2452
+ $this->_loadSelector = $selector;
2453
+ }
2454
+ $ajax = array(
2455
+ 'url' => $url,
2456
+ 'type' => $data ? 'POST' : 'GET',
2457
+ 'data' => $data,
2458
+ 'complete' => $callback,
2459
+ 'success' => array($this, '__loadSuccess')
2460
+ );
2461
+ phpQuery::ajax($ajax);
2462
+ return $this;
2463
+ }
2464
+ /**
2465
+ * @access private
2466
+ * @param $html
2467
+ * @return unknown_type
2468
+ */
2469
+ public function __loadSuccess($html) {
2470
+ if ($this->_loadSelector) {
2471
+ $html = phpQuery::newDocument($html)->find($this->_loadSelector);
2472
+ unset($this->_loadSelector);
2473
+ }
2474
+ foreach($this->stack(1) as $node) {
2475
+ phpQuery::pq($node, $this->getDocumentID())
2476
+ ->markup($html);
2477
+ }
2478
+ }
2479
+ /**
2480
+ * Enter description here...
2481
+ *
2482
+ * @return phpQuery|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
2483
+ * @todo
2484
+ */
2485
+ public function css() {
2486
+ // TODO
2487
+ return $this;
2488
+ }
2489
+ /**
2490
+ * @todo
2491
+ *
2492
+ */
2493
+ public function show(){
2494
+ // TODO
2495
+ return $this;
2496
+ }
2497
+ /**
2498
+ * @todo
2499
+ *
2500
+ */
2501
+ public function hide(){
2502
+ // TODO
2503
+ return $this;
2504
+ }
2505
+ /**
2506
+ * Trigger a type of event on every matched element.
2507
+ *
2508
+ * @param unknown_type $type
2509
+ * @param unknown_type $data
2510
+ * @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
2511
+ * @TODO support more than event in $type (space-separated)
2512
+ */
2513
+ public function trigger($type, $data = array()) {
2514
+ foreach($this->elements as $node)
2515
+ phpQueryEvents::trigger($this->getDocumentID(), $type, $data, $node);
2516
+ return $this;
2517
+ }
2518
+ /**
2519
+ * This particular method triggers all bound event handlers on an element (for a specific event type) WITHOUT executing the browsers default actions.
2520
+ *
2521
+ * @param unknown_type $type
2522
+ * @param unknown_type $data
2523
+ * @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
2524
+ * @TODO
2525
+ */
2526
+ public function triggerHandler($type, $data = array()) {
2527
+ // TODO;
2528
+ }
2529
+ /**
2530
+ * Binds a handler to one or more events (like click) for each matched element.
2531
+ * Can also bind custom events.
2532
+ *
2533
+ * @param unknown_type $type
2534
+ * @param unknown_type $data Optional
2535
+ * @param unknown_type $callback
2536
+ * @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
2537
+ * @TODO support '!' (exclusive) events
2538
+ * @TODO support more than event in $type (space-separated)
2539
+ */
2540
+ public function bind($type, $data, $callback = null) {
2541
+ // TODO check if $data is callable, not using is_callable
2542
+ if (! isset($callback)) {
2543
+ $callback = $data;
2544
+ $data = null;
2545
+ }
2546
+ foreach($this->elements as $node)
2547
+ phpQueryEvents::add($this->getDocumentID(), $node, $type, $data, $callback);
2548
+ return $this;
2549
+ }
2550
+ /**
2551
+ * Enter description here...
2552
+ *
2553
+ * @param unknown_type $type
2554
+ * @param unknown_type $callback
2555
+ * @return unknown
2556
+ * @TODO namespace events
2557
+ * @TODO support more than event in $type (space-separated)
2558
+ */
2559
+ public function unbind($type = null, $callback = null) {
2560
+ foreach($this->elements as $node)
2561
+ phpQueryEvents::remove($this->getDocumentID(), $node, $type, $callback);
2562
+ return $this;
2563
+ }
2564
+ /**
2565
+ * Enter description here...
2566
+ *
2567
+ * @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
2568
+ */
2569
+ public function change($callback = null) {
2570
+ if ($callback)
2571
+ return $this->bind('change', $callback);
2572
+ return $this->trigger('change');
2573
+ }
2574
+ /**
2575
+ * Enter description here...
2576
+ *
2577
+ * @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
2578
+ */
2579
+ public function submit($callback = null) {
2580
+ if ($callback)
2581
+ return $this->bind('submit', $callback);
2582
+ return $this->trigger('submit');
2583
+ }
2584
+ /**
2585
+ * Enter description here...
2586
+ *
2587
+ * @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
2588
+ */
2589
+ public function click($callback = null) {
2590
+ if ($callback)
2591
+ return $this->bind('click', $callback);
2592
+ return $this->trigger('click');
2593
+ }
2594
+ /**
2595
+ * Enter description here...
2596
+ *
2597
+ * @param String|phpQuery
2598
+ * @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
2599
+ */
2600
+ public function wrapAllOld($wrapper) {
2601
+ $wrapper = pq($wrapper)->_clone();
2602
+ if (! $wrapper->length() || ! $this->length() )
2603
+ return $this;
2604
+ $wrapper->insertBefore($this->elements[0]);
2605
+ $deepest = $wrapper->elements[0];
2606
+ while($deepest->firstChild && $deepest->firstChild instanceof DOMELEMENT)
2607
+ $deepest = $deepest->firstChild;
2608
+ pq($deepest)->append($this);
2609
+ return $this;
2610
+ }
2611
+ /**
2612
+ * Enter description here...
2613
+ *
2614
+ * TODO testme...
2615
+ * @param String|phpQuery
2616
+ * @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
2617
+ */
2618
+ public function wrapAll($wrapper) {
2619
+ if (! $this->length())
2620
+ return $this;
2621
+ return phpQuery::pq($wrapper, $this->getDocumentID())
2622
+ ->clone()
2623
+ ->insertBefore($this->get(0))
2624
+ ->map(array($this, '___wrapAllCallback'))
2625
+ ->append($this);
2626
+ }
2627
+ /**
2628
+ *
2629
+ * @param $node
2630
+ * @return unknown_type
2631
+ * @access private
2632
+ */
2633
+ public function ___wrapAllCallback($node) {
2634
+ $deepest = $node;
2635
+ while($deepest->firstChild && $deepest->firstChild instanceof DOMELEMENT)
2636
+ $deepest = $deepest->firstChild;
2637
+ return $deepest;
2638
+ }
2639
+ /**
2640
+ * Enter description here...
2641
+ * NON JQUERY METHOD
2642
+ *
2643
+ * @param String|phpQuery
2644
+ * @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
2645
+ */
2646
+ public function wrapAllPHP($codeBefore, $codeAfter) {
2647
+ return $this
2648
+ ->slice(0, 1)
2649
+ ->beforePHP($codeBefore)
2650
+ ->end()
2651
+ ->slice(-1)
2652
+ ->afterPHP($codeAfter)
2653
+ ->end();
2654
+ }
2655
+ /**
2656
+ * Enter description here...
2657
+ *
2658
+ * @param String|phpQuery
2659
+ * @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
2660
+ */
2661
+ public function wrap($wrapper) {
2662
+ foreach($this->stack() as $node)
2663
+ phpQuery::pq($node, $this->getDocumentID())->wrapAll($wrapper);
2664
+ return $this;
2665
+ }
2666
+ /**
2667
+ * Enter description here...
2668
+ *
2669
+ * @param String|phpQuery
2670
+ * @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
2671
+ */
2672
+ public function wrapPHP($codeBefore, $codeAfter) {
2673
+ foreach($this->stack() as $node)
2674
+ phpQuery::pq($node, $this->getDocumentID())->wrapAllPHP($codeBefore, $codeAfter);
2675
+ return $this;
2676
+ }
2677
+ /**
2678
+ * Enter description here...
2679
+ *
2680
+ * @param String|phpQuery
2681
+ * @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
2682
+ */
2683
+ public function wrapInner($wrapper) {
2684
+ foreach($this->stack() as $node)
2685
+ phpQuery::pq($node, $this->getDocumentID())->contents()->wrapAll($wrapper);
2686
+ return $this;
2687
+ }
2688
+ /**
2689
+ * Enter description here...
2690
+ *
2691
+ * @param String|phpQuery
2692
+ * @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
2693
+ */
2694
+ public function wrapInnerPHP($codeBefore, $codeAfter) {
2695
+ foreach($this->stack(1) as $node)
2696
+ phpQuery::pq($node, $this->getDocumentID())->contents()
2697
+ ->wrapAllPHP($codeBefore, $codeAfter);
2698
+ return $this;
2699
+ }
2700
+ /**
2701
+ * Enter description here...
2702
+ *
2703
+ * @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
2704
+ * @testme Support for text nodes
2705
+ */
2706
+ public function contents() {
2707
+ $stack = array();
2708
+ foreach($this->stack(1) as $el) {
2709
+ // FIXME (fixed) http://code.google.com/p/phpquery/issues/detail?id=56
2710
+ // if (! isset($el->childNodes))
2711
+ // continue;
2712
+ foreach($el->childNodes as $node) {
2713
+ $stack[] = $node;
2714
+ }
2715
+ }
2716
+ return $this->newInstance($stack);
2717
+ }
2718
+ /**
2719
+ * Enter description here...
2720
+ *
2721
+ * jQuery difference.
2722
+ *
2723
+ * @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
2724
+ */
2725
+ public function contentsUnwrap() {
2726
+ foreach($this->stack(1) as $node) {
2727
+ if (! $node->parentNode )
2728
+ continue;
2729
+ $childNodes = array();
2730
+ // any modification in DOM tree breaks childNodes iteration, so cache them first
2731
+ foreach($node->childNodes as $chNode )
2732
+ $childNodes[] = $chNode;
2733
+ foreach($childNodes as $chNode )
2734
+ // $node->parentNode->appendChild($chNode);
2735
+ $node->parentNode->insertBefore($chNode, $node);
2736
+ $node->parentNode->removeChild($node);
2737
+ }
2738
+ return $this;
2739
+ }
2740
+ /**
2741
+ * Enter description here...
2742
+ *
2743
+ * jQuery difference.
2744
+ */
2745
+ public function switchWith($markup) {
2746
+ $markup = pq($markup, $this->getDocumentID());
2747
+ $content = null;
2748
+ foreach($this->stack(1) as $node) {
2749
+ pq($node)
2750
+ ->contents()->toReference($content)->end()
2751
+ ->replaceWith($markup->clone()->append($content));
2752
+ }
2753
+ return $this;
2754
+ }
2755
+ /**
2756
+ * Enter description here...
2757
+ *
2758
+ * @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
2759
+ */
2760
+ public function eq($num) {
2761
+ $oldStack = $this->elements;
2762
+ $this->elementsBackup = $this->elements;
2763
+ $this->elements = array();
2764
+ if ( isset($oldStack[$num]) )
2765
+ $this->elements[] = $oldStack[$num];
2766
+ return $this->newInstance();
2767
+ }
2768
+ /**
2769
+ * Enter description here...
2770
+ *
2771
+ * @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
2772
+ */
2773
+ public function size() {
2774
+ return count($this->elements);
2775
+ }
2776
+ /**
2777
+ * Enter description here...
2778
+ *
2779
+ * @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
2780
+ * @deprecated Use length as attribute
2781
+ */
2782
+ public function length() {
2783
+ return $this->size();
2784
+ }
2785
+ public function count() {
2786
+ return $this->size();
2787
+ }
2788
+ /**
2789
+ * Enter description here...
2790
+ *
2791
+ * @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
2792
+ * @todo $level
2793
+ */
2794
+ public function end($level = 1) {
2795
+ // $this->elements = array_pop( $this->history );
2796
+ // return $this;
2797
+ // $this->previous->DOM = $this->DOM;
2798
+ // $this->previous->XPath = $this->XPath;
2799
+ return $this->previous
2800
+ ? $this->previous
2801
+ : $this;
2802
+ }
2803
+ /**
2804
+ * Enter description here...
2805
+ * Normal use ->clone() .
2806
+ *
2807
+ * @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
2808
+ * @access private
2809
+ */
2810
+ public function _clone() {
2811
+ $newStack = array();
2812
+ //pr(array('copy... ', $this->whois()));
2813
+ //$this->dumpHistory('copy');
2814
+ $this->elementsBackup = $this->elements;
2815
+ foreach($this->elements as $node) {
2816
+ $newStack[] = $node->cloneNode(true);
2817
+ }
2818
+ $this->elements = $newStack;
2819
+ return $this->newInstance();
2820
+ }
2821
+ /**
2822
+ * Enter description here...
2823
+ *
2824
+ * @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
2825
+ */
2826
+ public function replaceWithPHP($code) {
2827
+ return $this->replaceWith(phpQuery::php($code));
2828
+ }
2829
+ /**
2830
+ * Enter description here...
2831
+ *
2832
+ * @param String|phpQuery $content
2833
+ * @link http://docs.jquery.com/Manipulation/replaceWith#content
2834
+ * @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
2835
+ */
2836
+ public function replaceWith($content) {
2837
+ return $this->after($content)->remove();
2838
+ }
2839
+ /**
2840
+ * Enter description here...
2841
+ *
2842
+ * @param String $selector
2843
+ * @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
2844
+ * @todo this works ?
2845
+ */
2846
+ public function replaceAll($selector) {
2847
+ foreach(phpQuery::pq($selector, $this->getDocumentID()) as $node)
2848
+ phpQuery::pq($node, $this->getDocumentID())
2849
+ ->after($this->_clone())
2850
+ ->remove();
2851
+ return $this;
2852
+ }
2853
+ /**
2854
+ * Enter description here...
2855
+ *
2856
+ * @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
2857
+ */
2858
+ public function remove($selector = null) {
2859
+ $loop = $selector
2860
+ ? $this->filter($selector)->elements
2861
+ : $this->elements;
2862
+ foreach($loop as $node) {
2863
+ if (! $node->parentNode )
2864
+ continue;
2865
+ if (isset($node->tagName))
2866
+ $this->debug("Removing '{$node->tagName}'");
2867
+ $node->parentNode->removeChild($node);
2868
+ // Mutation event
2869
+ $event = new DOMEvent(array(
2870
+ 'target' => $node,
2871
+ 'type' => 'DOMNodeRemoved'
2872
+ ));
2873
+ phpQueryEvents::trigger($this->getDocumentID(),
2874
+ $event->type, array($event), $node
2875
+ );
2876
+ }
2877
+ return $this;
2878
+ }
2879
+ protected function markupEvents($newMarkup, $oldMarkup, $node) {
2880
+ if ($node->tagName == 'textarea' && $newMarkup != $oldMarkup) {
2881
+ $event = new DOMEvent(array(
2882
+ 'target' => $node,
2883
+ 'type' => 'change'
2884
+ ));
2885
+ phpQueryEvents::trigger($this->getDocumentID(),
2886
+ $event->type, array($event), $node
2887
+ );
2888
+ }
2889
+ }
2890
+ /**
2891
+ * jQuey difference
2892
+ *
2893
+ * @param $markup
2894
+ * @return unknown_type
2895
+ * @TODO trigger change event for textarea
2896
+ */
2897
+ public function markup($markup = null, $callback1 = null, $callback2 = null, $callback3 = null) {
2898
+ $args = func_get_args();
2899
+ if ($this->documentWrapper->isXML)
2900
+ return call_user_func_array(array($this, 'xml'), $args);
2901
+ else
2902
+ return call_user_func_array(array($this, 'html'), $args);
2903
+ }
2904
+ /**
2905
+ * jQuey difference
2906
+ *
2907
+ * @param $markup
2908
+ * @return unknown_type
2909
+ */
2910
+ public function markupOuter($callback1 = null, $callback2 = null, $callback3 = null) {
2911
+ $args = func_get_args();
2912
+ if ($this->documentWrapper->isXML)
2913
+ return call_user_func_array(array($this, 'xmlOuter'), $args);
2914
+ else
2915
+ return call_user_func_array(array($this, 'htmlOuter'), $args);
2916
+ }
2917
+ /**
2918
+ * Enter description here...
2919
+ *
2920
+ * @param unknown_type $html
2921
+ * @return string|phpQuery|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
2922
+ * @TODO force html result
2923
+ */
2924
+ public function html($html = null, $callback1 = null, $callback2 = null, $callback3 = null) {
2925
+ if (isset($html)) {
2926
+ // INSERT
2927
+ $nodes = $this->documentWrapper->import($html);
2928
+ $this->empty();
2929
+ foreach($this->stack(1) as $alreadyAdded => $node) {
2930
+ // for now, limit events for textarea
2931
+ if (($this->isXHTML() || $this->isHTML()) && $node->tagName == 'textarea')
2932
+ $oldHtml = pq($node, $this->getDocumentID())->markup();
2933
+ foreach($nodes as $newNode) {
2934
+ $node->appendChild($alreadyAdded
2935
+ ? $newNode->cloneNode(true)
2936
+ : $newNode
2937
+ );
2938
+ }
2939
+ // for now, limit events for textarea
2940
+ if (($this->isXHTML() || $this->isHTML()) && $node->tagName == 'textarea')
2941
+ $this->markupEvents($html, $oldHtml, $node);
2942
+ }
2943
+ return $this;
2944
+ } else {
2945
+ // FETCH
2946
+ $return = $this->documentWrapper->markup($this->elements, true);
2947
+ $args = func_get_args();
2948
+ foreach(array_slice($args, 1) as $callback) {
2949
+ $return = phpQuery::callbackRun($callback, array($return));
2950
+ }
2951
+ return $return;
2952
+ }
2953
+ }
2954
+ /**
2955
+ * @TODO force xml result
2956
+ */
2957
+ public function xml($xml = null, $callback1 = null, $callback2 = null, $callback3 = null) {
2958
+ $args = func_get_args();
2959
+ return call_user_func_array(array($this, 'html'), $args);
2960
+ }
2961
+ /**
2962
+ * Enter description here...
2963
+ * @TODO force html result
2964
+ *
2965
+ * @return String
2966
+ */
2967
+ public function htmlOuter($callback1 = null, $callback2 = null, $callback3 = null) {
2968
+ $markup = $this->documentWrapper->markup($this->elements);
2969
+ // pass thou callbacks
2970
+ $args = func_get_args();
2971
+ foreach($args as $callback) {
2972
+ $markup = phpQuery::callbackRun($callback, array($markup));
2973
+ }
2974
+ return $markup;
2975
+ }
2976
+ /**
2977
+ * @TODO force xml result
2978
+ */
2979
+ public function xmlOuter($callback1 = null, $callback2 = null, $callback3 = null) {
2980
+ $args = func_get_args();
2981
+ return call_user_func_array(array($this, 'htmlOuter'), $args);
2982
+ }
2983
+ public function __toString() {
2984
+ return $this->markupOuter();
2985
+ }
2986
+ /**
2987
+ * Just like html(), but returns markup with VALID (dangerous) PHP tags.
2988
+ *
2989
+ * @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
2990
+ * @todo support returning markup with PHP tags when called without param
2991
+ */
2992
+ public function php($code = null) {
2993
+ return $this->markupPHP($code);
2994
+ }
2995
+ /**
2996
+ * Enter description here...
2997
+ *
2998
+ * @param $code
2999
+ * @return unknown_type
3000
+ */
3001
+ public function markupPHP($code = null) {
3002
+ return isset($code)
3003
+ ? $this->markup(phpQuery::php($code))
3004
+ : phpQuery::markupToPHP($this->markup());
3005
+ }
3006
+ /**
3007
+ * Enter description here...
3008
+ *
3009
+ * @param $code
3010
+ * @return unknown_type
3011
+ */
3012
+ public function markupOuterPHP() {
3013
+ return phpQuery::markupToPHP($this->markupOuter());
3014
+ }
3015
+ /**
3016
+ * Enter description here...
3017
+ *
3018
+ * @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
3019
+ */
3020
+ public function children($selector = null) {
3021
+ $stack = array();
3022
+ foreach($this->stack(1) as $node) {
3023
+ // foreach($node->getElementsByTagName('*') as $newNode) {
3024
+ foreach($node->childNodes as $newNode) {
3025
+ if ($newNode->nodeType != 1)
3026
+ continue;
3027
+ if ($selector && ! $this->is($selector, $newNode))
3028
+ continue;
3029
+ if ($this->elementsContainsNode($newNode, $stack))
3030
+ continue;
3031
+ $stack[] = $newNode;
3032
+ }
3033
+ }
3034
+ $this->elementsBackup = $this->elements;
3035
+ $this->elements = $stack;
3036
+ return $this->newInstance();
3037
+ }
3038
+ /**
3039
+ * Enter description here...
3040
+ *
3041
+ * @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
3042
+ */
3043
+ public function ancestors($selector = null) {
3044
+ return $this->children( $selector );
3045
+ }
3046
+ /**
3047
+ * Enter description here...
3048
+ *
3049
+ * @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
3050
+ */
3051
+ public function append( $content) {
3052
+ return $this->insert($content, __FUNCTION__);
3053
+ }
3054
+ /**
3055
+ * Enter description here...
3056
+ *
3057
+ * @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
3058
+ */
3059
+ public function appendPHP( $content) {
3060
+ return $this->insert("<php><!-- {$content} --></php>", 'append');
3061
+ }
3062
+ /**
3063
+ * Enter description here...
3064
+ *
3065
+ * @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
3066
+ */
3067
+ public function appendTo( $seletor) {
3068
+ return $this->insert($seletor, __FUNCTION__);
3069
+ }
3070
+ /**
3071
+ * Enter description here...
3072
+ *
3073
+ * @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
3074
+ */
3075
+ public function prepend( $content) {
3076
+ return $this->insert($content, __FUNCTION__);
3077
+ }
3078
+ /**
3079
+ * Enter description here...
3080
+ *
3081
+ * @todo accept many arguments, which are joined, arrays maybe also
3082
+ * @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
3083
+ */
3084
+ public function prependPHP( $content) {
3085
+ return $this->insert("<php><!-- {$content} --></php>", 'prepend');
3086
+ }
3087
+ /**
3088
+ * Enter description here...
3089
+ *
3090
+ * @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
3091
+ */
3092
+ public function prependTo( $seletor) {
3093
+ return $this->insert($seletor, __FUNCTION__);
3094
+ }
3095
+ /**
3096
+ * Enter description here...
3097
+ *
3098
+ * @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
3099
+ */
3100
+ public function before($content) {
3101
+ return $this->insert($content, __FUNCTION__);
3102
+ }
3103
+ /**
3104
+ * Enter description here...
3105
+ *
3106
+ * @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
3107
+ */
3108
+ public function beforePHP( $content) {
3109
+ return $this->insert("<php><!-- {$content} --></php>", 'before');
3110
+ }
3111
+ /**
3112
+ * Enter description here...
3113
+ *
3114
+ * @param String|phpQuery
3115
+ * @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
3116
+ */
3117
+ public function insertBefore( $seletor) {
3118
+ return $this->insert($seletor, __FUNCTION__);
3119
+ }
3120
+ /**
3121
+ * Enter description here...
3122
+ *
3123
+ * @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
3124
+ */
3125
+ public function after( $content) {
3126
+ return $this->insert($content, __FUNCTION__);
3127
+ }
3128
+ /**
3129
+ * Enter description here...
3130
+ *
3131
+ * @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
3132
+ */
3133
+ public function afterPHP( $content) {
3134
+ return $this->insert("<php><!-- {$content} --></php>", 'after');
3135
+ }
3136
+ /**
3137
+ * Enter description here...
3138
+ *
3139
+ * @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
3140
+ */
3141
+ public function insertAfter( $seletor) {
3142
+ return $this->insert($seletor, __FUNCTION__);
3143
+ }
3144
+ /**
3145
+ * Internal insert method. Don't use it.
3146
+ *
3147
+ * @param unknown_type $target
3148
+ * @param unknown_type $type
3149
+ * @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
3150
+ * @access private
3151
+ */
3152
+ public function insert($target, $type) {
3153
+ $this->debug("Inserting data with '{$type}'");
3154
+ $to = false;
3155
+ switch( $type) {
3156
+ case 'appendTo':
3157
+ case 'prependTo':
3158
+ case 'insertBefore':
3159
+ case 'insertAfter':
3160
+ $to = true;
3161
+ }
3162
+ switch(gettype($target)) {
3163
+ case 'string':
3164
+ $insertFrom = $insertTo = array();
3165
+ if ($to) {
3166
+ // INSERT TO
3167
+ $insertFrom = $this->elements;
3168
+ if (phpQuery::isMarkup($target)) {
3169
+ // $target is new markup, import it
3170
+ $insertTo = $this->documentWrapper->import($target);
3171
+ // insert into selected element
3172
+ } else {
3173
+ // $tagret is a selector
3174
+ $thisStack = $this->elements;
3175
+ $this->toRoot();
3176
+ $insertTo = $this->find($target)->elements;
3177
+ $this->elements = $thisStack;
3178
+ }
3179
+ } else {
3180
+ // INSERT FROM
3181
+ $insertTo = $this->elements;
3182
+ $insertFrom = $this->documentWrapper->import($target);
3183
+ }
3184
+ break;
3185
+ case 'object':
3186
+ $insertFrom = $insertTo = array();
3187
+ // phpQuery
3188
+ if ($target instanceof self) {
3189
+ if ($to) {
3190
+ $insertTo = $target->elements;
3191
+ if ($this->documentFragment && $this->stackIsRoot())
3192
+ // get all body children
3193
+ // $loop = $this->find('body > *')->elements;
3194
+ // TODO test it, test it hard...
3195
+ // $loop = $this->newInstance($this->root)->find('> *')->elements;
3196
+ $loop = $this->root->childNodes;
3197
+ else
3198
+ $loop = $this->elements;
3199
+ // import nodes if needed
3200
+ $insertFrom = $this->getDocumentID() == $target->getDocumentID()
3201
+ ? $loop
3202
+ : $target->documentWrapper->import($loop);
3203
+ } else {
3204
+ $insertTo = $this->elements;
3205
+ if ( $target->documentFragment && $target->stackIsRoot() )
3206
+ // get all body children
3207
+ // $loop = $target->find('body > *')->elements;
3208
+ $loop = $target->root->childNodes;
3209
+ else
3210
+ $loop = $target->elements;
3211
+ // import nodes if needed
3212
+ $insertFrom = $this->getDocumentID() == $target->getDocumentID()
3213
+ ? $loop
3214
+ : $this->documentWrapper->import($loop);
3215
+ }
3216
+ // DOMNODE
3217
+ } elseif ($target instanceof DOMNODE) {
3218
+ // import node if needed
3219
+ // if ( $target->ownerDocument != $this->DOM )
3220
+ // $target = $this->DOM->importNode($target, true);
3221
+ if ( $to) {
3222
+ $insertTo = array($target);
3223
+ if ($this->documentFragment && $this->stackIsRoot())
3224
+ // get all body children
3225
+ $loop = $this->root->childNodes;
3226
+ // $loop = $this->find('body > *')->elements;
3227
+ else
3228
+ $loop = $this->elements;
3229
+ foreach($loop as $fromNode)
3230
+ // import nodes if needed
3231
+ $insertFrom[] = ! $fromNode->ownerDocument->isSameNode($target->ownerDocument)
3232
+ ? $target->ownerDocument->importNode($fromNode, true)
3233
+ : $fromNode;
3234
+ } else {
3235
+ // import node if needed
3236
+ if (! $target->ownerDocument->isSameNode($this->document))
3237
+ $target = $this->document->importNode($target, true);
3238
+ $insertTo = $this->elements;
3239
+ $insertFrom[] = $target;
3240
+ }
3241
+ }
3242
+ break;
3243
+ }
3244
+ phpQuery::debug("From ".count($insertFrom)."; To ".count($insertTo)." nodes");
3245
+ foreach($insertTo as $insertNumber => $toNode) {
3246
+ // we need static relative elements in some cases
3247
+ switch( $type) {
3248
+ case 'prependTo':
3249
+ case 'prepend':
3250
+ $firstChild = $toNode->firstChild;
3251
+ break;
3252
+ case 'insertAfter':
3253
+ case 'after':
3254
+ $nextSibling = $toNode->nextSibling;
3255
+ break;
3256
+ }
3257
+ foreach($insertFrom as $fromNode) {
3258
+ // clone if inserted already before
3259
+ $insert = $insertNumber
3260
+ ? $fromNode->cloneNode(true)
3261
+ : $fromNode;
3262
+ switch($type) {
3263
+ case 'appendTo':
3264
+ case 'append':
3265
+ // $toNode->insertBefore(
3266
+ // $fromNode,
3267
+ // $toNode->lastChild->nextSibling
3268
+ // );
3269
+ $toNode->appendChild($insert);
3270
+ $eventTarget = $insert;
3271
+ break;
3272
+ case 'prependTo':
3273
+ case 'prepend':
3274
+ $toNode->insertBefore(
3275
+ $insert,
3276
+ $firstChild
3277
+ );
3278
+ break;
3279
+ case 'insertBefore':
3280
+ case 'before':
3281
+ if (! $toNode->parentNode)
3282
+ throw new Exception("No parentNode, can't do {$type}()");
3283
+ else
3284
+ $toNode->parentNode->insertBefore(
3285
+ $insert,
3286
+ $toNode
3287
+ );
3288
+ break;
3289
+ case 'insertAfter':
3290
+ case 'after':
3291
+ if (! $toNode->parentNode)
3292
+ throw new Exception("No parentNode, can't do {$type}()");
3293
+ else
3294
+ $toNode->parentNode->insertBefore(
3295
+ $insert,
3296
+ $nextSibling
3297
+ );
3298
+ break;
3299
+ }
3300
+ // Mutation event
3301
+ $event = new DOMEvent(array(
3302
+ 'target' => $insert,
3303
+ 'type' => 'DOMNodeInserted'
3304
+ ));
3305
+ phpQueryEvents::trigger($this->getDocumentID(),
3306
+ $event->type, array($event), $insert
3307
+ );
3308
+ }
3309
+ }
3310
+ return $this;
3311
+ }
3312
+ /**
3313
+ * Enter description here...
3314
+ *
3315
+ * @return Int
3316
+ */
3317
+ public function index($subject) {
3318
+ $index = -1;
3319
+ $subject = $subject instanceof phpQueryObject
3320
+ ? $subject->elements[0]
3321
+ : $subject;
3322
+ foreach($this->newInstance() as $k => $node) {
3323
+ if ($node->isSameNode($subject))
3324
+ $index = $k;
3325
+ }
3326
+ return $index;
3327
+ }
3328
+ /**
3329
+ * Enter description here...
3330
+ *
3331
+ * @param unknown_type $start
3332
+ * @param unknown_type $end
3333
+ *
3334
+ * @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
3335
+ * @testme
3336
+ */
3337
+ public function slice($start, $end = null) {
3338
+ // $last = count($this->elements)-1;
3339
+ // $end = $end
3340
+ // ? min($end, $last)
3341
+ // : $last;
3342
+ // if ($start < 0)
3343
+ // $start = $last+$start;
3344
+ // if ($start > $last)
3345
+ // return array();
3346
+ if ($end > 0)
3347
+ $end = $end-$start;
3348
+ return $this->newInstance(
3349
+ array_slice($this->elements, $start, $end)
3350
+ );
3351
+ }
3352
+ /**
3353
+ * Enter description here...
3354
+ *
3355
+ * @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
3356
+ */
3357
+ public function reverse() {
3358
+ $this->elementsBackup = $this->elements;
3359
+ $this->elements = array_reverse($this->elements);
3360
+ return $this->newInstance();
3361
+ }
3362
+ /**
3363
+ * Return joined text content.
3364
+ * @return String
3365
+ */
3366
+ public function text($text = null, $callback1 = null, $callback2 = null, $callback3 = null) {
3367
+ if (isset($text))
3368
+ return $this->html(htmlspecialchars($text));
3369
+ $args = func_get_args();
3370
+ $args = array_slice($args, 1);
3371
+ $return = '';
3372
+ foreach($this->elements as $node) {
3373
+ $text = $node->textContent;
3374
+ if (count($this->elements) > 1 && $text)
3375
+ $text .= "\n";
3376
+ foreach($args as $callback) {
3377
+ $text = phpQuery::callbackRun($callback, array($text));
3378
+ }
3379
+ $return .= $text;
3380
+ }
3381
+ return $return;
3382
+ }
3383
+ /**
3384
+ * Enter description here...
3385
+ *
3386
+ * @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
3387
+ */
3388
+ public function plugin($class, $file = null) {
3389
+ phpQuery::plugin($class, $file);
3390
+ return $this;
3391
+ }
3392
+ /**
3393
+ * Deprecated, use $pq->plugin() instead.
3394
+ *
3395
+ * @deprecated
3396
+ * @param $class
3397
+ * @param $file
3398
+ * @return unknown_type
3399
+ */
3400
+ public static function extend($class, $file = null) {
3401
+ return $this->plugin($class, $file);
3402
+ }
3403
+ /**
3404
+ *
3405
+ * @access private
3406
+ * @param $method
3407
+ * @param $args
3408
+ * @return unknown_type
3409
+ */
3410
+ public function __call($method, $args) {
3411
+ $aliasMethods = array('clone', 'empty');
3412
+ if (isset(phpQuery::$extendMethods[$method])) {
3413
+ array_unshift($args, $this);
3414
+ return phpQuery::callbackRun(
3415
+ phpQuery::$extendMethods[$method], $args
3416
+ );
3417
+ } else if (isset(phpQuery::$pluginsMethods[$method])) {
3418
+ array_unshift($args, $this);
3419
+ $class = phpQuery::$pluginsMethods[$method];
3420
+ $realClass = "phpQueryObjectPlugin_$class";
3421
+ $return = call_user_func_array(
3422
+ array($realClass, $method),
3423
+ $args
3424
+ );
3425
+ // XXX deprecate ?
3426
+ return is_null($return)
3427
+ ? $this
3428
+ : $return;
3429
+ } else if (in_array($method, $aliasMethods)) {
3430
+ return call_user_func_array(array($this, '_'.$method), $args);
3431
+ } else
3432
+ throw new Exception("Method '{$method}' doesnt exist");
3433
+ }
3434
+ /**
3435
+ * Safe rename of next().
3436
+ *
3437
+ * Use it ONLY when need to call next() on an iterated object (in same time).
3438
+ * Normaly there is no need to do such thing ;)
3439
+ *
3440
+ * @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
3441
+ * @access private
3442
+ */
3443
+ public function _next($selector = null) {
3444
+ return $this->newInstance(
3445
+ $this->getElementSiblings('nextSibling', $selector, true)
3446
+ );
3447
+ }
3448
+ /**
3449
+ * Use prev() and next().
3450
+ *
3451
+ * @deprecated
3452
+ * @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
3453
+ * @access private
3454
+ */
3455
+ public function _prev($selector = null) {
3456
+ return $this->prev($selector);
3457
+ }
3458
+ /**
3459
+ * Enter description here...
3460
+ *
3461
+ * @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
3462
+ */
3463
+ public function prev($selector = null) {
3464
+ return $this->newInstance(
3465
+ $this->getElementSiblings('previousSibling', $selector, true)
3466
+ );
3467
+ }
3468
+ /**
3469
+ * @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
3470
+ * @todo
3471
+ */
3472
+ public function prevAll($selector = null) {
3473
+ return $this->newInstance(
3474
+ $this->getElementSiblings('previousSibling', $selector)
3475
+ );
3476
+ }
3477
+ /**
3478
+ * @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
3479
+ * @todo FIXME: returns source elements insted of next siblings
3480
+ */
3481
+ public function nextAll($selector = null) {
3482
+ return $this->newInstance(
3483
+ $this->getElementSiblings('nextSibling', $selector)
3484
+ );
3485
+ }
3486
+ /**
3487
+ * @access private
3488
+ */
3489
+ protected function getElementSiblings($direction, $selector = null, $limitToOne = false) {
3490
+ $stack = array();
3491
+ $count = 0;
3492
+ foreach($this->stack() as $node) {
3493
+ $test = $node;
3494
+ while( isset($test->{$direction}) && $test->{$direction}) {
3495
+ $test = $test->{$direction};
3496
+ if (! $test instanceof DOMELEMENT)
3497
+ continue;
3498
+ $stack[] = $test;
3499
+ if ($limitToOne)
3500
+ break;
3501
+ }
3502
+ }
3503
+ if ($selector) {
3504
+ $stackOld = $this->elements;
3505
+ $this->elements = $stack;
3506
+ $stack = $this->filter($selector, true)->stack();
3507
+ $this->elements = $stackOld;
3508
+ }
3509
+ return $stack;
3510
+ }
3511
+ /**
3512
+ * Enter description here...
3513
+ *
3514
+ * @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
3515
+ */
3516
+ public function siblings($selector = null) {
3517
+ $stack = array();
3518
+ $siblings = array_merge(
3519
+ $this->getElementSiblings('previousSibling', $selector),
3520
+ $this->getElementSiblings('nextSibling', $selector)
3521
+ );
3522
+ foreach($siblings as $node) {
3523
+ if (! $this->elementsContainsNode($node, $stack))
3524
+ $stack[] = $node;
3525
+ }
3526
+ return $this->newInstance($stack);
3527
+ }
3528
+ /**
3529
+ * Enter description here...
3530
+ *
3531
+ * @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
3532
+ */
3533
+ public function not($selector = null) {
3534
+ if (is_string($selector))
3535
+ phpQuery::debug(array('not', $selector));
3536
+ else
3537
+ phpQuery::debug('not');
3538
+ $stack = array();
3539
+ if ($selector instanceof self || $selector instanceof DOMNODE) {
3540
+ foreach($this->stack() as $node) {
3541
+ if ($selector instanceof self) {
3542
+ $matchFound = false;
3543
+ foreach($selector->stack() as $notNode) {
3544
+ if ($notNode->isSameNode($node))
3545
+ $matchFound = true;
3546
+ }
3547
+ if (! $matchFound)
3548
+ $stack[] = $node;
3549
+ } else if ($selector instanceof DOMNODE) {
3550
+ if (! $selector->isSameNode($node))
3551
+ $stack[] = $node;
3552
+ } else {
3553
+ if (! $this->is($selector))
3554
+ $stack[] = $node;
3555
+ }
3556
+ }
3557
+ } else {
3558
+ $orgStack = $this->stack();
3559
+ $matched = $this->filter($selector, true)->stack();
3560
+ // $matched = array();
3561
+ // // simulate OR in filter() instead of AND 5y
3562
+ // foreach($this->parseSelector($selector) as $s) {
3563
+ // $matched = array_merge($matched,
3564
+ // $this->filter(array($s))->stack()
3565
+ // );
3566
+ // }
3567
+ foreach($orgStack as $node)
3568
+ if (! $this->elementsContainsNode($node, $matched))
3569
+ $stack[] = $node;
3570
+ }
3571
+ return $this->newInstance($stack);
3572
+ }
3573
+ /**
3574
+ * Enter description here...
3575
+ *
3576
+ * @param string|phpQueryObject
3577
+ * @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
3578
+ */
3579
+ public function add($selector = null) {
3580
+ if (! $selector)
3581
+ return $this;
3582
+ $stack = array();
3583
+ $this->elementsBackup = $this->elements;
3584
+ $found = phpQuery::pq($selector, $this->getDocumentID());
3585
+ $this->merge($found->elements);
3586
+ return $this->newInstance();
3587
+ }
3588
+ /**
3589
+ * @access private
3590
+ */
3591
+ protected function merge() {
3592
+ foreach(func_get_args() as $nodes)
3593
+ foreach($nodes as $newNode )
3594
+ if (! $this->elementsContainsNode($newNode) )
3595
+ $this->elements[] = $newNode;
3596
+ }
3597
+ /**
3598
+ * @access private
3599
+ * TODO refactor to stackContainsNode
3600
+ */
3601
+ protected function elementsContainsNode($nodeToCheck, $elementsStack = null) {
3602
+ $loop = ! is_null($elementsStack)
3603
+ ? $elementsStack
3604
+ : $this->elements;
3605
+ foreach($loop as $node) {
3606
+ if ( $node->isSameNode( $nodeToCheck ) )
3607
+ return true;
3608
+ }
3609
+ return false;
3610
+ }
3611
+ /**
3612
+ * Enter description here...
3613
+ *
3614
+ * @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
3615
+ */
3616
+ public function parent($selector = null) {
3617
+ $stack = array();
3618
+ foreach($this->elements as $node )
3619
+ if ( $node->parentNode && ! $this->elementsContainsNode($node->parentNode, $stack) )
3620
+ $stack[] = $node->parentNode;
3621
+ $this->elementsBackup = $this->elements;
3622
+ $this->elements = $stack;
3623
+ if ( $selector )
3624
+ $this->filter($selector, true);
3625
+ return $this->newInstance();
3626
+ }
3627
+ /**
3628
+ * Enter description here...
3629
+ *
3630
+ * @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
3631
+ */
3632
+ public function parents($selector = null) {
3633
+ $stack = array();
3634
+ if (! $this->elements )
3635
+ $this->debug('parents() - stack empty');
3636
+ foreach($this->elements as $node) {
3637
+ $test = $node;
3638
+ while( $test->parentNode) {
3639
+ $test = $test->parentNode;
3640
+ if ($this->isRoot($test))
3641
+ break;
3642
+ if (! $this->elementsContainsNode($test, $stack)) {
3643
+ $stack[] = $test;
3644
+ continue;
3645
+ }
3646
+ }
3647
+ }
3648
+ $this->elementsBackup = $this->elements;
3649
+ $this->elements = $stack;
3650
+ if ( $selector )
3651
+ $this->filter($selector, true);
3652
+ return $this->newInstance();
3653
+ }
3654
+ /**
3655
+ * Internal stack iterator.
3656
+ *
3657
+ * @access private
3658
+ */
3659
+ public function stack($nodeTypes = null) {
3660
+ if (!isset($nodeTypes))
3661
+ return $this->elements;
3662
+ if (!is_array($nodeTypes))
3663
+ $nodeTypes = array($nodeTypes);
3664
+ $return = array();
3665
+ foreach($this->elements as $node) {
3666
+ if (in_array($node->nodeType, $nodeTypes))
3667
+ $return[] = $node;
3668
+ }
3669
+ return $return;
3670
+ }
3671
+ // TODO phpdoc; $oldAttr is result of hasAttribute, before any changes
3672
+ protected function attrEvents($attr, $oldAttr, $oldValue, $node) {
3673
+ // skip events for XML documents
3674
+ if (! $this->isXHTML() && ! $this->isHTML())
3675
+ return;
3676
+ $event = null;
3677
+ // identify
3678
+ $isInputValue = $node->tagName == 'input'
3679
+ && (
3680
+ in_array($node->getAttribute('type'),
3681
+ array('text', 'password', 'hidden'))
3682
+ || !$node->getAttribute('type')
3683
+ );
3684
+ $isRadio = $node->tagName == 'input'
3685
+ && $node->getAttribute('type') == 'radio';
3686
+ $isCheckbox = $node->tagName == 'input'
3687
+ && $node->getAttribute('type') == 'checkbox';
3688
+ $isOption = $node->tagName == 'option';
3689
+ if ($isInputValue && $attr == 'value' && $oldValue != $node->getAttribute($attr)) {
3690
+ $event = new DOMEvent(array(
3691
+ 'target' => $node,
3692
+ 'type' => 'change'
3693
+ ));
3694
+ } else if (($isRadio || $isCheckbox) && $attr == 'checked' && (
3695
+ // check
3696
+ (! $oldAttr && $node->hasAttribute($attr))
3697
+ // un-check
3698
+ || (! $node->hasAttribute($attr) && $oldAttr)
3699
+ )) {
3700
+ $event = new DOMEvent(array(
3701
+ 'target' => $node,
3702
+ 'type' => 'change'
3703
+ ));
3704
+ } else if ($isOption && $node->parentNode && $attr == 'selected' && (
3705
+ // select
3706
+ (! $oldAttr && $node->hasAttribute($attr))
3707
+ // un-select
3708
+ || (! $node->hasAttribute($attr) && $oldAttr)
3709
+ )) {
3710
+ $event = new DOMEvent(array(
3711
+ 'target' => $node->parentNode,
3712
+ 'type' => 'change'
3713
+ ));
3714
+ }
3715
+ if ($event) {
3716
+ phpQueryEvents::trigger($this->getDocumentID(),
3717
+ $event->type, array($event), $node
3718
+ );
3719
+ }
3720
+ }
3721
+ public function attr($attr = null, $value = null) {
3722
+ foreach($this->stack(1) as $node) {
3723
+ if (! is_null($value)) {
3724
+ $loop = $attr == '*'
3725
+ ? $this->getNodeAttrs($node)
3726
+ : array($attr);
3727
+ foreach($loop as $a) {
3728
+ $oldValue = $node->getAttribute($a);
3729
+ $oldAttr = $node->hasAttribute($a);
3730
+ // TODO raises an error when charset other than UTF-8
3731
+ // while document's charset is also not UTF-8
3732
+ @$node->setAttribute($a, $value);
3733
+ $this->attrEvents($a, $oldAttr, $oldValue, $node);
3734
+ }
3735
+ } else if ($attr == '*') {
3736
+ // jQuery difference
3737
+ $return = array();
3738
+ foreach($node->attributes as $n => $v)
3739
+ $return[$n] = $v->value;
3740
+ return $return;
3741
+ } else
3742
+ return $node->hasAttribute($attr)
3743
+ ? $node->getAttribute($attr)
3744
+ : null;
3745
+ }
3746
+ return is_null($value)
3747
+ ? '' : $this;
3748
+ }
3749
+ /**
3750
+ * @access private
3751
+ */
3752
+ protected function getNodeAttrs($node) {
3753
+ $return = array();
3754
+ foreach($node->attributes as $n => $o)
3755
+ $return[] = $n;
3756
+ return $return;
3757
+ }
3758
+ /**
3759
+ * Enter description here...
3760
+ *
3761
+ * @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
3762
+ * @todo check CDATA ???
3763
+ */
3764
+ public function attrPHP($attr, $code) {
3765
+ if (! is_null($code)) {
3766
+ $value = '<'.'?php '.$code.' ?'.'>';
3767
+ // TODO tempolary solution
3768
+ // http://code.google.com/p/phpquery/issues/detail?id=17
3769
+ // if (function_exists('mb_detect_encoding') && mb_detect_encoding($value) == 'ASCII')
3770
+ // $value = mb_convert_encoding($value, 'UTF-8', 'HTML-ENTITIES');
3771
+ }
3772
+ foreach($this->stack(1) as $node) {
3773
+ if (! is_null($code)) {
3774
+ // $attrNode = $this->DOM->createAttribute($attr);
3775
+ $node->setAttribute($attr, $value);
3776
+ // $attrNode->value = $value;
3777
+ // $node->appendChild($attrNode);
3778
+ } else if ( $attr == '*') {
3779
+ // jQuery diff
3780
+ $return = array();
3781
+ foreach($node->attributes as $n => $v)
3782
+ $return[$n] = $v->value;
3783
+ return $return;
3784
+ } else
3785
+ return $node->getAttribute($attr);
3786
+ }
3787
+ return $this;
3788
+ }
3789
+ /**
3790
+ * Enter description here...
3791
+ *
3792
+ * @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
3793
+ */
3794
+ public function removeAttr($attr) {
3795
+ foreach($this->stack(1) as $node) {
3796
+ $loop = $attr == '*'
3797
+ ? $this->getNodeAttrs($node)
3798
+ : array($attr);
3799
+ foreach($loop as $a) {
3800
+ $oldValue = $node->getAttribute($a);
3801
+ $node->removeAttribute($a);
3802
+ $this->attrEvents($a, $oldValue, null, $node);
3803
+ }
3804
+ }
3805
+ return $this;
3806
+ }
3807
+ /**
3808
+ * Return form element value.
3809
+ *
3810
+ * @return String Fields value.
3811
+ */
3812
+ public function val($val = null) {
3813
+ if (! isset($val)) {
3814
+ if ($this->eq(0)->is('select')) {
3815
+ $selected = $this->eq(0)->find('option[selected=selected]');
3816
+ if ($selected->is('[value]'))
3817
+ return $selected->attr('value');
3818
+ else
3819
+ return $selected->text();
3820
+ } else if ($this->eq(0)->is('textarea'))
3821
+ return $this->eq(0)->markup();
3822
+ else
3823
+ return $this->eq(0)->attr('value');
3824
+ } else {
3825
+ $_val = null;
3826
+ foreach($this->stack(1) as $node) {
3827
+ $node = pq($node, $this->getDocumentID());
3828
+ if (is_array($val) && in_array($node->attr('type'), array('checkbox', 'radio'))) {
3829
+ $isChecked = in_array($node->attr('value'), $val)
3830
+ || in_array($node->attr('name'), $val);
3831
+ if ($isChecked)
3832
+ $node->attr('checked', 'checked');
3833
+ else
3834
+ $node->removeAttr('checked');
3835
+ } else if ($node->get(0)->tagName == 'select') {
3836
+ if (! isset($_val)) {
3837
+ $_val = array();
3838
+ if (! is_array($val))
3839
+ $_val = array((string)$val);
3840
+ else
3841
+ foreach($val as $v)
3842
+ $_val[] = $v;
3843
+ }
3844
+ foreach($node['option']->stack(1) as $option) {
3845
+ $option = pq($option, $this->getDocumentID());
3846
+ $selected = false;
3847
+ // XXX: workaround for string comparsion, see issue #96
3848
+ // http://code.google.com/p/phpquery/issues/detail?id=96
3849
+ $selected = is_null($option->attr('value'))
3850
+ ? in_array($option->markup(), $_val)
3851
+ : in_array($option->attr('value'), $_val);
3852
+ // $optionValue = $option->attr('value');
3853
+ // $optionText = $option->text();
3854
+ // $optionTextLenght = mb_strlen($optionText);
3855
+ // foreach($_val as $v)
3856
+ // if ($optionValue == $v)
3857
+ // $selected = true;
3858
+ // else if ($optionText == $v && $optionTextLenght == mb_strlen($v))
3859
+ // $selected = true;
3860
+ if ($selected)
3861
+ $option->attr('selected', 'selected');
3862
+ else
3863
+ $option->removeAttr('selected');
3864
+ }
3865
+ } else if ($node->get(0)->tagName == 'textarea')
3866
+ $node->markup($val);
3867
+ else
3868
+ $node->attr('value', $val);
3869
+ }
3870
+ }
3871
+ return $this;
3872
+ }
3873
+ /**
3874
+ * Enter description here...
3875
+ *
3876
+ * @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
3877
+ */
3878
+ public function andSelf() {
3879
+ if ( $this->previous )
3880
+ $this->elements = array_merge($this->elements, $this->previous->elements);
3881
+ return $this;
3882
+ }
3883
+ /**
3884
+ * Enter description here...
3885
+ *
3886
+ * @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
3887
+ */
3888
+ public function addClass( $className) {
3889
+ if (! $className)
3890
+ return $this;
3891
+ foreach($this->stack(1) as $node) {
3892
+ if (! $this->is(".$className", $node))
3893
+ $node->setAttribute(
3894
+ 'class',
3895
+ trim($node->getAttribute('class').' '.$className)
3896
+ );
3897
+ }
3898
+ return $this;
3899
+ }
3900
+ /**
3901
+ * Enter description here...
3902
+ *
3903
+ * @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
3904
+ */
3905
+ public function addClassPHP( $className) {
3906
+ foreach($this->stack(1) as $node) {
3907
+ $classes = $node->getAttribute('class');
3908
+ $newValue = $classes
3909
+ ? $classes.' <'.'?php '.$className.' ?'.'>'
3910
+ : '<'.'?php '.$className.' ?'.'>';
3911
+ $node->setAttribute('class', $newValue);
3912
+ }
3913
+ return $this;
3914
+ }
3915
+ /**
3916
+ * Enter description here...
3917
+ *
3918
+ * @param string $className
3919
+ * @return bool
3920
+ */
3921
+ public function hasClass($className) {
3922
+ foreach($this->stack(1) as $node) {
3923
+ if ( $this->is(".$className", $node))
3924
+ return true;
3925
+ }
3926
+ return false;
3927
+ }
3928
+ /**
3929
+ * Enter description here...
3930
+ *
3931
+ * @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
3932
+ */
3933
+ public function removeClass($className) {
3934
+ foreach($this->stack(1) as $node) {
3935
+ $classes = explode( ' ', $node->getAttribute('class'));
3936
+ if ( in_array($className, $classes)) {
3937
+ $classes = array_diff($classes, array($className));
3938
+ if ( $classes )
3939
+ $node->setAttribute('class', implode(' ', $classes));
3940
+ else
3941
+ $node->removeAttribute('class');
3942
+ }
3943
+ }
3944
+ return $this;
3945
+ }
3946
+ /**
3947
+ * Enter description here...
3948
+ *
3949
+ * @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
3950
+ */
3951
+ public function toggleClass($className) {
3952
+ foreach($this->stack(1) as $node) {
3953
+ if ( $this->is( $node, '.'.$className ))
3954
+ $this->removeClass($className);
3955
+ else
3956
+ $this->addClass($className);
3957
+ }
3958
+ return $this;
3959
+ }
3960
+ /**
3961
+ * Proper name without underscore (just ->empty()) also works.
3962
+ *
3963
+ * Removes all child nodes from the set of matched elements.
3964
+ *
3965
+ * Example:
3966
+ * pq("p")._empty()
3967
+ *
3968
+ * HTML:
3969
+ * <p>Hello, <span>Person</span> <a href="#">and person</a></p>
3970
+ *
3971
+ * Result:
3972
+ * [ <p></p> ]
3973
+ *
3974
+ * @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
3975
+ * @access private
3976
+ */
3977
+ public function _empty() {
3978
+ foreach($this->stack(1) as $node) {
3979
+ // thx to 'dave at dgx dot cz'
3980
+ $node->nodeValue = '';
3981
+ }
3982
+ return $this;
3983
+ }
3984
+ /**
3985
+ * Enter description here...
3986
+ *
3987
+ * @param array|string $callback Expects $node as first param, $index as second
3988
+ * @param array $scope External variables passed to callback. Use compact('varName1', 'varName2'...) and extract($scope)
3989
+ * @param array $arg1 Will ba passed as third and futher args to callback.
3990
+ * @param array $arg2 Will ba passed as fourth and futher args to callback, and so on...
3991
+ * @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
3992
+ */
3993
+ public function each($callback, $param1 = null, $param2 = null, $param3 = null) {
3994
+ $paramStructure = null;
3995
+ if (func_num_args() > 1) {
3996
+ $paramStructure = func_get_args();
3997
+ $paramStructure = array_slice($paramStructure, 1);
3998
+ }
3999
+ foreach($this->elements as $v)
4000
+ phpQuery::callbackRun($callback, array($v), $paramStructure);
4001
+ return $this;
4002
+ }
4003
+ /**
4004
+ * Run callback on actual object.
4005
+ *
4006
+ * @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
4007
+ */
4008
+ public function callback($callback, $param1 = null, $param2 = null, $param3 = null) {
4009
+ $params = func_get_args();
4010
+ $params[0] = $this;
4011
+ phpQuery::callbackRun($callback, $params);
4012
+ return $this;
4013
+ }
4014
+ /**
4015
+ * Enter description here...
4016
+ *
4017
+ * @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
4018
+ * @todo add $scope and $args as in each() ???
4019
+ */
4020
+ public function map($callback, $param1 = null, $param2 = null, $param3 = null) {
4021
+ // $stack = array();
4022
+ //// foreach($this->newInstance() as $node) {
4023
+ // foreach($this->newInstance() as $node) {
4024
+ // $result = call_user_func($callback, $node);
4025
+ // if ($result)
4026
+ // $stack[] = $result;
4027
+ // }
4028
+ $params = func_get_args();
4029
+ array_unshift($params, $this->elements);
4030
+ return $this->newInstance(
4031
+ call_user_func_array(array('phpQuery', 'map'), $params)
4032
+ // phpQuery::map($this->elements, $callback)
4033
+ );
4034
+ }
4035
+ /**
4036
+ * Enter description here...
4037
+ *
4038
+ * @param <type> $key
4039
+ * @param <type> $value
4040
+ */
4041
+ public function data($key, $value = null) {
4042
+ if (! isset($value)) {
4043
+ // TODO? implement specific jQuery behavior od returning parent values
4044
+ // is child which we look up doesn't exist
4045
+ return phpQuery::data($this->get(0), $key, $value, $this->getDocumentID());
4046
+ } else {
4047
+ foreach($this as $node)
4048
+ phpQuery::data($node, $key, $value, $this->getDocumentID());
4049
+ return $this;
4050
+ }
4051
+ }
4052
+ /**
4053
+ * Enter description here...
4054
+ *
4055
+ * @param <type> $key
4056
+ */
4057
+ public function removeData($key) {
4058
+ foreach($this as $node)
4059
+ phpQuery::removeData($node, $key, $this->getDocumentID());
4060
+ return $this;
4061
+ }
4062
+ // INTERFACE IMPLEMENTATIONS
4063
+
4064
+ // ITERATOR INTERFACE
4065
+ /**
4066
+ * @access private
4067
+ */
4068
+ public function rewind(){
4069
+ $this->debug('iterating foreach');
4070
+ // phpQuery::selectDocument($this->getDocumentID());
4071
+ $this->elementsBackup = $this->elements;
4072
+ $this->elementsInterator = $this->elements;
4073
+ $this->valid = isset( $this->elements[0] )
4074
+ ? 1 : 0;
4075
+ // $this->elements = $this->valid
4076
+ // ? array($this->elements[0])
4077
+ // : array();
4078
+ $this->current = 0;
4079
+ }
4080
+ /**
4081
+ * @access private
4082
+ */
4083
+ public function current(){
4084
+ return $this->elementsInterator[ $this->current ];
4085
+ }
4086
+ /**
4087
+ * @access private
4088
+ */
4089
+ public function key(){
4090
+ return $this->current;
4091
+ }
4092
+ /**
4093
+ * Double-function method.
4094
+ *
4095
+ * First: main iterator interface method.
4096
+ * Second: Returning next sibling, alias for _next().
4097
+ *
4098
+ * Proper functionality is choosed automagicaly.
4099
+ *
4100
+ * @see phpQueryObject::_next()
4101
+ * @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
4102
+ */
4103
+ public function next($cssSelector = null){
4104
+ // if ($cssSelector || $this->valid)
4105
+ // return $this->_next($cssSelector);
4106
+ $this->valid = isset( $this->elementsInterator[ $this->current+1 ] )
4107
+ ? true
4108
+ : false;
4109
+ if (! $this->valid && $this->elementsInterator) {
4110
+ $this->elementsInterator = null;
4111
+ } else if ($this->valid) {
4112
+ $this->current++;
4113
+ } else {
4114
+ return $this->_next($cssSelector);
4115
+ }
4116
+ }
4117
+ /**
4118
+ * @access private
4119
+ */
4120
+ public function valid(){
4121
+ return $this->valid;
4122
+ }
4123
+ // ITERATOR INTERFACE END
4124
+ // ARRAYACCESS INTERFACE
4125
+ /**
4126
+ * @access private
4127
+ */
4128
+ public function offsetExists($offset) {
4129
+ return $this->find($offset)->size() > 0;
4130
+ }
4131
+ /**
4132
+ * @access private
4133
+ */
4134
+ public function offsetGet($offset) {
4135
+ return $this->find($offset);
4136
+ }
4137
+ /**
4138
+ * @access private
4139
+ */
4140
+ public function offsetSet($offset, $value) {
4141
+ // $this->find($offset)->replaceWith($value);
4142
+ $this->find($offset)->html($value);
4143
+ }
4144
+ /**
4145
+ * @access private
4146
+ */
4147
+ public function offsetUnset($offset) {
4148
+ // empty
4149
+ throw new Exception("Can't do unset, use array interface only for calling queries and replacing HTML.");
4150
+ }
4151
+ // ARRAYACCESS INTERFACE END
4152
+ /**
4153
+ * Returns node's XPath.
4154
+ *
4155
+ * @param unknown_type $oneNode
4156
+ * @return string
4157
+ * @TODO use native getNodePath is avaible
4158
+ * @access private
4159
+ */
4160
+ protected function getNodeXpath($oneNode = null, $namespace = null) {
4161
+ $return = array();
4162
+ $loop = $oneNode
4163
+ ? array($oneNode)
4164
+ : $this->elements;
4165
+ // if ($namespace)
4166
+ // $namespace .= ':';
4167
+ foreach($loop as $node) {
4168
+ if ($node instanceof DOMDOCUMENT) {
4169
+ $return[] = '';
4170
+ continue;
4171
+ }
4172
+ $xpath = array();
4173
+ while(! ($node instanceof DOMDOCUMENT)) {
4174
+ $i = 1;
4175
+ $sibling = $node;
4176
+ while($sibling->previousSibling) {
4177
+ $sibling = $sibling->previousSibling;
4178
+ $isElement = $sibling instanceof DOMELEMENT;
4179
+ if ($isElement && $sibling->tagName == $node->tagName)
4180
+ $i++;
4181
+ }
4182
+ $xpath[] = $this->isXML()
4183
+ ? "*[local-name()='{$node->tagName}'][{$i}]"
4184
+ : "{$node->tagName}[{$i}]";
4185
+ $node = $node->parentNode;
4186
+ }
4187
+ $xpath = join('/', array_reverse($xpath));
4188
+ $return[] = '/'.$xpath;
4189
+ }
4190
+ return $oneNode
4191
+ ? $return[0]
4192
+ : $return;
4193
+ }
4194
+ // HELPERS
4195
+ public function whois($oneNode = null) {
4196
+ $return = array();
4197
+ $loop = $oneNode
4198
+ ? array( $oneNode )
4199
+ : $this->elements;
4200
+ foreach($loop as $node) {
4201
+ if (isset($node->tagName)) {
4202
+ $tag = in_array($node->tagName, array('php', 'js'))
4203
+ ? strtoupper($node->tagName)
4204
+ : $node->tagName;
4205
+ $return[] = $tag
4206
+ .($node->getAttribute('id')
4207
+ ? '#'.$node->getAttribute('id'):'')
4208
+ .($node->getAttribute('class')
4209
+ ? '.'.join('.', split(' ', $node->getAttribute('class'))):'')
4210
+ .($node->getAttribute('name')
4211
+ ? '[name="'.$node->getAttribute('name').'"]':'')
4212
+ .($node->getAttribute('value') && strpos($node->getAttribute('value'), '<'.'?php') === false
4213
+ ? '[value="'.substr(str_replace("\n", '', $node->getAttribute('value')), 0, 15).'"]':'')
4214
+ .($node->getAttribute('value') && strpos($node->getAttribute('value'), '<'.'?php') !== false
4215
+ ? '[value=PHP]':'')
4216
+ .($node->getAttribute('selected')
4217
+ ? '[selected]':'')
4218
+ .($node->getAttribute('checked')
4219
+ ? '[checked]':'')
4220
+ ;
4221
+ } else if ($node instanceof DOMTEXT) {
4222
+ if (trim($node->textContent))
4223
+ $return[] = 'Text:'.substr(str_replace("\n", ' ', $node->textContent), 0, 15);
4224
+ } else {
4225
+
4226
+ }
4227
+ }
4228
+ return $oneNode && isset($return[0])
4229
+ ? $return[0]
4230
+ : $return;
4231
+ }
4232
+ /**
4233
+ * Dump htmlOuter and preserve chain. Usefull for debugging.
4234
+ *
4235
+ * @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
4236
+ *
4237
+ */
4238
+ public function dump() {
4239
+ print 'DUMP #'.(phpQuery::$dumpCount++).' ';
4240
+ $debug = phpQuery::$debug;
4241
+ phpQuery::$debug = false;
4242
+ // print __FILE__.':'.__LINE__."\n";
4243
+ var_dump($this->htmlOuter());
4244
+ return $this;
4245
+ }
4246
+ public function dumpWhois() {
4247
+ print 'DUMP #'.(phpQuery::$dumpCount++).' ';
4248
+ $debug = phpQuery::$debug;
4249
+ phpQuery::$debug = false;
4250
+ // print __FILE__.':'.__LINE__."\n";
4251
+ var_dump('whois', $this->whois());
4252
+ phpQuery::$debug = $debug;
4253
+ return $this;
4254
+ }
4255
+ public function dumpLength() {
4256
+ print 'DUMP #'.(phpQuery::$dumpCount++).' ';
4257
+ $debug = phpQuery::$debug;
4258
+ phpQuery::$debug = false;
4259
+ // print __FILE__.':'.__LINE__."\n";
4260
+ var_dump('length', $this->length());
4261
+ phpQuery::$debug = $debug;
4262
+ return $this;
4263
+ }
4264
+ public function dumpTree($html = true, $title = true) {
4265
+ $output = $title
4266
+ ? 'DUMP #'.(phpQuery::$dumpCount++)." \n" : '';
4267
+ $debug = phpQuery::$debug;
4268
+ phpQuery::$debug = false;
4269
+ foreach($this->stack() as $node)
4270
+ $output .= $this->__dumpTree($node);
4271
+ phpQuery::$debug = $debug;
4272
+ print $html
4273
+ ? nl2br(str_replace(' ', '&nbsp;', $output))
4274
+ : $output;
4275
+ return $this;
4276
+ }
4277
+ private function __dumpTree($node, $intend = 0) {
4278
+ $whois = $this->whois($node);
4279
+ $return = '';
4280
+ if ($whois)
4281
+ $return .= str_repeat(' - ', $intend).$whois."\n";
4282
+ if (isset($node->childNodes))
4283
+ foreach($node->childNodes as $chNode)
4284
+ $return .= $this->__dumpTree($chNode, $intend+1);
4285
+ return $return;
4286
+ }
4287
+ /**
4288
+ * Dump htmlOuter and stop script execution. Usefull for debugging.
4289
+ *
4290
+ */
4291
+ public function dumpDie() {
4292
+ print __FILE__.':'.__LINE__;
4293
+ var_dump($this->htmlOuter());
4294
+ die();
4295
+ }
4296
+ }
4297
+
4298
+
4299
+ // -- Multibyte Compatibility functions ---------------------------------------
4300
+ // http://svn.iphonewebdev.com/lace/lib/mb_compat.php
4301
+
4302
+ /**
4303
+ * mb_internal_encoding()
4304
+ *
4305
+ * Included for mbstring pseudo-compatability.
4306
+ */
4307
+ if (!function_exists('mb_internal_encoding'))
4308
+ {
4309
+ function mb_internal_encoding($enc) {return true; }
4310
+ }
4311
+
4312
+ /**
4313
+ * mb_regex_encoding()
4314
+ *
4315
+ * Included for mbstring pseudo-compatability.
4316
+ */
4317
+ if (!function_exists('mb_regex_encoding'))
4318
+ {
4319
+ function mb_regex_encoding($enc) {return true; }
4320
+ }
4321
+
4322
+ /**
4323
+ * mb_strlen()
4324
+ *
4325
+ * Included for mbstring pseudo-compatability.
4326
+ */
4327
+ if (!function_exists('mb_strlen'))
4328
+ {
4329
+ function mb_strlen($str)
4330
+ {
4331
+ return strlen($str);
4332
+ }
4333
+ }
4334
+
4335
+ /**
4336
+ * mb_strpos()
4337
+ *
4338
+ * Included for mbstring pseudo-compatability.
4339
+ */
4340
+ if (!function_exists('mb_strpos'))
4341
+ {
4342
+ function mb_strpos($haystack, $needle, $offset=0)
4343
+ {
4344
+ return strpos($haystack, $needle, $offset);
4345
+ }
4346
+ }
4347
+ /**
4348
+ * mb_stripos()
4349
+ *
4350
+ * Included for mbstring pseudo-compatability.
4351
+ */
4352
+ if (!function_exists('mb_stripos'))
4353
+ {
4354
+ function mb_stripos($haystack, $needle, $offset=0)
4355
+ {
4356
+ return stripos($haystack, $needle, $offset);
4357
+ }
4358
+ }
4359
+
4360
+ /**
4361
+ * mb_substr()
4362
+ *
4363
+ * Included for mbstring pseudo-compatability.
4364
+ */
4365
+ if (!function_exists('mb_substr'))
4366
+ {
4367
+ function mb_substr($str, $start, $length=0)
4368
+ {
4369
+ return substr($str, $start, $length);
4370
+ }
4371
+ }
4372
+
4373
+ /**
4374
+ * mb_substr_count()
4375
+ *
4376
+ * Included for mbstring pseudo-compatability.
4377
+ */
4378
+ if (!function_exists('mb_substr_count'))
4379
+ {
4380
+ function mb_substr_count($haystack, $needle)
4381
+ {
4382
+ return substr_count($haystack, $needle);
4383
+ }
4384
+ }
4385
+
4386
+
4387
+ /**
4388
+ * Static namespace for phpQuery functions.
4389
+ *
4390
+ * @author Tobiasz Cudnik <tobiasz.cudnik/gmail.com>
4391
+ * @package phpQuery
4392
+ */
4393
+ abstract class phpQuery {
4394
+ /**
4395
+ * XXX: Workaround for mbstring problems
4396
+ *
4397
+ * @var bool
4398
+ */
4399
+ public static $mbstringSupport = true;
4400
+ public static $debug = false;
4401
+ public static $documents = array();
4402
+ public static $defaultDocumentID = null;
4403
+ // public static $defaultDoctype = 'html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"';
4404
+ /**
4405
+ * Applies only to HTML.
4406
+ *
4407
+ * @var unknown_type
4408
+ */
4409
+ public static $defaultDoctype = '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
4410
+ "http://www.w3.org/TR/html4/loose.dtd">';
4411
+ public static $defaultCharset = 'UTF-8';
4412
+ /**
4413
+ * Static namespace for plugins.
4414
+ *
4415
+ * @var object
4416
+ */
4417
+ public static $plugins = array();
4418
+ /**
4419
+ * List of loaded plugins.
4420
+ *
4421
+ * @var unknown_type
4422
+ */
4423
+ public static $pluginsLoaded = array();
4424
+ public static $pluginsMethods = array();
4425
+ public static $pluginsStaticMethods = array();
4426
+ public static $extendMethods = array();
4427
+ /**
4428
+ * @TODO implement
4429
+ */
4430
+ public static $extendStaticMethods = array();
4431
+ /**
4432
+ * Hosts allowed for AJAX connections.
4433
+ * Dot '.' means $_SERVER['HTTP_HOST'] (if any).
4434
+ *
4435
+ * @var array
4436
+ */
4437
+ public static $ajaxAllowedHosts = array(
4438
+ '.'
4439
+ );
4440
+ /**
4441
+ * AJAX settings.
4442
+ *
4443
+ * @var array
4444
+ * XXX should it be static or not ?
4445
+ */
4446
+ public static $ajaxSettings = array(
4447
+ 'url' => '',//TODO
4448
+ 'global' => true,
4449
+ 'type' => "GET",
4450
+ 'timeout' => null,
4451
+ 'contentType' => "application/x-www-form-urlencoded",
4452
+ 'processData' => true,
4453
+ // 'async' => true,
4454
+ 'data' => null,
4455
+ 'username' => null,
4456
+ 'password' => null,
4457
+ 'accepts' => array(
4458
+ 'xml' => "application/xml, text/xml",
4459
+ 'html' => "text/html",
4460
+ 'script' => "text/javascript, application/javascript",
4461
+ 'json' => "application/json, text/javascript",
4462
+ 'text' => "text/plain",
4463
+ '_default' => "*/*"
4464
+ )
4465
+ );
4466
+ public static $lastModified = null;
4467
+ public static $active = 0;
4468
+ public static $dumpCount = 0;
4469
+ /**
4470
+ * Multi-purpose function.
4471
+ * Use pq() as shortcut.
4472
+ *
4473
+ * In below examples, $pq is any result of pq(); function.
4474
+ *
4475
+ * 1. Import markup into existing document (without any attaching):
4476
+ * - Import into selected document:
4477
+ * pq('<div/>') // DOESNT accept text nodes at beginning of input string !
4478
+ * - Import into document with ID from $pq->getDocumentID():
4479
+ * pq('<div/>', $pq->getDocumentID())
4480
+ * - Import into same document as DOMNode belongs to:
4481
+ * pq('<div/>', DOMNode)
4482
+ * - Import into document from phpQuery object:
4483
+ * pq('<div/>', $pq)
4484
+ *
4485
+ * 2. Run query:
4486
+ * - Run query on last selected document:
4487
+ * pq('div.myClass')
4488
+ * - Run query on document with ID from $pq->getDocumentID():
4489
+ * pq('div.myClass', $pq->getDocumentID())
4490
+ * - Run query on same document as DOMNode belongs to and use node(s)as root for query:
4491
+ * pq('div.myClass', DOMNode)
4492
+ * - Run query on document from phpQuery object
4493
+ * and use object's stack as root node(s) for query:
4494
+ * pq('div.myClass', $pq)
4495
+ *
4496
+ * @param string|DOMNode|DOMNodeList|array $arg1 HTML markup, CSS Selector, DOMNode or array of DOMNodes
4497
+ * @param string|phpQueryObject|DOMNode $context DOM ID from $pq->getDocumentID(), phpQuery object (determines also query root) or DOMNode (determines also query root)
4498
+ *
4499
+ * @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery|QueryTemplatesPhpQuery|false
4500
+ * phpQuery object or false in case of error.
4501
+ */
4502
+ public static function pq($arg1, $context = null) {
4503
+ if ($arg1 instanceof DOMNODE && ! isset($context)) {
4504
+ foreach(phpQuery::$documents as $documentWrapper) {
4505
+ $compare = $arg1 instanceof DOMDocument
4506
+ ? $arg1 : $arg1->ownerDocument;
4507
+ if ($documentWrapper->document->isSameNode($compare))
4508
+ $context = $documentWrapper->id;
4509
+ }
4510
+ }
4511
+ if (! $context) {
4512
+ $domId = self::$defaultDocumentID;
4513
+ if (! $domId)
4514
+ throw new Exception("Can't use last created DOM, because there isn't any. Use phpQuery::newDocument() first.");
4515
+ // } else if (is_object($context) && ($context instanceof PHPQUERY || is_subclass_of($context, 'phpQueryObject')))
4516
+ } else if (is_object($context) && $context instanceof phpQueryObject)
4517
+ $domId = $context->getDocumentID();
4518
+ else if ($context instanceof DOMDOCUMENT) {
4519
+ $domId = self::getDocumentID($context);
4520
+ if (! $domId) {
4521
+ //throw new Exception('Orphaned DOMDocument');
4522
+ $domId = self::newDocument($context)->getDocumentID();
4523
+ }
4524
+ } else if ($context instanceof DOMNODE) {
4525
+ $domId = self::getDocumentID($context);
4526
+ if (! $domId) {
4527
+ throw new Exception('Orphaned DOMNode');
4528
+ // $domId = self::newDocument($context->ownerDocument);
4529
+ }
4530
+ } else
4531
+ $domId = $context;
4532
+ if ($arg1 instanceof phpQueryObject) {
4533
+ // if (is_object($arg1) && (get_class($arg1) == 'phpQueryObject' || $arg1 instanceof PHPQUERY || is_subclass_of($arg1, 'phpQueryObject'))) {
4534
+ /**
4535
+ * Return $arg1 or import $arg1 stack if document differs:
4536
+ * pq(pq('<div/>'))
4537
+ */
4538
+ if ($arg1->getDocumentID() == $domId)
4539
+ return $arg1;
4540
+ $class = get_class($arg1);
4541
+ // support inheritance by passing old object to overloaded constructor
4542
+ $phpQuery = $class != 'phpQuery'
4543
+ ? new $class($arg1, $domId)
4544
+ : new phpQueryObject($domId);
4545
+ $phpQuery->elements = array();
4546
+ foreach($arg1->elements as $node)
4547
+ $phpQuery->elements[] = $phpQuery->document->importNode($node, true);
4548
+ return $phpQuery;
4549
+ } else if ($arg1 instanceof DOMNODE || (is_array($arg1) && isset($arg1[0]) && $arg1[0] instanceof DOMNODE)) {
4550
+ /*
4551
+ * Wrap DOM nodes with phpQuery object, import into document when needed:
4552
+ * pq(array($domNode1, $domNode2))
4553
+ */
4554
+ $phpQuery = new phpQueryObject($domId);
4555
+ if (!($arg1 instanceof DOMNODELIST) && ! is_array($arg1))
4556
+ $arg1 = array($arg1);
4557
+ $phpQuery->elements = array();
4558
+ foreach($arg1 as $node) {
4559
+ $sameDocument = $node->ownerDocument instanceof DOMDOCUMENT
4560
+ && ! $node->ownerDocument->isSameNode($phpQuery->document);
4561
+ $phpQuery->elements[] = $sameDocument
4562
+ ? $phpQuery->document->importNode($node, true)
4563
+ : $node;
4564
+ }
4565
+ return $phpQuery;
4566
+ } else if (self::isMarkup($arg1)) {
4567
+ /**
4568
+ * Import HTML:
4569
+ * pq('<div/>')
4570
+ */
4571
+ $phpQuery = new phpQueryObject($domId);
4572
+ return $phpQuery->newInstance(
4573
+ $phpQuery->documentWrapper->import($arg1)
4574
+ );
4575
+ } else {
4576
+ /**
4577
+ * Run CSS query:
4578
+ * pq('div.myClass')
4579
+ */
4580
+ $phpQuery = new phpQueryObject($domId);
4581
+ // if ($context && ($context instanceof PHPQUERY || is_subclass_of($context, 'phpQueryObject')))
4582
+ if ($context && $context instanceof phpQueryObject)
4583
+ $phpQuery->elements = $context->elements;
4584
+ else if ($context && $context instanceof DOMNODELIST) {
4585
+ $phpQuery->elements = array();
4586
+ foreach($context as $node)
4587
+ $phpQuery->elements[] = $node;
4588
+ } else if ($context && $context instanceof DOMNODE)
4589
+ $phpQuery->elements = array($context);
4590
+ return $phpQuery->find($arg1);
4591
+ }
4592
+ }
4593
+ /**
4594
+ * Sets default document to $id. Document has to be loaded prior
4595
+ * to using this method.
4596
+ * $id can be retrived via getDocumentID() or getDocumentIDRef().
4597
+ *
4598
+ * @param unknown_type $id
4599
+ */
4600
+ public static function selectDocument($id) {
4601
+ $id = self::getDocumentID($id);
4602
+ self::debug("Selecting document '$id' as default one");
4603
+ self::$defaultDocumentID = self::getDocumentID($id);
4604
+ }
4605
+ /**
4606
+ * Returns document with id $id or last used as phpQueryObject.
4607
+ * $id can be retrived via getDocumentID() or getDocumentIDRef().
4608
+ * Chainable.
4609
+ *
4610
+ * @see phpQuery::selectDocument()
4611
+ * @param unknown_type $id
4612
+ * @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
4613
+ */
4614
+ public static function getDocument($id = null) {
4615
+ if ($id)
4616
+ phpQuery::selectDocument($id);
4617
+ else
4618
+ $id = phpQuery::$defaultDocumentID;
4619
+ return new phpQueryObject($id);
4620
+ }
4621
+ /**
4622
+ * Creates new document from markup.
4623
+ * Chainable.
4624
+ *
4625
+ * @param unknown_type $markup
4626
+ * @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
4627
+ */
4628
+ public static function newDocument($markup = null, $contentType = null) {
4629
+ if (! $markup)
4630
+ $markup = '';
4631
+ $documentID = phpQuery::createDocumentWrapper($markup, $contentType);
4632
+ return new phpQueryObject($documentID);
4633
+ }
4634
+ /**
4635
+ * Creates new document from markup.
4636
+ * Chainable.
4637
+ *
4638
+ * @param unknown_type $markup
4639
+ * @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
4640
+ */
4641
+ public static function newDocumentHTML($markup = null, $charset = null) {
4642
+ $contentType = $charset
4643
+ ? ";charset=$charset"
4644
+ : '';
4645
+ return self::newDocument($markup, "text/html{$contentType}");
4646
+ }
4647
+ /**
4648
+ * Creates new document from markup.
4649
+ * Chainable.
4650
+ *
4651
+ * @param unknown_type $markup
4652
+ * @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
4653
+ */
4654
+ public static function newDocumentXML($markup = null, $charset = null) {
4655
+ $contentType = $charset
4656
+ ? ";charset=$charset"
4657
+ : '';
4658
+ return self::newDocument($markup, "text/xml{$contentType}");
4659
+ }
4660
+ /**
4661
+ * Creates new document from markup.
4662
+ * Chainable.
4663
+ *
4664
+ * @param unknown_type $markup
4665
+ * @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
4666
+ */
4667
+ public static function newDocumentXHTML($markup = null, $charset = null) {
4668
+ $contentType = $charset
4669
+ ? ";charset=$charset"
4670
+ : '';
4671
+ return self::newDocument($markup, "application/xhtml+xml{$contentType}");
4672
+ }
4673
+ /**
4674
+ * Creates new document from markup.
4675
+ * Chainable.
4676
+ *
4677
+ * @param unknown_type $markup
4678
+ * @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
4679
+ */
4680
+ public static function newDocumentPHP($markup = null, $contentType = "text/html") {
4681
+ // TODO pass charset to phpToMarkup if possible (use DOMDocumentWrapper function)
4682
+ $markup = phpQuery::phpToMarkup($markup, self::$defaultCharset);
4683
+ return self::newDocument($markup, $contentType);
4684
+ }
4685
+ public static function phpToMarkup($php, $charset = 'utf-8') {
4686
+ $regexes = array(
4687
+ '@(<(?!\\?)(?:[^>]|\\?>)+\\w+\\s*=\\s*)(\')([^\']*)<'.'?php?(.*?)(?:\\?>)([^\']*)\'@s',
4688
+ '@(<(?!\\?)(?:[^>]|\\?>)+\\w+\\s*=\\s*)(")([^"]*)<'.'?php?(.*?)(?:\\?>)([^"]*)"@s',
4689
+ );
4690
+ foreach($regexes as $regex)
4691
+ while (preg_match($regex, $php, $matches)) {
4692
+ $php = preg_replace_callback(
4693
+ $regex,
4694
+ // create_function('$m, $charset = "'.$charset.'"',
4695
+ // 'return $m[1].$m[2]
4696
+ // .htmlspecialchars("<"."?php".$m[4]."?".">", ENT_QUOTES|ENT_NOQUOTES, $charset)
4697
+ // .$m[5].$m[2];'
4698
+ // ),
4699
+ array('phpQuery', '_phpToMarkupCallback'),
4700
+ $php
4701
+ );
4702
+ }
4703
+ $regex = '@(^|>[^<]*)+?(<\?php(.*?)(\?>))@s';
4704
+ //preg_match_all($regex, $php, $matches);
4705
+ //var_dump($matches);
4706
+ $php = preg_replace($regex, '\\1<php><!-- \\3 --></php>', $php);
4707
+ return $php;
4708
+ }
4709
+ public static function _phpToMarkupCallback($php, $charset = 'utf-8') {
4710
+ return $m[1].$m[2]
4711
+ .htmlspecialchars("<"."?php".$m[4]."?".">", ENT_QUOTES|ENT_NOQUOTES, $charset)
4712
+ .$m[5].$m[2];
4713
+ }
4714
+ public static function _markupToPHPCallback($m) {
4715
+ return "<"."?php ".htmlspecialchars_decode($m[1])." ?".">";
4716
+ }
4717
+ /**
4718
+ * Converts document markup containing PHP code generated by phpQuery::php()
4719
+ * into valid (executable) PHP code syntax.
4720
+ *
4721
+ * @param string|phpQueryObject $content
4722
+ * @return string PHP code.
4723
+ */
4724
+ public static function markupToPHP($content) {
4725
+ if ($content instanceof phpQueryObject)
4726
+ $content = $content->markupOuter();
4727
+ /* <php>...</php> to <?php...? > */
4728
+ $content = preg_replace_callback(
4729
+ '@<php>\s*<!--(.*?)-->\s*</php>@s',
4730
+ // create_function('$m',
4731
+ // 'return "<'.'?php ".htmlspecialchars_decode($m[1])." ?'.'>";'
4732
+ // ),
4733
+ array('phpQuery', '_markupToPHPCallback'),
4734
+ $content
4735
+ );
4736
+ /* <node attr='< ?php ? >'> extra space added to save highlighters */
4737
+ $regexes = array(
4738
+ '@(<(?!\\?)(?:[^>]|\\?>)+\\w+\\s*=\\s*)(\')([^\']*)(?:&lt;|%3C)\\?(?:php)?(.*?)(?:\\?(?:&gt;|%3E))([^\']*)\'@s',
4739
+ '@(<(?!\\?)(?:[^>]|\\?>)+\\w+\\s*=\\s*)(")([^"]*)(?:&lt;|%3C)\\?(?:php)?(.*?)(?:\\?(?:&gt;|%3E))([^"]*)"@s',
4740
+ );
4741
+ foreach($regexes as $regex)
4742
+ while (preg_match($regex, $content))
4743
+ $content = preg_replace_callback(
4744
+ $regex,
4745
+ create_function('$m',
4746
+ 'return $m[1].$m[2].$m[3]."<?php "
4747
+ .str_replace(
4748
+ array("%20", "%3E", "%09", "&#10;", "&#9;", "%7B", "%24", "%7D", "%22", "%5B", "%5D"),
4749
+ array(" ", ">", " ", "\n", " ", "{", "$", "}", \'"\', "[", "]"),
4750
+ htmlspecialchars_decode($m[4])
4751
+ )
4752
+ ." ?>".$m[5].$m[2];'
4753
+ ),
4754
+ $content
4755
+ );
4756
+ return $content;
4757
+ }
4758
+ /**
4759
+ * Creates new document from file $file.
4760
+ * Chainable.
4761
+ *
4762
+ * @param string $file URLs allowed. See File wrapper page at php.net for more supported sources.
4763
+ * @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
4764
+ */
4765
+ public static function newDocumentFile($file, $contentType = null) {
4766
+ $documentID = self::createDocumentWrapper(
4767
+ file_get_contents($file), $contentType
4768
+ );
4769
+ return new phpQueryObject($documentID);
4770
+ }
4771
+ /**
4772
+ * Creates new document from markup.
4773
+ * Chainable.
4774
+ *
4775
+ * @param unknown_type $markup
4776
+ * @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
4777
+ */
4778
+ public static function newDocumentFileHTML($file, $charset = null) {
4779
+ $contentType = $charset
4780
+ ? ";charset=$charset"
4781
+ : '';
4782
+ return self::newDocumentFile($file, "text/html{$contentType}");
4783
+ }
4784
+ /**
4785
+ * Creates new document from markup.
4786
+ * Chainable.
4787
+ *
4788
+ * @param unknown_type $markup
4789
+ * @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
4790
+ */
4791
+ public static function newDocumentFileXML($file, $charset = null) {
4792
+ $contentType = $charset
4793
+ ? ";charset=$charset"
4794
+ : '';
4795
+ return self::newDocumentFile($file, "text/xml{$contentType}");
4796
+ }
4797
+ /**
4798
+ * Creates new document from markup.
4799
+ * Chainable.
4800
+ *
4801
+ * @param unknown_type $markup
4802
+ * @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
4803
+ */
4804
+ public static function newDocumentFileXHTML($file, $charset = null) {
4805
+ $contentType = $charset
4806
+ ? ";charset=$charset"
4807
+ : '';
4808
+ return self::newDocumentFile($file, "application/xhtml+xml{$contentType}");
4809
+ }
4810
+ /**
4811
+ * Creates new document from markup.
4812
+ * Chainable.
4813
+ *
4814
+ * @param unknown_type $markup
4815
+ * @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
4816
+ */
4817
+ public static function newDocumentFilePHP($file, $contentType = null) {
4818
+ return self::newDocumentPHP(file_get_contents($file), $contentType);
4819
+ }
4820
+ /**
4821
+ * Reuses existing DOMDocument object.
4822
+ * Chainable.
4823
+ *
4824
+ * @param $document DOMDocument
4825
+ * @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
4826
+ * @TODO support DOMDocument
4827
+ */
4828
+ public static function loadDocument($document) {
4829
+ // TODO
4830
+ die('TODO loadDocument');
4831
+ }
4832
+ /**
4833
+ * Enter description here...
4834
+ *
4835
+ * @param unknown_type $html
4836
+ * @param unknown_type $domId
4837
+ * @return unknown New DOM ID
4838
+ * @todo support PHP tags in input
4839
+ * @todo support passing DOMDocument object from self::loadDocument
4840
+ */
4841
+ protected static function createDocumentWrapper($html, $contentType = null, $documentID = null) {
4842
+ if (function_exists('domxml_open_mem'))
4843
+ throw new Exception("Old PHP4 DOM XML extension detected. phpQuery won't work until this extension is enabled.");
4844
+ // $id = $documentID
4845
+ // ? $documentID
4846
+ // : md5(microtime());
4847
+ $document = null;
4848
+ if ($html instanceof DOMDOCUMENT) {
4849
+ if (self::getDocumentID($html)) {
4850
+ // document already exists in phpQuery::$documents, make a copy
4851
+ $document = clone $html;
4852
+ } else {
4853
+ // new document, add it to phpQuery::$documents
4854
+ $wrapper = new DOMDocumentWrapper($html, $contentType, $documentID);
4855
+ }
4856
+ } else {
4857
+ $wrapper = new DOMDocumentWrapper($html, $contentType, $documentID);
4858
+ }
4859
+ // $wrapper->id = $id;
4860
+ // bind document
4861
+ phpQuery::$documents[$wrapper->id] = $wrapper;
4862
+ // remember last loaded document
4863
+ phpQuery::selectDocument($wrapper->id);
4864
+ return $wrapper->id;
4865
+ }
4866
+ /**
4867
+ * Extend class namespace.
4868
+ *
4869
+ * @param string|array $target
4870
+ * @param array $source
4871
+ * @TODO support string $source
4872
+ * @return unknown_type
4873
+ */
4874
+ public static function extend($target, $source) {
4875
+ switch($target) {
4876
+ case 'phpQueryObject':
4877
+ $targetRef = &self::$extendMethods;
4878
+ $targetRef2 = &self::$pluginsMethods;
4879
+ break;
4880
+ case 'phpQuery':
4881
+ $targetRef = &self::$extendStaticMethods;
4882
+ $targetRef2 = &self::$pluginsStaticMethods;
4883
+ break;
4884
+ default:
4885
+ throw new Exception("Unsupported \$target type");
4886
+ }
4887
+ if (is_string($source))
4888
+ $source = array($source => $source);
4889
+ foreach($source as $method => $callback) {
4890
+ if (isset($targetRef[$method])) {
4891
+ // throw new Exception
4892
+ self::debug("Duplicate method '{$method}', can\'t extend '{$target}'");
4893
+ continue;
4894
+ }
4895
+ if (isset($targetRef2[$method])) {
4896
+ // throw new Exception
4897
+ self::debug("Duplicate method '{$method}' from plugin '{$targetRef2[$method]}',"
4898
+ ." can\'t extend '{$target}'");
4899
+ continue;
4900
+ }
4901
+ $targetRef[$method] = $callback;
4902
+ }
4903
+ return true;
4904
+ }
4905
+ /**
4906
+ * Extend phpQuery with $class from $file.
4907
+ *
4908
+ * @param string $class Extending class name. Real class name can be prepended phpQuery_.
4909
+ * @param string $file Filename to include. Defaults to "{$class}.php".
4910
+ */
4911
+ public static function plugin($class, $file = null) {
4912
+ // TODO $class checked agains phpQuery_$class
4913
+ // if (strpos($class, 'phpQuery') === 0)
4914
+ // $class = substr($class, 8);
4915
+ if (in_array($class, self::$pluginsLoaded))
4916
+ return true;
4917
+ if (! $file)
4918
+ $file = $class.'.php';
4919
+ $objectClassExists = class_exists('phpQueryObjectPlugin_'.$class);
4920
+ $staticClassExists = class_exists('phpQueryPlugin_'.$class);
4921
+ if (! $objectClassExists && ! $staticClassExists)
4922
+ require_once($file);
4923
+ self::$pluginsLoaded[] = $class;
4924
+ // static methods
4925
+ if (class_exists('phpQueryPlugin_'.$class)) {
4926
+ $realClass = 'phpQueryPlugin_'.$class;
4927
+ $vars = get_class_vars($realClass);
4928
+ $loop = isset($vars['phpQueryMethods'])
4929
+ && ! is_null($vars['phpQueryMethods'])
4930
+ ? $vars['phpQueryMethods']
4931
+ : get_class_methods($realClass);
4932
+ foreach($loop as $method) {
4933
+ if ($method == '__initialize')
4934
+ continue;
4935
+ if (! is_callable(array($realClass, $method)))
4936
+ continue;
4937
+ if (isset(self::$pluginsStaticMethods[$method])) {
4938
+ throw new Exception("Duplicate method '{$method}' from plugin '{$c}' conflicts with same method from plugin '".self::$pluginsStaticMethods[$method]."'");
4939
+ return;
4940
+ }
4941
+ self::$pluginsStaticMethods[$method] = $class;
4942
+ }
4943
+ if (method_exists($realClass, '__initialize'))
4944
+ call_user_func_array(array($realClass, '__initialize'), array());
4945
+ }
4946
+ // object methods
4947
+ if (class_exists('phpQueryObjectPlugin_'.$class)) {
4948
+ $realClass = 'phpQueryObjectPlugin_'.$class;
4949
+ $vars = get_class_vars($realClass);
4950
+ $loop = isset($vars['phpQueryMethods'])
4951
+ && ! is_null($vars['phpQueryMethods'])
4952
+ ? $vars['phpQueryMethods']
4953
+ : get_class_methods($realClass);
4954
+ foreach($loop as $method) {
4955
+ if (! is_callable(array($realClass, $method)))
4956
+ continue;
4957
+ if (isset(self::$pluginsMethods[$method])) {
4958
+ throw new Exception("Duplicate method '{$method}' from plugin '{$c}' conflicts with same method from plugin '".self::$pluginsMethods[$method]."'");
4959
+ continue;
4960
+ }
4961
+ self::$pluginsMethods[$method] = $class;
4962
+ }
4963
+ }
4964
+ return true;
4965
+ }
4966
+ /**
4967
+ * Unloades all or specified document from memory.
4968
+ *
4969
+ * @param mixed $documentID @see phpQuery::getDocumentID() for supported types.
4970
+ */
4971
+ public static function unloadDocuments($id = null) {
4972
+ if (isset($id)) {
4973
+ if ($id = self::getDocumentID($id))
4974
+ unset(phpQuery::$documents[$id]);
4975
+ } else {
4976
+ foreach(phpQuery::$documents as $k => $v) {
4977
+ unset(phpQuery::$documents[$k]);
4978
+ }
4979
+ }
4980
+ }
4981
+ /**
4982
+ * Parses phpQuery object or HTML result against PHP tags and makes them active.
4983
+ *
4984
+ * @param phpQuery|string $content
4985
+ * @deprecated
4986
+ * @return string
4987
+ */
4988
+ public static function unsafePHPTags($content) {
4989
+ return self::markupToPHP($content);
4990
+ }
4991
+ public static function DOMNodeListToArray($DOMNodeList) {
4992
+ $array = array();
4993
+ if (! $DOMNodeList)
4994
+ return $array;
4995
+ foreach($DOMNodeList as $node)
4996
+ $array[] = $node;
4997
+ return $array;
4998
+ }
4999
+ /**
5000
+ * Checks if $input is HTML string, which has to start with '<'.
5001
+ *
5002
+ * @deprecated
5003
+ * @param String $input
5004
+ * @return Bool
5005
+ * @todo still used ?
5006
+ */
5007
+ public static function isMarkup($input) {
5008
+ return ! is_array($input) && substr(trim($input), 0, 1) == '<';
5009
+ }
5010
+ public static function debug($text) {
5011
+ if (self::$debug)
5012
+ print var_dump($text);
5013
+ }
5014
+ /**
5015
+ * Make an AJAX request.
5016
+ *
5017
+ * @param array See $options http://docs.jquery.com/Ajax/jQuery.ajax#toptions
5018
+ * Additional options are:
5019
+ * 'document' - document for global events, @see phpQuery::getDocumentID()
5020
+ * 'referer' - implemented
5021
+ * 'requested_with' - TODO; not implemented (X-Requested-With)
5022
+ * @return Zend_Http_Client
5023
+ * @link http://docs.jquery.com/Ajax/jQuery.ajax
5024
+ *
5025
+ * @TODO $options['cache']
5026
+ * @TODO $options['processData']
5027
+ * @TODO $options['xhr']
5028
+ * @TODO $options['data'] as string
5029
+ * @TODO XHR interface
5030
+ */
5031
+ public static function ajax($options = array(), $xhr = null) {
5032
+ $options = array_merge(
5033
+ self::$ajaxSettings, $options
5034
+ );
5035
+ $documentID = isset($options['document'])
5036
+ ? self::getDocumentID($options['document'])
5037
+ : null;
5038
+ if ($xhr) {
5039
+ // reuse existing XHR object, but clean it up
5040
+ $client = $xhr;
5041
+ // $client->setParameterPost(null);
5042
+ // $client->setParameterGet(null);
5043
+ $client->setAuth(false);
5044
+ $client->setHeaders("If-Modified-Since", null);
5045
+ $client->setHeaders("Referer", null);
5046
+ $client->resetParameters();
5047
+ } else {
5048
+ // create new XHR object
5049
+ require_once('Zend/Http/Client.php');
5050
+ $client = new Zend_Http_Client();
5051
+ $client->setCookieJar();
5052
+ }
5053
+ if (isset($options['timeout']))
5054
+ $client->setConfig(array(
5055
+ 'timeout' => $options['timeout'],
5056
+ ));
5057
+ // 'maxredirects' => 0,
5058
+ foreach(self::$ajaxAllowedHosts as $k => $host)
5059
+ if ($host == '.' && isset($_SERVER['HTTP_HOST']))
5060
+ self::$ajaxAllowedHosts[$k] = $_SERVER['HTTP_HOST'];
5061
+ $host = parse_url($options['url'], PHP_URL_HOST);
5062
+ if (! in_array($host, self::$ajaxAllowedHosts)) {
5063
+ throw new Exception("Request not permitted, host '$host' not present in "
5064
+ ."phpQuery::\$ajaxAllowedHosts");
5065
+ }
5066
+ // JSONP
5067
+ $jsre = "/=\\?(&|$)/";
5068
+ if (isset($options['dataType']) && $options['dataType'] == 'jsonp') {
5069
+ $jsonpCallbackParam = $options['jsonp']
5070
+ ? $options['jsonp'] : 'callback';
5071
+ if (strtolower($options['type']) == 'get') {
5072
+ if (! preg_match($jsre, $options['url'])) {
5073
+ $sep = strpos($options['url'], '?')
5074
+ ? '&' : '?';
5075
+ $options['url'] .= "$sep$jsonpCallbackParam=?";
5076
+ }
5077
+ } else if ($options['data']) {
5078
+ $jsonp = false;
5079
+ foreach($options['data'] as $n => $v) {
5080
+ if ($v == '?')
5081
+ $jsonp = true;
5082
+ }
5083
+ if (! $jsonp) {
5084
+ $options['data'][$jsonpCallbackParam] = '?';
5085
+ }
5086
+ }
5087
+ $options['dataType'] = 'json';
5088
+ }
5089
+ if (isset($options['dataType']) && $options['dataType'] == 'json') {
5090
+ $jsonpCallback = 'json_'.md5(microtime());
5091
+ $jsonpData = $jsonpUrl = false;
5092
+ if ($options['data']) {
5093
+ foreach($options['data'] as $n => $v) {
5094
+ if ($v == '?')
5095
+ $jsonpData = $n;
5096
+ }
5097
+ }
5098
+ if (preg_match($jsre, $options['url']))
5099
+ $jsonpUrl = true;
5100
+ if ($jsonpData !== false || $jsonpUrl) {
5101
+ // remember callback name for httpData()
5102
+ $options['_jsonp'] = $jsonpCallback;
5103
+ if ($jsonpData !== false)
5104
+ $options['data'][$jsonpData] = $jsonpCallback;
5105
+ if ($jsonpUrl)
5106
+ $options['url'] = preg_replace($jsre, "=$jsonpCallback\\1", $options['url']);
5107
+ }
5108
+ }
5109
+ $client->setUri($options['url']);
5110
+ $client->setMethod(strtoupper($options['type']));
5111
+ if (isset($options['referer']) && $options['referer'])
5112
+ $client->setHeaders('Referer', $options['referer']);
5113
+ $client->setHeaders(array(
5114
+ // 'content-type' => $options['contentType'],
5115
+ 'User-Agent' => 'Mozilla/5.0 (X11; U; Linux x86; en-US; rv:1.9.0.5) Gecko'
5116
+ .'/2008122010 Firefox/3.0.5',
5117
+ // TODO custom charset
5118
+ 'Accept-Charset' => 'ISO-8859-1,utf-8;q=0.7,*;q=0.7',
5119
+ // 'Connection' => 'keep-alive',
5120
+ // 'Accept' => 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
5121
+ 'Accept-Language' => 'en-us,en;q=0.5',
5122
+ ));
5123
+ if ($options['username'])
5124
+ $client->setAuth($options['username'], $options['password']);
5125
+ if (isset($options['ifModified']) && $options['ifModified'])
5126
+ $client->setHeaders("If-Modified-Since",
5127
+ self::$lastModified
5128
+ ? self::$lastModified
5129
+ : "Thu, 01 Jan 1970 00:00:00 GMT"
5130
+ );
5131
+ $client->setHeaders("Accept",
5132
+ isset($options['dataType'])
5133
+ && isset(self::$ajaxSettings['accepts'][ $options['dataType'] ])
5134
+ ? self::$ajaxSettings['accepts'][ $options['dataType'] ].", */*"
5135
+ : self::$ajaxSettings['accepts']['_default']
5136
+ );
5137
+ // TODO $options['processData']
5138
+ if ($options['data'] instanceof phpQueryObject) {
5139
+ $serialized = $options['data']->serializeArray($options['data']);
5140
+ $options['data'] = array();
5141
+ foreach($serialized as $r)
5142
+ $options['data'][ $r['name'] ] = $r['value'];
5143
+ }
5144
+ if (strtolower($options['type']) == 'get') {
5145
+ $client->setParameterGet($options['data']);
5146
+ } else if (strtolower($options['type']) == 'post') {
5147
+ $client->setEncType($options['contentType']);
5148
+ $client->setParameterPost($options['data']);
5149
+ }
5150
+ if (self::$active == 0 && $options['global'])
5151
+ phpQueryEvents::trigger($documentID, 'ajaxStart');
5152
+ self::$active++;
5153
+ // beforeSend callback
5154
+ if (isset($options['beforeSend']) && $options['beforeSend'])
5155
+ phpQuery::callbackRun($options['beforeSend'], array($client));
5156
+ // ajaxSend event
5157
+ if ($options['global'])
5158
+ phpQueryEvents::trigger($documentID, 'ajaxSend', array($client, $options));
5159
+ if (phpQuery::$debug) {
5160
+ self::debug("{$options['type']}: {$options['url']}\n");
5161
+ self::debug("Options: <pre>".var_export($options, true)."</pre>\n");
5162
+ // if ($client->getCookieJar())
5163
+ // self::debug("Cookies: <pre>".var_export($client->getCookieJar()->getMatchingCookies($options['url']), true)."</pre>\n");
5164
+ }
5165
+ // request
5166
+ $response = $client->request();
5167
+ if (phpQuery::$debug) {
5168
+ self::debug('Status: '.$response->getStatus().' / '.$response->getMessage());
5169
+ self::debug($client->getLastRequest());
5170
+ self::debug($response->getHeaders());
5171
+ }
5172
+ if ($response->isSuccessful()) {
5173
+ // XXX tempolary
5174
+ self::$lastModified = $response->getHeader('Last-Modified');
5175
+ $data = self::httpData($response->getBody(), $options['dataType'], $options);
5176
+ if (isset($options['success']) && $options['success'])
5177
+ phpQuery::callbackRun($options['success'], array($data, $response->getStatus(), $options));
5178
+ if ($options['global'])
5179
+ phpQueryEvents::trigger($documentID, 'ajaxSuccess', array($client, $options));
5180
+ } else {
5181
+ if (isset($options['error']) && $options['error'])
5182
+ phpQuery::callbackRun($options['error'], array($client, $response->getStatus(), $response->getMessage()));
5183
+ if ($options['global'])
5184
+ phpQueryEvents::trigger($documentID, 'ajaxError', array($client, /*$response->getStatus(),*/$response->getMessage(), $options));
5185
+ }
5186
+ if (isset($options['complete']) && $options['complete'])
5187
+ phpQuery::callbackRun($options['complete'], array($client, $response->getStatus()));
5188
+ if ($options['global'])
5189
+ phpQueryEvents::trigger($documentID, 'ajaxComplete', array($client, $options));
5190
+ if ($options['global'] && ! --self::$active)
5191
+ phpQueryEvents::trigger($documentID, 'ajaxStop');
5192
+ return $client;
5193
+ // if (is_null($domId))
5194
+ // $domId = self::$defaultDocumentID ? self::$defaultDocumentID : false;
5195
+ // return new phpQueryAjaxResponse($response, $domId);
5196
+ }
5197
+ protected static function httpData($data, $type, $options) {
5198
+ if (isset($options['dataFilter']) && $options['dataFilter'])
5199
+ $data = self::callbackRun($options['dataFilter'], array($data, $type));
5200
+ if (is_string($data)) {
5201
+ if ($type == "json") {
5202
+ if (isset($options['_jsonp']) && $options['_jsonp']) {
5203
+ $data = preg_replace('/^\s*\w+\((.*)\)\s*$/s', '$1', $data);
5204
+ }
5205
+ $data = self::parseJSON($data);
5206
+ }
5207
+ }
5208
+ return $data;
5209
+ }
5210
+ /**
5211
+ * Enter description here...
5212
+ *
5213
+ * @param array|phpQuery $data
5214
+ *
5215
+ */
5216
+ public static function param($data) {
5217
+ return http_build_query($data, null, '&');
5218
+ }
5219
+ public static function get($url, $data = null, $callback = null, $type = null) {
5220
+ if (!is_array($data)) {
5221
+ $callback = $data;
5222
+ $data = null;
5223
+ }
5224
+ // TODO some array_values on this shit
5225
+ return phpQuery::ajax(array(
5226
+ 'type' => 'GET',
5227
+ 'url' => $url,
5228
+ 'data' => $data,
5229
+ 'success' => $callback,
5230
+ 'dataType' => $type,
5231
+ ));
5232
+ }
5233
+ public static function post($url, $data = null, $callback = null, $type = null) {
5234
+ if (!is_array($data)) {
5235
+ $callback = $data;
5236
+ $data = null;
5237
+ }
5238
+ return phpQuery::ajax(array(
5239
+ 'type' => 'POST',
5240
+ 'url' => $url,
5241
+ 'data' => $data,
5242
+ 'success' => $callback,
5243
+ 'dataType' => $type,
5244
+ ));
5245
+ }
5246
+ public static function getJSON($url, $data = null, $callback = null) {
5247
+ if (!is_array($data)) {
5248
+ $callback = $data;
5249
+ $data = null;
5250
+ }
5251
+ // TODO some array_values on this shit
5252
+ return phpQuery::ajax(array(
5253
+ 'type' => 'GET',
5254
+ 'url' => $url,
5255
+ 'data' => $data,
5256
+ 'success' => $callback,
5257
+ 'dataType' => 'json',
5258
+ ));
5259
+ }
5260
+ public static function ajaxSetup($options) {
5261
+ self::$ajaxSettings = array_merge(
5262
+ self::$ajaxSettings,
5263
+ $options
5264
+ );
5265
+ }
5266
+ public static function ajaxAllowHost($host1, $host2 = null, $host3 = null) {
5267
+ $loop = is_array($host1)
5268
+ ? $host1
5269
+ : func_get_args();
5270
+ foreach($loop as $host) {
5271
+ if ($host && ! in_array($host, phpQuery::$ajaxAllowedHosts)) {
5272
+ phpQuery::$ajaxAllowedHosts[] = $host;
5273
+ }
5274
+ }
5275
+ }
5276
+ public static function ajaxAllowURL($url1, $url2 = null, $url3 = null) {
5277
+ $loop = is_array($url1)
5278
+ ? $url1
5279
+ : func_get_args();
5280
+ foreach($loop as $url)
5281
+ phpQuery::ajaxAllowHost(parse_url($url, PHP_URL_HOST));
5282
+ }
5283
+ /**
5284
+ * Returns JSON representation of $data.
5285
+ *
5286
+ * @static
5287
+ * @param mixed $data
5288
+ * @return string
5289
+ */
5290
+ public static function toJSON($data) {
5291
+ if (function_exists('json_encode'))
5292
+ return json_encode($data);
5293
+ require_once('Zend/Json/Encoder.php');
5294
+ return Zend_Json_Encoder::encode($data);
5295
+ }
5296
+ /**
5297
+ * Parses JSON into proper PHP type.
5298
+ *
5299
+ * @static
5300
+ * @param string $json
5301
+ * @return mixed
5302
+ */
5303
+ public static function parseJSON($json) {
5304
+ if (function_exists('json_decode')) {
5305
+ $return = json_decode(trim($json), true);
5306
+ // json_decode and UTF8 issues
5307
+ if (isset($return))
5308
+ return $return;
5309
+ }
5310
+ require_once('Zend/Json/Decoder.php');
5311
+ return Zend_Json_Decoder::decode($json);
5312
+ }
5313
+ /**
5314
+ * Returns source's document ID.
5315
+ *
5316
+ * @param $source DOMNode|phpQueryObject
5317
+ * @return string
5318
+ */
5319
+ public static function getDocumentID($source) {
5320
+ if ($source instanceof DOMDOCUMENT) {
5321
+ foreach(phpQuery::$documents as $id => $document) {
5322
+ if ($source->isSameNode($document->document))
5323
+ return $id;
5324
+ }
5325
+ } else if ($source instanceof DOMNODE) {
5326
+ foreach(phpQuery::$documents as $id => $document) {
5327
+ if ($source->ownerDocument->isSameNode($document->document))
5328
+ return $id;
5329
+ }
5330
+ } else if ($source instanceof phpQueryObject)
5331
+ return $source->getDocumentID();
5332
+ else if (is_string($source) && isset(phpQuery::$documents[$source]))
5333
+ return $source;
5334
+ }
5335
+ /**
5336
+ * Get DOMDocument object related to $source.
5337
+ * Returns null if such document doesn't exist.
5338
+ *
5339
+ * @param $source DOMNode|phpQueryObject|string
5340
+ * @return string
5341
+ */
5342
+ public static function getDOMDocument($source) {
5343
+ if ($source instanceof DOMDOCUMENT)
5344
+ return $source;
5345
+ $source = self::getDocumentID($source);
5346
+ return $source
5347
+ ? self::$documents[$id]['document']
5348
+ : null;
5349
+ }
5350
+
5351
+ // UTILITIES
5352
+ // http://docs.jquery.com/Utilities
5353
+
5354
+ /**
5355
+ *
5356
+ * @return unknown_type
5357
+ * @link http://docs.jquery.com/Utilities/jQuery.makeArray
5358
+ */
5359
+ public static function makeArray($obj) {
5360
+ $array = array();
5361
+ if (is_object($object) && $object instanceof DOMNODELIST) {
5362
+ foreach($object as $value)
5363
+ $array[] = $value;
5364
+ } else if (is_object($object) && ! ($object instanceof Iterator)) {
5365
+ foreach(get_object_vars($object) as $name => $value)
5366
+ $array[0][$name] = $value;
5367
+ } else {
5368
+ foreach($object as $name => $value)
5369
+ $array[0][$name] = $value;
5370
+ }
5371
+ return $array;
5372
+ }
5373
+ public static function inArray($value, $array) {
5374
+ return in_array($value, $array);
5375
+ }
5376
+ /**
5377
+ *
5378
+ * @param $object
5379
+ * @param $callback
5380
+ * @return unknown_type
5381
+ * @link http://docs.jquery.com/Utilities/jQuery.each
5382
+ */
5383
+ public static function each($object, $callback, $param1 = null, $param2 = null, $param3 = null) {
5384
+ $paramStructure = null;
5385
+ if (func_num_args() > 2) {
5386
+ $paramStructure = func_get_args();
5387
+ $paramStructure = array_slice($paramStructure, 2);
5388
+ }
5389
+ if (is_object($object) && ! ($object instanceof Iterator)) {
5390
+ foreach(get_object_vars($object) as $name => $value)
5391
+ phpQuery::callbackRun($callback, array($name, $value), $paramStructure);
5392
+ } else {
5393
+ foreach($object as $name => $value)
5394
+ phpQuery::callbackRun($callback, array($name, $value), $paramStructure);
5395
+ }
5396
+ }
5397
+ /**
5398
+ *
5399
+ * @link http://docs.jquery.com/Utilities/jQuery.map
5400
+ */
5401
+ public static function map($array, $callback, $param1 = null, $param2 = null, $param3 = null) {
5402
+ $result = array();
5403
+ $paramStructure = null;
5404
+ if (func_num_args() > 2) {
5405
+ $paramStructure = func_get_args();
5406
+ $paramStructure = array_slice($paramStructure, 2);
5407
+ }
5408
+ foreach($array as $v) {
5409
+ $vv = phpQuery::callbackRun($callback, array($v), $paramStructure);
5410
+ // $callbackArgs = $args;
5411
+ // foreach($args as $i => $arg) {
5412
+ // $callbackArgs[$i] = $arg instanceof CallbackParam
5413
+ // ? $v
5414
+ // : $arg;
5415
+ // }
5416
+ // $vv = call_user_func_array($callback, $callbackArgs);
5417
+ if (is_array($vv)) {
5418
+ foreach($vv as $vvv)
5419
+ $result[] = $vvv;
5420
+ } else if ($vv !== null) {
5421
+ $result[] = $vv;
5422
+ }
5423
+ }
5424
+ return $result;
5425
+ }
5426
+ /**
5427
+ *
5428
+ * @param $callback Callback
5429
+ * @param $params
5430
+ * @param $paramStructure
5431
+ * @return unknown_type
5432
+ */
5433
+ public static function callbackRun($callback, $params = array(), $paramStructure = null) {
5434
+ if (! $callback)
5435
+ return;
5436
+ if ($callback instanceof CallbackParameterToReference) {
5437
+ // TODO support ParamStructure to select which $param push to reference
5438
+ if (isset($params[0]))
5439
+ $callback->callback = $params[0];
5440
+ return true;
5441
+ }
5442
+ if ($callback instanceof Callback) {
5443
+ $paramStructure = $callback->params;
5444
+ $callback = $callback->callback;
5445
+ }
5446
+ if (! $paramStructure)
5447
+ return call_user_func_array($callback, $params);
5448
+ $p = 0;
5449
+ foreach($paramStructure as $i => $v) {
5450
+ $paramStructure[$i] = $v instanceof CallbackParam
5451
+ ? $params[$p++]
5452
+ : $v;
5453
+ }
5454
+ return call_user_func_array($callback, $paramStructure);
5455
+ }
5456
+ /**
5457
+ * Merge 2 phpQuery objects.
5458
+ * @param array $one
5459
+ * @param array $two
5460
+ * @protected
5461
+ * @todo node lists, phpQueryObject
5462
+ */
5463
+ public static function merge($one, $two) {
5464
+ $elements = $one->elements;
5465
+ foreach($two->elements as $node) {
5466
+ $exists = false;
5467
+ foreach($elements as $node2) {
5468
+ if ($node2->isSameNode($node))
5469
+ $exists = true;
5470
+ }
5471
+ if (! $exists)
5472
+ $elements[] = $node;
5473
+ }
5474
+ return $elements;
5475
+ // $one = $one->newInstance();
5476
+ // $one->elements = $elements;
5477
+ // return $one;
5478
+ }
5479
+ /**
5480
+ *
5481
+ * @param $array
5482
+ * @param $callback
5483
+ * @param $invert
5484
+ * @return unknown_type
5485
+ * @link http://docs.jquery.com/Utilities/jQuery.grep
5486
+ */
5487
+ public static function grep($array, $callback, $invert = false) {
5488
+ $result = array();
5489
+ foreach($array as $k => $v) {
5490
+ $r = call_user_func_array($callback, array($v, $k));
5491
+ if ($r === !(bool)$invert)
5492
+ $result[] = $v;
5493
+ }
5494
+ return $result;
5495
+ }
5496
+ public static function unique($array) {
5497
+ return array_unique($array);
5498
+ }
5499
+ /**
5500
+ *
5501
+ * @param $function
5502
+ * @return unknown_type
5503
+ * @TODO there are problems with non-static methods, second parameter pass it
5504
+ * but doesnt verify is method is really callable
5505
+ */
5506
+ public static function isFunction($function) {
5507
+ return is_callable($function);
5508
+ }
5509
+ public static function trim($str) {
5510
+ return trim($str);
5511
+ }
5512
+ /* PLUGINS NAMESPACE */
5513
+ /**
5514
+ *
5515
+ * @param $url
5516
+ * @param $callback
5517
+ * @param $param1
5518
+ * @param $param2
5519
+ * @param $param3
5520
+ * @return phpQueryObject
5521
+ */
5522
+ public static function browserGet($url, $callback, $param1 = null, $param2 = null, $param3 = null) {
5523
+ if (self::plugin('WebBrowser')) {
5524
+ $params = func_get_args();
5525
+ return self::callbackRun(array(self::$plugins, 'browserGet'), $params);
5526
+ } else {
5527
+ self::debug('WebBrowser plugin not available...');
5528
+ }
5529
+ }
5530
+ /**
5531
+ *
5532
+ * @param $url
5533
+ * @param $data
5534
+ * @param $callback
5535
+ * @param $param1
5536
+ * @param $param2
5537
+ * @param $param3
5538
+ * @return phpQueryObject
5539
+ */
5540
+ public static function browserPost($url, $data, $callback, $param1 = null, $param2 = null, $param3 = null) {
5541
+ if (self::plugin('WebBrowser')) {
5542
+ $params = func_get_args();
5543
+ return self::callbackRun(array(self::$plugins, 'browserPost'), $params);
5544
+ } else {
5545
+ self::debug('WebBrowser plugin not available...');
5546
+ }
5547
+ }
5548
+ /**
5549
+ *
5550
+ * @param $ajaxSettings
5551
+ * @param $callback
5552
+ * @param $param1
5553
+ * @param $param2
5554
+ * @param $param3
5555
+ * @return phpQueryObject
5556
+ */
5557
+ public static function browser($ajaxSettings, $callback, $param1 = null, $param2 = null, $param3 = null) {
5558
+ if (self::plugin('WebBrowser')) {
5559
+ $params = func_get_args();
5560
+ return self::callbackRun(array(self::$plugins, 'browser'), $params);
5561
+ } else {
5562
+ self::debug('WebBrowser plugin not available...');
5563
+ }
5564
+ }
5565
+ /**
5566
+ *
5567
+ * @param $code
5568
+ * @return string
5569
+ */
5570
+ public static function php($code) {
5571
+ return self::code('php', $code);
5572
+ }
5573
+ /**
5574
+ *
5575
+ * @param $type
5576
+ * @param $code
5577
+ * @return string
5578
+ */
5579
+ public static function code($type, $code) {
5580
+ return "<$type><!-- ".trim($code)." --></$type>";
5581
+ }
5582
+
5583
+ public static function __callStatic($method, $params) {
5584
+ return call_user_func_array(
5585
+ array(phpQuery::$plugins, $method),
5586
+ $params
5587
+ );
5588
+ }
5589
+ protected static function dataSetupNode($node, $documentID) {
5590
+ // search are return if alredy exists
5591
+ foreach(phpQuery::$documents[$documentID]->dataNodes as $dataNode) {
5592
+ if ($node->isSameNode($dataNode))
5593
+ return $dataNode;
5594
+ }
5595
+ // if doesn't, add it
5596
+ phpQuery::$documents[$documentID]->dataNodes[] = $node;
5597
+ return $node;
5598
+ }
5599
+ protected static function dataRemoveNode($node, $documentID) {
5600
+ // search are return if alredy exists
5601
+ foreach(phpQuery::$documents[$documentID]->dataNodes as $k => $dataNode) {
5602
+ if ($node->isSameNode($dataNode)) {
5603
+ unset(self::$documents[$documentID]->dataNodes[$k]);
5604
+ unset(self::$documents[$documentID]->data[ $dataNode->dataID ]);
5605
+ }
5606
+ }
5607
+ }
5608
+ public static function data($node, $name, $data, $documentID = null) {
5609
+ if (! $documentID)
5610
+ // TODO check if this works
5611
+ $documentID = self::getDocumentID($node);
5612
+ $document = phpQuery::$documents[$documentID];
5613
+ $node = self::dataSetupNode($node, $documentID);
5614
+ if (! isset($node->dataID))
5615
+ $node->dataID = ++phpQuery::$documents[$documentID]->uuid;
5616
+ $id = $node->dataID;
5617
+ if (! isset($document->data[$id]))
5618
+ $document->data[$id] = array();
5619
+ if (! is_null($data))
5620
+ $document->data[$id][$name] = $data;
5621
+ if ($name) {
5622
+ if (isset($document->data[$id][$name]))
5623
+ return $document->data[$id][$name];
5624
+ } else
5625
+ return $id;
5626
+ }
5627
+ public static function removeData($node, $name, $documentID) {
5628
+ if (! $documentID)
5629
+ // TODO check if this works
5630
+ $documentID = self::getDocumentID($node);
5631
+ $document = phpQuery::$documents[$documentID];
5632
+ $node = self::dataSetupNode($node, $documentID);
5633
+ $id = $node->dataID;
5634
+ if ($name) {
5635
+ if (isset($document->data[$id][$name]))
5636
+ unset($document->data[$id][$name]);
5637
+ $name = null;
5638
+ foreach($document->data[$id] as $name)
5639
+ break;
5640
+ if (! $name)
5641
+ self::removeData($node, $name, $documentID);
5642
+ } else {
5643
+ self::dataRemoveNode($node, $documentID);
5644
+ }
5645
+ }
5646
+ }
5647
+ /**
5648
+ * Plugins static namespace class.
5649
+ *
5650
+ * @author Tobiasz Cudnik <tobiasz.cudnik/gmail.com>
5651
+ * @package phpQuery
5652
+ * @todo move plugin methods here (as statics)
5653
+ */
5654
+ class phpQueryPlugins {
5655
+ public function __call($method, $args) {
5656
+ if (isset(phpQuery::$extendStaticMethods[$method])) {
5657
+ $return = call_user_func_array(
5658
+ phpQuery::$extendStaticMethods[$method],
5659
+ $args
5660
+ );
5661
+ } else if (isset(phpQuery::$pluginsStaticMethods[$method])) {
5662
+ $class = phpQuery::$pluginsStaticMethods[$method];
5663
+ $realClass = "phpQueryPlugin_$class";
5664
+ $return = call_user_func_array(
5665
+ array($realClass, $method),
5666
+ $args
5667
+ );
5668
+ return isset($return)
5669
+ ? $return
5670
+ : $this;
5671
+ } else
5672
+ throw new Exception("Method '{$method}' doesnt exist");
5673
+ }
5674
+ }
5675
+ /**
5676
+ * Shortcut to phpQuery::pq($arg1, $context)
5677
+ * Chainable.
5678
+ *
5679
+ * @see phpQuery::pq()
5680
+ * @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
5681
+ * @author Tobiasz Cudnik <tobiasz.cudnik/gmail.com>
5682
+ * @package phpQuery
5683
+ */
5684
+ function pq($arg1, $context = null) {
5685
+ $args = func_get_args();
5686
+ return call_user_func_array(
5687
+ array('phpQuery', 'pq'),
5688
+ $args
5689
+ );
5690
+ }
5691
+ // add plugins dir and Zend framework to include path
5692
+ set_include_path(
5693
+ get_include_path()
5694
+ .PATH_SEPARATOR.dirname(__FILE__).'/phpQuery/'
5695
+ .PATH_SEPARATOR.dirname(__FILE__).'/phpQuery/plugins/'
5696
+ );
5697
+ // why ? no __call nor __get for statics in php...
5698
+ // XXX __callStatic will be available in PHP 5.3
5699
+ phpQuery::$plugins = new phpQueryPlugins();
5700
+ // include bootstrap file (personal library config)
5701
+ if (file_exists(dirname(__FILE__).'/phpQuery/bootstrap.php'))
5702
+ require_once dirname(__FILE__).'/phpQuery/bootstrap.php';
readme.txt CHANGED
@@ -3,8 +3,8 @@ Contributors: gantry
3
  Author URI: http://gantry-framework.org
4
  Tags: gantry, framework, template, theme, widgets, flexible, extensible, configurable, 960px, grid, columns, powerful, buddypress
5
  Requires at least: 3.2
6
- Tested up to: 3.6.1
7
- Stable tag: 4.0.8
8
 
9
  Gantry is a comprehensive set of building blocks to enable the rapid development and realization of a design into a flexible and powerful web platform
10
 
@@ -85,6 +85,19 @@ Once you downloaded and installed Gantry Framework plugin, please download also
85
 
86
  == Changelog ==
87
 
 
 
 
 
 
 
 
 
 
 
 
 
 
88
  = 4.0.8 =
89
  * Added core support for the BuddyPress 1.8+ - Gantry BuddyPress plugin is no longer required and has been deprecated
90
  * Fix for the Gizmo options not being saved/loaded in the Presets of the theme
@@ -345,6 +358,9 @@ Once you downloaded and installed Gantry Framework plugin, please download also
345
 
346
  == Upgrade Notice ==
347
 
 
 
 
348
  = 4.0.8 =
349
  Please remember to create a full site backup (files + database) before performing update.
350
 
3
  Author URI: http://gantry-framework.org
4
  Tags: gantry, framework, template, theme, widgets, flexible, extensible, configurable, 960px, grid, columns, powerful, buddypress
5
  Requires at least: 3.2
6
+ Tested up to: 3.8
7
+ Stable tag: 4.1.0
8
 
9
  Gantry is a comprehensive set of building blocks to enable the rapid development and realization of a design into a flexible and powerful web platform
10
 
85
 
86
  == Changelog ==
87
 
88
+ = 4.1.0 =
89
+ * Compatibility fix in the MooRainbow for the Visual Composer plugin
90
+ * RokBox 2 support in the Login Button widget
91
+ * Fix for the multiple body classes in Page Suffix gizmo
92
+ * Updated IE11 detection
93
+ * Updated Pretty Print JS files
94
+ * Fixed font style issues caused by FontAwesome 3.2.1 icons
95
+ * Added Font Awesome 4 assets for future use
96
+ * Fixed missing special characters with Google fonts ie. Polish characters
97
+ * Removed RocketTheme references in Copyright widget
98
+ * Fixed the display of overrided options in the theme settings
99
+ * Gantry admin UI fixes for the WordPress 3.8
100
+
101
  = 4.0.8 =
102
  * Added core support for the BuddyPress 1.8+ - Gantry BuddyPress plugin is no longer required and has been deprecated
103
  * Fix for the Gizmo options not being saved/loaded in the Presets of the theme
358
 
359
  == Upgrade Notice ==
360
 
361
+ = 4.1.0 =
362
+ Please remember to create a full site backup (files + database) before performing update.
363
+
364
  = 4.0.8 =
365
  Please remember to create a full site backup (files + database) before performing update.
366
 
widgets/breadcrumbs.php CHANGED
@@ -1,6 +1,6 @@
1
  <?php
2
  /**
3
- * @version 4.0.8 October 3, 2013
4
  * @author RocketTheme http://www.rockettheme.com
5
  * @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
6
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
1
  <?php
2
  /**
3
+ * @version 4.1.0 December 12, 2013
4
  * @author RocketTheme http://www.rockettheme.com
5
  * @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
6
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
widgets/copyright.php CHANGED
@@ -1,6 +1,6 @@
1
  <?php
2
  /**
3
- * @version $Id: copyright.php 59939 2013-09-27 11:44:21Z jakub $
4
  * @author RocketTheme http://www.rockettheme.com
5
  * @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
6
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
@@ -42,7 +42,6 @@ class GantryWidgetCopyright extends GantryWidget
42
  ob_start();
43
  ?>
44
 
45
- <a href="http://www.rockettheme.com/" title="rockettheme.com" id="rocket"></a>
46
  <?php
47
 
48
  $text = $instance['text'];
1
  <?php
2
  /**
3
+ * @version $Id: copyright.php 60231 2013-11-20 22:27:14Z jakub $
4
  * @author RocketTheme http://www.rockettheme.com
5
  * @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
6
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
42
  ob_start();
43
  ?>
44
 
 
45
  <?php
46
 
47
  $text = $instance['text'];
widgets/gantrymenu/themes/default/js/responsive-selectbox.js CHANGED
@@ -1,15 +1,106 @@
1
- /*
2
- * @version $Id: responsive-selectbox.js 4586 2012-10-27 01:50:24Z btowles $
3
  * @author RocketTheme http://www.rockettheme.com
4
- * @copyright Copyright (C) 2007 - 2012 RocketTheme, LLC
5
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
6
  */
7
- ((function(){var a={build:function(){var d=document.getElement("ul.gf-menu"),c=document.getElement(".gf-menu-device-container");
8
- if(!d||!c||d.retrieve("roknavmenu:dropdown:select")){return;}d.store("roknavmenu:dropdown:select",true);var b=new Element("select").inject(c,"top");a.getChildren(d,b,0);
9
- a.attachEvent(b);},getChildren:function(c,m,g){var d=c.getChildren(),b,n,p,j,k,h,o;for(var f=0,e=d.length;f<e;f++){p=d[f].getElement(".item");if(!p){continue;
10
- }n=p.getElement("em")||p.getElement("i");b=d[f].getElement("ul");o=d[f].hasClass("active");j=p.get("text").clean();k=n?n.get("text").clean():"";if(j.length!=k.length){j=j.substr(0,(j.length-1)-(k.length-1));
11
- }h=new Element("option",{value:p.get("href"),text:"-".repeat(g)+" "+j}).inject(m);if(o){h.set("selected","selected");}if(d[f].getElement("ul")){a.getChildren(d[f].getElement("ul"),m,g+1);
12
- }}},attachEvent:function(b){b.addEvent("change",function(){window.location.href=this.value;});}};window.addEvent("domready",a.build);if(typeof ResponsiveMenu!="undefined"){ResponsiveMenu.implement({mediaQuery:function(d){var e=document.getElement(".gf-menu"),c=document.getElement(".gf-menu-device-container"),b=this.toggler.retrieve("roknavmenu:slide");
13
- if(!e&&!c){return;}if(d=="(min-width: 768px)"){e.setStyle("display","inherit");this.slide.wrapper.setStyle("display","none");this.toggler.setStyle("display","none");
14
- }else{e.setStyle("display","none");this.slide.wrapper.setStyle("display","inherit");this.toggler.setStyle("display","block");}b.hide();this.toggler.removeClass("active");
15
- }});}})());
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*!
2
+ * @version $Id: responsive-selectbox.js 8885 2013-03-28 17:38:51Z djamil $
3
  * @author RocketTheme http://www.rockettheme.com
4
+ * @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
5
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
6
  */
7
+
8
+ ((function () {
9
+
10
+ var ResponsiveDropdown = {
11
+ cache: [],
12
+ build: function() {
13
+ var menu = document.getElement('ul.gf-menu'),
14
+ container = document.getElement('.gf-menu-device-container');
15
+
16
+ if (!menu || !container || menu.retrieve('roknavmenu:dropdown:select')) return;
17
+
18
+ menu.store('roknavmenu:dropdown:select', true);
19
+
20
+ var select = new Element('select').inject(container, 'top');
21
+
22
+ ResponsiveDropdown.getChildren(menu, select, 0);
23
+
24
+ //menu.setStyle('display', 'none');
25
+
26
+ ResponsiveDropdown.attachEvent(select);
27
+ },
28
+
29
+ getChildren: function(menu, select, depth) {
30
+ var children = menu.getChildren().flatten(),
31
+ submenu, subitem, item, group, cache,
32
+ itemtext, subtext,
33
+ option, isActive;
34
+
35
+ for (var i = 0, l = children.length; i < l; i++) {
36
+ item = children[i].getElement('.item');
37
+ if (!item) continue;
38
+
39
+ cache = children[i].className.replace(/\s/g, '-');
40
+
41
+ if (ResponsiveDropdown.cache.contains(cache)) continue;
42
+ ResponsiveDropdown.cache.push(cache);
43
+
44
+ subitem = item.getElement('em') || item.getElement('i');
45
+ submenu = children[i].getElement('ul');
46
+ group = children[i].getElement('ol');
47
+ isActive = children[i].hasClass('active');
48
+
49
+ itemtext = item.get('text').clean();
50
+ subtext = subitem ? subitem.get('text').clean() : '';
51
+
52
+ if (itemtext.length != subtext.length) itemtext = itemtext.substr(0, (itemtext.length - 1) - (subtext.length - 1));
53
+
54
+ option = new Element('option', {value:item.get('href'), text:'-'.repeat(depth) + ' ' + itemtext}).inject(select);
55
+
56
+
57
+ if (isActive) option.set('selected', 'selected');
58
+
59
+
60
+ if (submenu){
61
+ if (submenu.getParent('.column')){
62
+ ResponsiveDropdown.getChildren(submenu.getParent('.dropdown').getElements(' > .column > ul'), select, depth + 1);
63
+ } else ResponsiveDropdown.getChildren(submenu, select, depth + 1);
64
+ }
65
+
66
+ if (group){
67
+ ResponsiveDropdown.getChildren(group, select, depth + 1);
68
+ }
69
+ }
70
+ },
71
+
72
+ attachEvent: function(select) {
73
+ select.addEvent('change', function () {
74
+ window.location.href = this.value;
75
+ });
76
+ }
77
+ };
78
+
79
+ window.addEvent('domready', ResponsiveDropdown.build);
80
+
81
+ if (typeof ResponsiveMenu != 'undefined') {
82
+ ResponsiveMenu.implement({
83
+ mediaQuery:function (query) {
84
+ var menu = document.getElement('.gf-menu'),
85
+ container = document.getElement('.gf-menu-device-container'),
86
+ slide = this.toggler.retrieve('roknavmenu:slide');
87
+
88
+ if (!menu && !container) return;
89
+
90
+ if (query == '(min-width: 768px)') {
91
+ menu.setStyle('display', 'inherit');
92
+ this.slide.wrapper.setStyle('display', 'none');
93
+ this.toggler.setStyle('display', 'none');
94
+ } else {
95
+ menu.setStyle('display', 'none');
96
+ this.slide.wrapper.setStyle('display', 'inherit');
97
+ this.toggler.setStyle('display', 'block');
98
+ }
99
+
100
+ slide.hide();
101
+ this.toggler.removeClass('active');
102
+ }
103
+ });
104
+ }
105
+
106
+ })());
widgets/gantrymenu/themes/default/js/responsive.js CHANGED
@@ -1,16 +1,91 @@
1
- /*
2
  * @version $Id: responsive.js 4586 2012-10-27 01:50:24Z btowles $
3
  * @author RocketTheme http://www.rockettheme.com
4
- * @copyright Copyright (C) 2007 - 2012 RocketTheme, LLC
5
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
6
  */
7
- ((function(){var a=this.ResponsiveMenu=new Class({initialize:function(){this.build();
8
- this.attachEvents();this.mediaQuery(RokMediaQueries.getQuery());},build:function(){if(this.toggler){return this.toggler;}this.toggler=new Element("div.gf-menu-toggle").inject(document.body);
9
- (3).times(function(b){new Element("span.icon-bar").inject(this.toggler);},this);return this.toggler;},attachEvents:function(){var c=this.toggler.retrieve("roknavmenu:click",function(d){this.toggle.call(this,d,this.toggler);
10
- }.bind(this));this.toggler.addEvent("click",c);this.slide=this.toggler.retrieve("roknavmenu:slide",new Fx.Slide(document.getElement(".gf-menu-device-container"),{duration:350,hideOverflow:true,resetHeight:true,link:"cancel",onStart:function(){if(!this.open){this.wrapper.addClass("gf-menu-device-wrapper");
11
- }},onComplete:function(){if(this.open){this.wrapper.removeClass("gf-menu-device-wrapper");}}}).hide());try{RokMediaQueries.on("(max-width: 767px)",this.mediaQuery.bind(this));
12
- RokMediaQueries.on("(min-width: 768px)",this.mediaQuery.bind(this));}catch(b){if(typeof console!="undefined"){console.error('Error [Responsive Menu] while trying to add a RokMediaQuery "match" event',b);
13
- }}},toggle:function(c,d){var b=d.retrieve("roknavmenu:slide");d[b.open?"removeClass":"addClass"]("active");b[b.open?"slideOut":"slideIn"]();},mediaQuery:function(d){var e=document.getElement(".gf-menu"),c=document.getElement(".gf-menu-device-container"),b=this.toggler.retrieve("roknavmenu:slide");
14
- if(!e&&!c){return;}if(d=="(min-width: 768px)"){e.inject(b.wrapper,"after");this.slide.wrapper.setStyle("display","none");this.toggler.setStyle("display","none");
15
- }else{e.inject(c);this.slide.wrapper.setStyle("display","inherit");this.toggler.setStyle("display","block");}b.hide();this.toggler.removeClass("active");
16
- }});window.addEvent("domready",function(){this.RokNavMenu=new a();});})());
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*!
2
  * @version $Id: responsive.js 4586 2012-10-27 01:50:24Z btowles $
3
  * @author RocketTheme http://www.rockettheme.com
4
+ * @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
5
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
6
  */
7
+
8
+ ((function(){
9
+
10
+ var ResponsiveMenu = this.ResponsiveMenu = new Class({
11
+ initialize: function(){
12
+ this.build();
13
+ this.attachEvents();
14
+ this.mediaQuery(RokMediaQueries.getQuery());
15
+ },
16
+
17
+ build: function(){
18
+ if (this.toggler) return this.toggler;
19
+ this.toggler = new Element('div.gf-menu-toggle').inject(document.body);
20
+
21
+ (3).times(function(i){
22
+ new Element('span.icon-bar').inject(this.toggler);
23
+ }, this);
24
+
25
+ return this.toggler;
26
+ },
27
+
28
+ attachEvents: function(){
29
+ var click = this.toggler.retrieve('roknavmenu:click', function(event){
30
+ this.toggle.call(this, event, this.toggler);
31
+ }.bind(this));
32
+
33
+ this.toggler.addEvent('click', click);
34
+
35
+ this.slide = this.toggler.retrieve('roknavmenu:slide', new Fx.Slide(
36
+ document.getElement('.gf-menu-device-container'), {
37
+ duration: 350,
38
+ hideOverflow: true,
39
+ resetHeight: true,
40
+ link: 'cancel',
41
+ onStart: function(){
42
+ if (!this.open) this.wrapper.addClass('gf-menu-device-wrapper');
43
+ },
44
+ onComplete: function(){
45
+ if (this.open) this.wrapper.removeClass('gf-menu-device-wrapper');
46
+ }
47
+ }
48
+ ).hide());
49
+
50
+
51
+ try {
52
+ RokMediaQueries.on('(max-width: 767px)', this.mediaQuery.bind(this));
53
+ RokMediaQueries.on('(min-width: 768px)', this.mediaQuery.bind(this));
54
+ }
55
+ catch(error) { if (typeof console != 'undefined') console.error('Error [Responsive Menu] while trying to add a RokMediaQuery "match" event', error); }
56
+ },
57
+
58
+ toggle: function(event, toggler){
59
+ var slide = toggler.retrieve('roknavmenu:slide');
60
+
61
+ toggler[slide.open ? 'removeClass' : 'addClass']('active');
62
+ slide[slide.open ? 'slideOut' : 'slideIn']();
63
+ },
64
+
65
+ mediaQuery: function(query){
66
+ var menu = document.getElement('.gf-menu'),
67
+ container = document.getElement('.gf-menu-device-container'),
68
+ slide = this.toggler.retrieve('roknavmenu:slide');
69
+
70
+ if (!menu && !container) return;
71
+
72
+ if (query == '(min-width: 768px)'){
73
+ menu.inject(slide.wrapper, 'after');
74
+ this.slide.wrapper.setStyle('display', 'none');
75
+ this.toggler.setStyle('display', 'none');
76
+ } else {
77
+ menu.inject(container);
78
+ this.slide.wrapper.setStyle('display', 'inherit');
79
+ this.toggler.setStyle('display', 'block');
80
+ }
81
+
82
+ slide.hide();
83
+ this.toggler.removeClass('active');
84
+ }
85
+ });
86
+
87
+ window.addEvent('domready', function(){
88
+ this.RokNavMenu = new ResponsiveMenu();
89
+ });
90
+
91
+ })());
widgets/gantrymenu/themes/default/js/rokmediaqueries.js CHANGED
@@ -1,21 +1,156 @@
1
- /*
2
  * @version $Id: rokmediaqueries.js 4586 2012-10-27 01:50:24Z btowles $
3
  * @author RocketTheme http://www.rockettheme.com
4
- * @copyright Copyright (C) 2007 - 2012 RocketTheme, LLC
5
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
6
  */
7
- ((function(){window.matchMedia=window.matchMedia||window.msMatchMedia||(function(e,f){var c,a=e.documentElement,b=a.firstElementChild||a.firstChild,d=e.createElement("body"),g=e.createElement("div");
8
- g.id="mq-test-1";g.style.cssText="position:absolute;top:-100em";d.style.background="none";d.appendChild(g);return function(h){g.innerHTML='&shy;<style media="'+h+'"> #mq-test-1 { width: 42px; }</style>';
9
- a.insertBefore(d,b);c=g.offsetWidth==42;a.removeChild(d);return{matches:c,media:h,addListener:function(i){if(!Browser.ie9&&!window.opera){return"";}if(window.retrieve("rokmediaqueries:listener:"+h.replace(/[a-z]|[(|)|:|\s|-]/gi,""),false)){return;
10
- }window.store("rokmediaqueries:listener:"+h.replace(/[a-z]|[(|)|:|\s|-]/gi,""),true);window[window.addListener?"addListener":"attachEvent"]("resize",function(){var l={},k=0,j,m=false;
11
- h.replace(/(\w+-?\w+)\s?:\s?(\d+){1,}/g,function(o,s,q,p,r,n){l[s]=q;k++;});if(!k){return;}else{if(k==1){j=window.getSize();m=false;Object.each(l,function(n,o){if(o=="min-width"){m+=j.x>=n;
12
- }else{if(o=="max-width"){m+=j.x<=n;}else{if(o=="width"){m+=j.x==n;}}}});}else{if(k>1){j=window.getSize();m=true;Object.each(l,function(n,o){if(o=="min-width"){m*=j.x>=n;
13
- }else{if(o=="max-width"){m*=j.x<=n;}else{if(o=="width"){m*=j.x==n;}}}});}}}if(m){return i.call(i,h);}});}};};})(document);})());((function(c,b){if(typeof RokMediaQueries!="undefined"){return;
14
- }var a=new Class({Implements:[Events,Options],options:{queries:["(min-width: 1200px)","(min-width: 960px) and (max-width: 1199px)","(min-width: 768px) and (max-width: 959px)","(min-width: 481px) and (max-width: 767px)","(max-width: 480px)"]},initialize:function(d){this.setOptions(d);
15
- this.queries=this.options.queries;this.queriesEvents={};this.timers=[];for(var e=this.queries.length-1;e>=0;e--){var f=c.matchMedia(this.queries[e]);f.addListener(this._fireEvent.bind(this,this.queries[e]));
16
- this.queriesEvents[this.queries[e]]=[];}},on:function(f,d){if(f=="every"){for(var e=this.queries.length-1;e>=0;e--){this._addOnMatch(this.queries[e],d);
17
- }}else{this._addOnMatch(f,d);}},add:function(d){if(!this.queries.contains(d)){var e;this.queries.push(d);e=c.matchMedia(d);e.addListener(this._fireEvent.bind(this,d));
18
- }if(!this.queriesEvents[d]){this.queriesEvents[d]=[];}},getQuery:function(){var e="";for(var d=this.queries.length-1;d>=0;d--){if(c.matchMedia(this.queries[d]).matches){e=this.queries[d];
19
- break;}}return e;},_fireEvent:function(e){if(!c.matchMedia(e).matches||!Object.getLength(this.queriesEvents)||!this.queriesEvents[e]){return;}for(var d=this.queriesEvents[e].length-1;
20
- d>=0;d--){this.queriesEvents[e][d].delay(5,this,e);}},_addOnMatch:function(e,d){this.add(e);this.queriesEvents[e].push(d);}});c.RokMediaQueries=new a();
21
- })(window,document));
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*!
2
  * @version $Id: rokmediaqueries.js 4586 2012-10-27 01:50:24Z btowles $
3
  * @author RocketTheme http://www.rockettheme.com
4
+ * @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
5
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
6
  */
7
+
8
+ ((function () {
9
+ ///*! matchMedia() polyfill - Test a CSS media type/query in JS. Authors & copyright (c) 2012: Scott Jehl, Paul Irish, Nicholas Zakas. Dual MIT/BSD license */
10
+ // matchMedia polyfill
11
+ window.matchMedia = window.matchMedia || window.msMatchMedia || (function (doc, undefined) {
12
+ var bool,
13
+ docElem = doc.documentElement,
14
+ refNode = docElem.firstElementChild || docElem.firstChild,
15
+ // fakeBody required for <FF4 when executed in <head>
16
+ fakeBody = doc.createElement('body'),
17
+ div = doc.createElement('div');
18
+
19
+ div.id = 'mq-test-1';
20
+ div.style.cssText = "position:absolute;top:-100em";
21
+ fakeBody.style.background = "none";
22
+ fakeBody.appendChild(div);
23
+
24
+ return function (q) {
25
+ div.innerHTML = '&shy;<style media="' + q + '"> #mq-test-1 { width: 42px; }</style>';
26
+
27
+ docElem.insertBefore(fakeBody, refNode);
28
+ bool = div.offsetWidth == 42;
29
+ docElem.removeChild(fakeBody);
30
+
31
+ return {
32
+ matches:bool,
33
+ media:q,
34
+ addListener:function (fn) {
35
+ if (!Browser.ie9 && !window.opera) return "";
36
+
37
+ if (window.retrieve('rokmediaqueries:listener:' + q.replace(/[a-z]|[(|)|:|\s|-]/gi, ''), false)) return;
38
+
39
+ window.store('rokmediaqueries:listener:' + q.replace(/[a-z]|[(|)|:|\s|-]/gi, ''), true);
40
+ window[window.addListener ? 'addListener' : 'attachEvent']('resize', function () {
41
+ var sizes = {}, length = 0, winSize, passed = false;
42
+ q.replace(/(\w+-?\w+)\s?:\s?(\d+){1,}/g, function (match, p1, p2, p3, offset, string) {
43
+ sizes[p1] = p2;
44
+ length++;
45
+ });
46
+ if (!length) return;
47
+ else if (length == 1) {
48
+ winSize = window.getSize();
49
+ passed = false;
50
+ Object.each(sizes, function (size, dimension) {
51
+ if (dimension == 'min-width') passed += winSize.x >= size;
52
+ else if (dimension == 'max-width') passed += winSize.x <= size;
53
+ else if (dimension == 'width') passed += winSize.x == size;
54
+ });
55
+ } else if (length > 1) {
56
+ winSize = window.getSize();
57
+ passed = true;
58
+ Object.each(sizes, function (size, dimension) {
59
+ if (dimension == 'min-width') passed *= winSize.x >= size;
60
+ else if (dimension == 'max-width') passed *= winSize.x <= size;
61
+ else if (dimension == 'width') passed *= winSize.x == size;
62
+ });
63
+ }
64
+
65
+ if (passed) return fn.call(fn, q);
66
+ });
67
+
68
+ }
69
+ };
70
+ };
71
+
72
+ })(document);
73
+
74
+ })());
75
+
76
+ ((function (win, doc) {
77
+
78
+ if (typeof RokMediaQueries != 'undefined') return;
79
+
80
+ var RokMediaQuery = new Class({
81
+ Implements:[Events, Options],
82
+ options:{
83
+ /*
84
+ onChange: function(query){},
85
+ */
86
+ queries:[
87
+ '(min-width: 1200px)',
88
+ '(min-width: 960px) and (max-width: 1199px)',
89
+ '(min-width: 768px) and (max-width: 959px)',
90
+ '(min-width: 481px) and (max-width: 767px)',
91
+ '(max-width: 480px)'
92
+ ]
93
+ },
94
+ initialize:function (options) {
95
+ this.setOptions(options);
96
+ this.queries = this.options.queries;
97
+ this.queriesEvents = {};
98
+ this.timers = [];
99
+
100
+ for (var i = this.queries.length - 1; i >= 0; i--) {
101
+ var media = win.matchMedia(this.queries[i]);
102
+ media.addListener(this._fireEvent.bind(this, this.queries[i]));
103
+ this.queriesEvents[this.queries[i]] = [];
104
+ }
105
+ },
106
+
107
+ on:function (query, funct) {
108
+ if (query == 'every') {
109
+ for (var i = this.queries.length - 1; i >= 0; i--) this._addOnMatch(this.queries[i], funct);
110
+ } else {
111
+ this._addOnMatch(query, funct);
112
+ }
113
+ },
114
+
115
+ add:function (query) {
116
+ if (!this.queries.contains(query)) {
117
+ var media;
118
+ this.queries.push(query);
119
+ media = win.matchMedia(query);
120
+ media.addListener(this._fireEvent.bind(this, query));
121
+ }
122
+
123
+ if (!this.queriesEvents[query]) this.queriesEvents[query] = [];
124
+ },
125
+
126
+ getQuery:function () {
127
+ var current = "";
128
+
129
+ for (var i = this.queries.length - 1; i >= 0; i--) {
130
+ if (win.matchMedia(this.queries[i]).matches) {
131
+ current = this.queries[i];
132
+ break;
133
+ }
134
+ }
135
+
136
+ return current;
137
+ },
138
+
139
+ /* private methods */
140
+ _fireEvent:function (query) {
141
+ if (!win.matchMedia(query).matches || !Object.getLength(this.queriesEvents) || !this.queriesEvents[query]) return;
142
+
143
+ for (var i = this.queriesEvents[query].length - 1; i >= 0; i--) {
144
+ this.queriesEvents[query][i].delay(5, this, query);
145
+ }
146
+ },
147
+
148
+ _addOnMatch:function (query, funct) {
149
+ this.add(query);
150
+ this.queriesEvents[query].push(funct);
151
+ }
152
+ });
153
+
154
+ win.RokMediaQueries = new RokMediaQuery();
155
+
156
+ })(window, document));
widgets/gantrymenu/themes/default/js/sidemenu.js ADDED
@@ -0,0 +1,130 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*!
2
+ * @version $Id: sidemenu.js 14307 2013-10-08 15:44:26Z djamil $
3
+ * @author RocketTheme http://www.rockettheme.com
4
+ * @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
5
+ * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
6
+ */
7
+
8
+ ((function(){
9
+
10
+ var isTouch = (function(){ return !!('ontouchstart' in window); })(),
11
+ isiPad = navigator.userAgent.match(/iPad/i) != null;
12
+
13
+ var SideMenu = this.SideMenu = new Class({
14
+ initialize: function(){
15
+ this.build();
16
+ this.mediaQuery(RokMediaQueries.getQuery());
17
+ this.attachEvents();
18
+ this.mediaQuery(RokMediaQueries.getQuery());
19
+ },
20
+
21
+ build: function(){
22
+ if (this.toggler) return this.toggler;
23
+ this.toggler = new Element('div.gf-menu-toggle').inject(document.body);
24
+ this.container = document.getElement('.gf-menu-device-container');
25
+ this.wrapper = new Element('div.gf-menu-device-container-wrapper').inject(this.container);
26
+
27
+ this.container = new Element('div.gf-menu-device-wrapper-sidemenu').wraps(this.container);
28
+
29
+ this.menu = document.getElement('.gf-menu');
30
+ this.originalPosition = this.menu.getParent();
31
+ this.open = false;
32
+
33
+ (3).times(function(){
34
+ new Element('span.icon-bar').inject(this.toggler);
35
+ }, this);
36
+
37
+ this.container.inject(document.body);
38
+
39
+ return this.toggler;
40
+ },
41
+
42
+ attachEvents: function(){
43
+ var click = this.toggler.retrieve('roknavmenu:click', function(event){
44
+ event.preventDefault().stopPropagation();
45
+ this.toggle.call(this, event, this.toggler);
46
+ }.bind(this));
47
+
48
+ this.toggler.addEvent('click', click);
49
+
50
+ this.touchEvents = {
51
+ click: function(event){ event.preventDefault(); },
52
+ touchstart: function(){ this.store('touched', true); },
53
+ touchcancel: function(event){ event.preventDefault(); this.store('touched', false); },
54
+ touchmove: function(){ this.store('touched', false); },
55
+ touchend: function(event){
56
+ console.log(this);
57
+ if (!this.retrieve('touched', false)) event.preventDefault();
58
+ else location.href = this.get('href');
59
+ }
60
+ };
61
+
62
+ try {
63
+ RokMediaQueries.on('(max-width: 767px)', this.mediaQuery.bind(this));
64
+ RokMediaQueries.on('(min-width: 768px)', this.mediaQuery.bind(this));
65
+ }
66
+ catch(error) { if (typeof console != 'undefined') console.error('Error [Responsive Menu] while trying to add a RokMediaQuery "match" event', error); }
67
+ },
68
+
69
+ attachTouchEvents: function(){
70
+ if (isTouch && !isiPad){
71
+ $$('.responsive-type-panel .item').removeEvents().forEach(function(item){
72
+ Object.forEach(this.touchEvents, function(fn, evt){
73
+ item.addEventListener(evt, fn, false);
74
+ });
75
+ }, this);
76
+ }
77
+ },
78
+
79
+ detachTouchEvents: function(){
80
+ if (isTouch && !isiPad){
81
+ $$('.responsive-type-panel .item').forEach(function(item){
82
+ Object.forEach(this.touchEvents, function(fn, evt){
83
+ item.removeEventListener(evt, fn, false);
84
+ });
85
+ }, this);
86
+ }
87
+ },
88
+
89
+ toggle: function(event, toggler){
90
+ this.container[!this.open ? 'addClass' : 'removeClass']('gf-sidemenu-size-left');
91
+ document.body[!this.open ? 'addClass' : 'removeClass']('gf-sidemenu-size-marginleft');
92
+ toggler[!this.open ? 'addClass' : 'removeClass']('active');
93
+
94
+ this.open = !this.open;
95
+ /*var slide = toggler.retrieve('roknavmenu:slidehor');
96
+
97
+ toggler[slide.open ? 'removeClass' : 'addClass']('active');
98
+ slide[slide.open ? 'slideOut' : 'slideIn']();*/
99
+ },
100
+
101
+ mediaQuery: function(query){
102
+ var menu = this.menu,
103
+ container = this.wrapper;
104
+ //slide = this.toggler.retrieve('roknavmenu:slidehor');
105
+
106
+ if (!menu && !container) return;
107
+ if (query != '(min-width: 768px)' && query != '(max-width: 767px)') return;
108
+
109
+ if (query == '(min-width: 768px)'){
110
+ menu.inject(this.originalPosition);
111
+ this.detachTouchEvents();
112
+ /*this.slide.wrapper.setStyle('display', 'none');*/
113
+ this.toggler.setStyle('display', 'none');
114
+ } else {
115
+ menu.inject(container);
116
+ this.attachTouchEvents();
117
+ /*this.slide.wrapper.setStyle('display', 'inherit');*/
118
+ this.toggler.setStyle('display', 'block');
119
+ }
120
+
121
+ //slide.hide();
122
+ this.toggler.removeClass('active');
123
+ }
124
+ });
125
+
126
+ window.addEvent('domready', function(){
127
+ this.RokNavMenu = new SideMenu();
128
+ });
129
+
130
+ })());
widgets/loginbutton.php CHANGED
@@ -1,6 +1,6 @@
1
  <?php
2
  /**
3
- * @version 4.0.8 October 3, 2013
4
  * @author RocketTheme http://www.rockettheme.com
5
  * @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
6
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
@@ -52,7 +52,7 @@ class GantryWidgetLoginButton extends GantryWidget {
52
  <div id="<?php echo $this->id; ?>" class="widget <?php echo $this->css_classname; ?> rt-block">
53
  <div class="rt-popupmodule-button">
54
  <?php if(!is_user_logged_in()) : ?>
55
- <a href="#" class="buttontext button" rel="rokbox[385 160][module=rt-popuplogin]">
56
  <span class="desc"><?php echo $instance['logintext']; ?></span>
57
  </a>
58
  <?php else : ?>
@@ -68,4 +68,17 @@ class GantryWidgetLoginButton extends GantryWidget {
68
  echo ob_get_clean();
69
 
70
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
71
  }
1
  <?php
2
  /**
3
+ * @version 4.1.0 December 12, 2013
4
  * @author RocketTheme http://www.rockettheme.com
5
  * @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
6
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
52
  <div id="<?php echo $this->id; ?>" class="widget <?php echo $this->css_classname; ?> rt-block">
53
  <div class="rt-popupmodule-button">
54
  <?php if(!is_user_logged_in()) : ?>
55
+ <?php echo $this->_renderRokBoxLink(); ?>
56
  <span class="desc"><?php echo $instance['logintext']; ?></span>
57
  </a>
58
  <?php else : ?>
68
  echo ob_get_clean();
69
 
70
  }
71
+
72
+ function _renderRokBoxLink(){
73
+ $isRokBox2 = @file_exists(ABSPATH . 'wp-content/plugins/wp_rokbox/tinymce/tinymce.php');
74
+ $output = array();
75
+
76
+ if ($isRokBox2){
77
+ $output[] = '<a data-rokbox data-rokbox-element="#rt-popuplogin" href="#" class="buttontext button">';
78
+ } else {
79
+ $output[] = '<a href="#" class="buttontext button" rel="rokbox[385 200][module=rt-popuplogin]">';
80
+ }
81
+
82
+ return implode("\n", $output);
83
+ }
84
  }
widgets/loginform.php CHANGED
@@ -1,6 +1,6 @@
1
  <?php
2
  /**
3
- * @version 4.0.8 October 3, 2013
4
  * @author RocketTheme http://www.rockettheme.com
5
  * @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
6
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
1
  <?php
2
  /**
3
+ * @version 4.1.0 December 12, 2013
4
  * @author RocketTheme http://www.rockettheme.com
5
  * @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
6
  * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only