[
  {
    "path": ".gitignore",
    "content": "build/"
  },
  {
    "path": "LICENSE",
    "content": "Copyright (C) 2013 Vafpress (http://vafpress.com)\n\nThis program is free software: you can redistribute it and/or modify\nit under the terms of the GNU General Public License as published by\nthe Free Software Foundation, either version 3 of the License, or\n(at your option) any later version.\n\nThis program is distributed in the hope that it will be useful,\nbut WITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\nGNU General Public License for more details.\n\nYou should have received a copy of the GNU General Public License\nalong with this program.  If not, see <http://www.gnu.org/licenses/>."
  },
  {
    "path": "README.md",
    "content": "# Vafpress Framework\n\nFor those who need a simpler way to create their own Wordpress Theme. See the [homepage](http://vafpress.com/vafpress-framework/). Available as library and plugin, please check out those repos:\n\n* [Vafpress Framework Plugin](https://github.com/vafour/vafpress-framework-plugin)\n* [Vafpress Framework Theme Boilerplate](https://github.com/vafour/vafpress-framework-theme-boilerplate)\n\n## Core Features\n\n* Theme Options Builder\n* Metaboxes Builder\n* Shortcode Generator Builder\n\n## Features\n\n* Rich Set Of Fields\n* Client Side Validation\n* Custom Data Source\n* Binding Data Source\n* Fields Binding\n* Fields Dependencies\n* Import / Export\n* Restore Options to Default\n* Localization\n* Wordpress 3.3++ compatibility\n* New WP 3.5 Media Manager\n\n## Field Types\n\n* TextBox\n* TextArea\n* CheckBox\n* CheckImage\n* RadioButton\n* RadioImage\n* Select\n* MultiSelect\n* Slider\n* Toggle\n* Upload\n* DatePicker\n* ColorPicker\n* CodeEditor\n* NoteBox\n* Fontawesome icon chooser\n* WP TinyMCE Editor\n\n## Field Validation\n\n* alphabet\n* alphanumeric\n* numeric\n* email\n* url\n* maxlength\n* minlength\n* maxselected\n* minselected\n* required\n\n## How to Develop with Vafpress Framework\n\nGo to our [Documentation](http://vafpress.com/documentation/vafpress-framework/), everything is there.\n\n## Support\n\nPlease visit our support forum at http://support.vafpress.com if you need any helps.\n\n## Contribution\n\nWe welcome to any contribution, you can:\n\n1. Contribute to Vafpress code base.\n2. Report on issue here.\n3. Give us feedback via [forum](http://support.vafpress.com)\n4. Helping others in forum.\n5. Help us translate Vafpress Framework to your language at [Vafpress on Transifex](https://www.transifex.com/projects/p/vafpress-framework/)\n\n## Credits\n\nPlease read credits.txt file."
  },
  {
    "path": "autoload.php",
    "content": "<?php\n\n/*\n|--------------------------------------------------------------------------\n| Register AutoLoader\n|--------------------------------------------------------------------------\n| Vafpress Framework has separated app and core directories, developers can\n| put their extension code and configuration at app folder, as everything\n| inside app will be loaded first and will override class with the same\n| name with core classes.\n*/\nVP_AutoLoader::add_namespaces(VP_NAMESPACE);\nVP_AutoLoader::add_directories(VP_CLASSES_DIR, VP_NAMESPACE);\nVP_AutoLoader::register();\n\nclass VP_AutoLoader\n{\n\n\t/**\n\t * Indicates if VP_AutoLoader has been registered.\n\t * \n\t * @var boolean\n\t */\n\tprotected static $registered = false;\n\n\t/**\n\t * The registered directories\n\t * \n\t * @var array\n\t */\n\tprotected static $directories = array();\n\n\t/**\n\t * THe registered namespaces\n\t * \n\t * @var array\n\t */\n\tprotected static $namespaces = array();\n\n\t/**\n\t * Autoloading logic\n\t * \n\t * @param  String  $class Class name\n\t * @return Boolean        Whether the loading succeded.\n\t */\n\tpublic static function load($class)\n\t{\n\t\tclearstatcache();\n\n\t\t// figure out namespace and halt process if not in our namespace\n\t\t$namespace = self::discover_namespace($class);\n\t\tif($namespace === '')\n\t\t\treturn;\n\n\t\t$class = self::normalize_class($class, $namespace);\n\n\t\tforeach (self::$directories[$namespace] as $dir)\n\t\t{\n\t\t\t$file = $dir . DIRECTORY_SEPARATOR . $class;\n\n\t\t\t// if( $dir === end(self::$directories) )\n\t\t\t// {\n\t\t\t// \trequire $file;\n\t\t\t// \treturn true;\n\t\t\t// }\n\n\t\t\tif (is_link($file))\n\t\t\t{\n\t\t\t\t$file = readlink($file);\n\t\t\t}\n\n\t\t\t// $real = realpath($file);\n\t\t\t// if($real) $file = $real;\n\n\t\t\tif(is_file($file))\n\t\t\t{\n\t\t\t\trequire $file;\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Discover namespace from a string\n\t * \n\t * @param  String $key A class name or namespaced key\n\t * @return String      Namespace\n\t */\n\tpublic static function discover_namespace($key)\n\t{\n\t\t$namespace = '';\n\t\tforeach (self::$namespaces as $ns)\n\t\t{\n\t\t\tif (strpos($key, $ns) === 0)\n\t\t\t{\n\t\t\t\t$namespace = $ns;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\treturn $namespace;\n\t}\n\n\t/**\n\t * Register autoloader\n\t * \n\t * @return void\n\t */\n\tpublic static function register()\n\t{\n\t\tif(self::$registered !== TRUE)\n\t\t{\n\t\t\tspl_autoload_register(array('VP_AutoLoader', 'load'));\n\t\t}\n\t\tself::$registered = TRUE;\n\t}\n\n\t/**\n\t * Add a namespace\n\t *\n\t * @return void\n\t */\n\tpublic static function add_namespaces($namespaces)\n\t{\n\t\tself::$namespaces = array_merge(self::$namespaces, (array) $namespaces);\n\t\tself::$namespaces = array_unique(self::$namespaces);\n\t\tusort(self::$namespaces, array('self', 'sort'));\n\t}\n\n\t/**\n\t * Sort by length\n\t */\n\tprivate static function sort($a, $b)\n\t{\n    \treturn strlen($b) - strlen($a);\n\t}\n\n\n\t/**\n\t * Add directories to the autoloader, loading process will be run in orderly fashion\n\t * of directory addition.\n\t * \n\t * @param  String|Array $directories\n\t * @param  String       $namespace\n\t * @return void\n\t */\n\tpublic static function add_directories($directories, $namespace)\n\t{\n\t\tif(in_array($namespace, self::$namespaces))\n\t\t{\n\t\t\tif(!isset(self::$directories[$namespace]))\n\t\t\t\tself::$directories[$namespace] = array();\n\t\t\tself::$directories[$namespace] = array_merge(self::$directories[$namespace], (array) $directories);\n\t\t\tself::$directories[$namespace] = array_unique(self::$directories[$namespace]);\n\t\t}\n\t}\n\n\t/**\n\t * Remove directories.\n\t * \n\t * @param  String|Array $directories\n\t * @return void\n\t */\n\tpublic static function remove_directories($directories = null, $namespace)\n\t{\n\t\t// check if namespace existed\n\t\tif(!in_array($namespace, self::$namespaces))\n\t\t\treturn;\n\n\t\t// annihilate everything if none / null passed\n\t\tif(is_null($directories))\n\t\t{\n\t\t\tself::$directories[$namespace] = array();\n\t\t}\n\t\telse\n\t\t{\n\t\t\t// prepare directories to be filtered\n\t\t\t$directories = (array) $directories;\n\n\t\t\t// do the filtering\n\t\t\tforeach (self::$directories[$namespace] as $key => $dir)\n\t\t\t{\n\t\t\t\tif(in_array($dir, $directories))\n\t\t\t\t{\n\t\t\t\t\tunset(self::$directories[$namespace][$key]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Normalize class to be loaded\n\t * \n\t * @param  String $class Class name\n\t * @return String        Normalized class name\n\t */\n\tpublic static function normalize_class($class, $namespace)\n\t{\n\t\t$class = ltrim($class, '\\\\');\n\t\t$class = str_replace($namespace, '', $class);\n\t\t$class = ltrim($class, '_');\n\t\t$class = strtolower($class);\n\t\treturn str_replace('_', DIRECTORY_SEPARATOR, $class) . '.php';\n\t}\n\n\t/**\n\t * Get all directories\n\t * \n\t * @return Array\n\t */\n\tpublic static function get_directories()\n\t{\n\t\treturn self::$directories;\n\t}\n\n}\n\n/**\n * EOF\n */"
  },
  {
    "path": "bootstrap.php",
    "content": "<?php\n\nif( defined('VP_VERSION') )\n\treturn;\n\n//////////////////////////\n// Include Constants    //\n//////////////////////////\nrequire_once 'constant.php';\n\n//////////////////////////\n// Include Autoloader   //\n//////////////////////////\nrequire_once 'autoload.php';\n\n//////////////////////////\n// Load Languages       //\n//////////////////////////\nload_theme_textdomain('vp_textdomain', VP_DIR . '/lang');\n\n//////////////////////////\n// Setup FileSystem     //\n//////////////////////////\n$vpfs = VP_FileSystem::instance();\n$vpfs->add_directories('views'   , VP_VIEWS_DIR);\n$vpfs->add_directories('config'  , VP_CONFIG_DIR);\n$vpfs->add_directories('data'    , VP_DATA_DIR);\n$vpfs->add_directories('includes', VP_INCLUDE_DIR);\n\n//////////////////////////\n// Include Data Source  //\n//////////////////////////\nforeach (glob(VP_DATA_DIR . \"/*.php\") as $datasource)\n{\n\trequire_once($datasource);\n}\n\n//////////////////////////\n// TGMPA Unsetting      //\n//////////////////////////\nadd_action('after_setup_theme', 'vp_tgm_ac_check');\n\nif( !function_exists('vp_tgm_ac_check') )\n{\n\tfunction vp_tgm_ac_check()\n\t{\n\t\tadd_action('tgmpa_register', 'vp_tgm_ac_vafpress_check');\t\n\t}\n}\n\nif( !function_exists('vp_tgm_ac_vafpress_check') )\n{\n\tfunction vp_tgm_ac_vafpress_check()\n\t{\n\t\tif( defined('VP_VERSION') and class_exists('TGM_Plugin_Activation') )\n\t\t{\n\t\t\tforeach (TGM_Plugin_Activation::$instance->plugins as $key => &$plugin)\n\t\t\t{\n\t\t\t\tif( $plugin['name'] === 'Vafpress Framework Plugin' )\n\t\t\t\t{\n\t\t\t\t\tunset(TGM_Plugin_Activation::$instance->plugins[$key]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\n//////////////////////////\n// Ajax Definition      //\n//////////////////////////\nadd_action('wp_ajax_vp_ajax_wrapper', 'vp_ajax_wrapper');\n\nif( !function_exists('vp_ajax_wrapper') )\n{\n\tfunction vp_ajax_wrapper()\n\t{\n\t\t$function = $_POST['func'];\n\t\t$params   = $_POST['params'];\n\n\t\tif( VP_Security::instance()->is_function_whitelisted($function) )\n\t\t{\n\t\t\tif(!is_array($params))\n\t\t\t\t$params = array($params);\n\n\t\t\ttry {\n\t\t\t\t$result['data']    = call_user_func_array($function, $params);\n\t\t\t\t$result['status']  = true;\n\t\t\t\t$result['message'] = __(\"Successful\", 'vp_textdomain');\n\t\t\t} catch (Exception $e) {\n\t\t\t\t$result['data']    = '';\n\t\t\t\t$result['status']  = false;\n\t\t\t\t$result['message'] = $e->getMessage();\t\t\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\t$result['data']    = '';\n\t\t\t$result['status']  = false;\n\t\t\t$result['message'] = __(\"Unauthorized function\", 'vp_textdomain');\t\t\n\t\t}\n\n\t\tif (ob_get_length()) ob_clean();\n\t\theader('Content-type: application/json');\n\t\techo json_encode($result);\n\t\tdie();\n\t}\n}\n\n/////////////////////////////////\n// Pool and Dependencies Init  //\n/////////////////////////////////\nadd_action( 'init'                 , 'vp_metabox_enqueue' );\nadd_action( 'current_screen'       , 'vp_sg_enqueue' );\nadd_action( 'admin_enqueue_scripts', 'vp_enqueue_scripts' );\nadd_action( 'current_screen'       , 'vp_sg_init_buttons' );\nadd_filter( 'clean_url'            , 'vp_ace_script_attributes', 10, 1 );\n\nif( !function_exists('vp_ace_script_attributes') )\n{\n\tfunction vp_ace_script_attributes( $url )\n\t{\n\t\tif ( FALSE === strpos( $url, 'ace.js' ) )\n\t\t\treturn $url;\n\n\t\treturn \"$url' charset='utf8\";\n\t}\n}\n\nif( !function_exists('vp_metabox_enqueue') )\n{\n\tfunction vp_metabox_enqueue()\n\t{\n\t\tif( VP_WP_Admin::is_post_or_page() and VP_Metabox::pool_can_output() )\n\t\t{\n\t\t\t$loader = VP_WP_Loader::instance();\n\t\t\t$loader->add_main_js( 'vp-metabox' );\n\t\t\t$loader->add_main_css( 'vp-metabox' );\n\t\t}\n\t}\n}\n\nif( !function_exists('vp_sg_enqueue') )\n{\n\tfunction vp_sg_enqueue()\n\t{\n\t\tif( VP_ShortcodeGenerator::pool_can_output() )\n\t\t{\n\t\t\t// enqueue dummy js\n\t\t\t$localize = VP_ShortcodeGenerator::build_localize();\n\t\t\twp_register_script( 'vp-sg-dummy', VP_PUBLIC_URL . '/js/dummy.js', array(), '', false );\n\t\t\twp_localize_script( 'vp-sg-dummy', 'vp_sg', $localize );\n\t\t\twp_enqueue_script( 'vp-sg-dummy' );\n\n\t\t\t$loader = VP_WP_Loader::instance();\n\t\t\t$loader->add_main_js( 'vp-shortcode' );\n\t\t\t$loader->add_main_css( 'vp-shortcode' );\n\t\t}\n\t}\n}\n\nadd_action('admin_footer', 'vp_post_dummy_editor');\n\nif( !function_exists('vp_post_dummy_editor') )\n{\n\tfunction vp_post_dummy_editor()\n\t{\n\t\t/**\n\t\t * If we're in post edit page, and the post type doesn't support `editor`\n\t\t * we need to echo out a dummy editor to load all necessary js and css\n\t\t * to be used in our own called wp editor.\n\t\t */\n\t\t$loader = VP_WP_Loader::instance();\n\t\t$types  = $loader->get_types();\n\t\t$dummy  = false;\n\n\t\tif( VP_WP_Admin::is_post_or_page() )\n\t\t{\n\t\t\t$types = array_unique( array_merge( $types['metabox'], $types['shortcodegenerator'] ) );\n\t\t\tif( in_array('wpeditor', $types ) )\n\t\t\t{\n\t\t\t\tif( !VP_ShortcodeGenerator::pool_supports_editor() and !VP_Metabox::pool_supports_editor() )\n\t\t\t\t\t$dummy = true;\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\t$types = $types['option'];\n\t\t\tif( in_array('wpeditor', $types ) )\n\t\t\t\t$dummy = true;\n\t\t}\n\n\t\tif( $dummy )\n\t\t{\n\t\t\techo '<div style=\"display: none\">';\n\t\t\tadd_filter( 'wp_default_editor', create_function('', 'return \"tinymce\";') );\n\t\t\twp_editor ( '', 'vp_dummy_editor' );\n\t\t\techo '</div>';\t\t\n\t\t}\n\t}\n}\n\nif( !function_exists('vp_sg_init_buttons') )\n{\n\tfunction vp_sg_init_buttons()\n\t{\n\t\tif( VP_ShortcodeGenerator::pool_can_output() )\n\t\t{\n\t\t\tVP_ShortcodeGenerator::init_buttons();\n\t\t}\n\t}\n}\n\nif( !function_exists('vp_enqueue_scripts') )\n{\n\tfunction vp_enqueue_scripts()\n\t{\n\t\t$loader = VP_WP_Loader::instance();\n\t\t$loader->build();\n\t}\n}\n\n/**\n * Easy way to get metabox values using dot notation\n * example:\n * \n * vp_metabox('meta_name.field_name')\n * vp_metabox('meta_name.group_name')\n * vp_metabox('meta_name.group_name.0.field_name')\n * \n */\n\nif( !function_exists('vp_metabox') )\n{\n\tfunction vp_metabox($key, $default = null, $post_id = null)\n\t{\n\t\tglobal $post;\n\n\t\t$vp_metaboxes = VP_Metabox::get_pool();\n\n\t\tif(!is_null($post_id))\n\t\t{\n\t\t\t$the_post = get_post($post_id);\n\t\t\tif ( empty($the_post) ) $post_id = null;\n\t\t}\n\t\t\t\n\t\tif(is_null($post) and is_null($post_id))\n\t\t\treturn $default;\n\n\t\t$keys = explode('.', $key);\n\t\t$temp = NULL;\n\n\t\tforeach ($keys as $idx => $key)\n\t\t{\n\t\t\tif($idx == 0)\n\t\t\t{\n\t\t\t\tif(array_key_exists($key, $vp_metaboxes))\n\t\t\t\t{\n\t\t\t\t\t$temp = $vp_metaboxes[$key];\n\t\t\t\t\tif(!is_null($post_id))\n\t\t\t\t\t\t$temp->the_meta($post_id);\n\t\t\t\t\telse\n\t\t\t\t\t\t$temp->the_meta();\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\treturn $default;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tif(is_object($temp) and get_class($temp) === 'VP_Metabox')\n\t\t\t\t{\n\t\t\t\t\t$temp = $temp->get_the_value($key);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tif(is_array($temp) and array_key_exists($key, $temp))\n\t\t\t\t\t{\n\t\t\t\t\t\t$temp = $temp[$key];\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\treturn $default;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn $temp;\n\t}\n}\n\n/**\n * Easy way to get option values using dot notation\n * example:\n * \n * vp_option('option_key.field_name')\n * \n */\n\nif( !function_exists('vp_option') )\n{\n\tfunction vp_option($key, $default = null)\n\t{\n\t\t$vp_options = VP_Option::get_pool();\n\n\t\tif(empty($vp_options))\n\t\t\treturn $default;\n\n\t\t$keys = explode('.', $key);\n\t\t$temp = NULL;\n\n\t\tforeach ($keys as $idx => $key)\n\t\t{\n\t\t\tif($idx == 0)\n\t\t\t{\n\t\t\t\tif(array_key_exists($key, $vp_options))\n\t\t\t\t{\n\t\t\t\t\t$temp = $vp_options[$key];\n\t\t\t\t\t$temp = $temp->get_options();\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\treturn $default;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tif(is_array($temp) and array_key_exists($key, $temp))\n\t\t\t\t{\n\t\t\t\t\t$temp = $temp[$key];\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\treturn $default;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn $temp;\n\t}\n}\n\n/**\n * EOF\n */"
  },
  {
    "path": "classes/control/field/checkbox.php",
    "content": "<?php\n\nclass VP_Control_Field_CheckBox extends VP_Control_FieldMulti implements VP_MultiSelectable\n{\n\n\tpublic function __construct()\n\t{\n\t\tparent::__construct();\n\t\t$this->_value = array();\n\t\t$this->add_container_extra_classes('vp-checked-field');\n\t}\n\n\tpublic static function withArray($arr = array(), $class_name = null)\n\t{\n\t\tif(is_null($class_name))\n\t\t\t$instance = new self();\n\t\telse\n\t\t\t$instance = new $class_name;\n\t\t$instance->_basic_make($arr);\n\t\treturn $instance;\n\t}\n\n\tpublic function render($is_compact = false)\n\t{\n\t\t$this->_setup_data();\n\t\t$this->add_data('is_compact', $is_compact);\n\t\treturn VP_View::instance()->load('control/checkbox', $this->get_data());\n\t}\n\n}\n\n/**\n * EOF\n */"
  },
  {
    "path": "classes/control/field/checkimage.php",
    "content": "<?php\n\nclass VP_Control_Field_CheckImage extends VP_Control_FieldMultiImage implements VP_MultiSelectable\n{\n\n\tpublic function __construct()\n\t{\n\t\tparent::__construct();\n\t\t$this->_value = array();\n\t\t$this->add_container_extra_classes('vp-checked-field');\n\t}\n\n\tpublic static function withArray($arr = array(), $class_name = null)\n\t{\n\t\tif(is_null($class_name))\n\t\t\t$instance = new self();\n\t\telse\n\t\t\t$instance = new $class_name;\n\t\t$instance->_basic_make($arr);\n\t\treturn $instance;\n\t}\n\n\tpublic function render($is_compact = false)\n\t{\n\t\t$this->_setup_data();\n\t\t$this->add_data('is_compact', $is_compact);\n\t\treturn VP_View::instance()->load('control/checkimage', $this->get_data());\n\t}\n\n}\n\n/**\n * EOF\n */"
  },
  {
    "path": "classes/control/field/codeeditor.php",
    "content": "<?php\n\nclass VP_Control_Field_CodeEditor extends VP_Control_Field\n{\n\n\t/**\n\t * Editor's language mode\n\t * (javascript, css, html, php, json, xml, markdown)\n\t * @var String\n\t */\n\tprotected $_mode;\n\n\t/**\n\t * Editor's theme\n\t * (chaos, chrome, clouds, clouds_midnight, cobalt, crimson_editor, dawn, dreamweaver, eclipse,\n\t *  github, mono_industrial, monokai, solarized_dark, solarized_light, textmate, twilight)\n\t * @var String\n\t */\n\tprotected $_theme;\n\n\tpublic function __construct()\n\t{\n\t\tparent::__construct();\n\t}\n\n\tpublic static function withArray($arr = array(), $class_name = null)\n\t{\n\t\tif(is_null($class_name))\n\t\t\t$instance = new self();\n\t\telse\n\t\t\t$instance = new $class_name;\n\t\t$instance->_basic_make($arr);\n\n\t\t$instance->set_editor_mode( isset($arr['mode'])  ? $arr['mode']  : '');\n\t\t$instance->set_editor_theme(isset($arr['theme']) ? $arr['theme'] : 'textmate');\n\n\t\treturn $instance;\n\t}\n\n\tprotected function _setup_data()\n\t{\n\t\t$opt = array(\n\t\t\t'mode'  => $this->get_editor_mode(),\n\t\t\t'theme' => $this->get_editor_theme(),\n\t\t);\n\t\t$this->add_data('opt', VP_Util_Text::make_opt($opt));\n\t\tparent::_setup_data();\n\t}\n\n\tpublic function render($is_compact = false)\n\t{\n\t\t$this->_setup_data();\n\t\t$this->add_data('is_compact', $is_compact);\n\t\treturn VP_View::instance()->load('control/codeeditor', $this->get_data());\n\t}\n\n\tpublic function set_value($_value)\n\t{\n\t\t// normalize linebreak to \\n for all saved data\n\t\tif( is_string($_value) )\n\t\t{\n\t\t\t$_value = str_replace(array(\"\\r\\n\", \"\\r\"), \"\\n\", $_value);\n\t\t}\n\t\t$this->_value = $_value;\n\t\treturn $this;\n\t}\n\n\t/**\n\t * Get editor's language mode\n\t *\n\t * @return String Language mode\n\t */\n\tpublic function get_editor_mode() {\n\t\treturn $this->_mode;\n\t}\n\t\n\t/**\n\t * Set editor's language mode\n\t *\n\t * @param String $_mode Language mode\n\t */\n\tpublic function set_editor_mode($_mode) {\n\t\t$this->_mode = $_mode;\n\t\treturn $this;\n\t}\n\n\n\t/**\n\t * Get editor's theme\n\t *\n\t * @return String Editor's theme\n\t */\n\tpublic function get_editor_theme() {\n\t\treturn $this->_theme;\n\t}\n\t\n\t/**\n\t * Set editor's theme\n\t *\n\t * @param String $_theme Editor's theme\n\t */\n\tpublic function set_editor_theme($_theme) {\n\t\t$this->_theme = $_theme;\n\t\treturn $this;\n\t}\n\n}\n\n/**\n * EOF\n */"
  },
  {
    "path": "classes/control/field/color.php",
    "content": "<?php\n\nclass VP_Control_Field_Color extends VP_Control_Field\n{\n\n\tprivate $_format;\n\n\tpublic function __construct()\n\t{\n\t\tparent::__construct();\n\t}\n\n\tpublic static function withArray($arr = array(), $class_name = null)\n\t{\n\t\tif(is_null($class_name))\n\t\t\t$instance = new self();\n\t\telse\n\t\t\t$instance = new $class_name;\n\t\t$instance->set_format(isset($arr['format']) ? $arr['format'] : 'hex');\n\t\t$instance->_basic_make($arr);\n\t\treturn $instance;\n\t}\n\n\tprotected function _basic_make($arr)\n\t{\n\t\tparent::_basic_make($arr);\n\t}\n\n\tprotected function _setup_data()\n\t{\n\t\t$opt = array(\n\t\t\t'format'   => $this->get_format(),\n\t\t);\n\t\t$this->add_data('opt', VP_Util_Text::make_opt($opt));\n\t\t$this->add_data('opt_raw', $opt);\n\t\tparent::_setup_data();\n\t}\n\n\tpublic function render($is_compact = false)\n\t{\n\t\t$this->_setup_data();\n\t\t$this->add_data('is_compact', $is_compact);\n\t\treturn VP_View::instance()->load('control/color', $this->get_data());\n\t}\n\n\t/**\n\t * Get the format value\n\t *\n\t * @return String \n\t */\n\tpublic function get_format() {\n\t\treturn $this->_format;\n\t}\n\t\n\t/**\n\t * Set the format value\n\t *\n\t * @param String Color format\n\t */\n\tpublic function set_format($_format) {\n\t\t$this->_format = $_format;\n\t\treturn $this;\n\t}\n\n}\n\n/**\n * EOF\n */"
  },
  {
    "path": "classes/control/field/date.php",
    "content": "<?php\n\nclass VP_Control_Field_Date extends VP_Control_Field\n{\n\n\tprivate $_min_date;\n\n\tprivate $_max_date;\n\n\tprivate $_format;\n\n\tpublic function __construct()\n\t{\n\t\tparent::__construct();\n\t}\n\n\tpublic static function withArray($arr = array(), $class_name = null)\n\t{\n\t\tif(is_null($class_name))\n\t\t\t$instance = new self();\n\t\telse\n\t\t\t$instance = new $class_name;\n\t\t$instance->_basic_make($arr);\n\t\t$instance->set_min_date(isset($arr['min_date']) ? $arr['min_date'] : '');\n\t\t$instance->set_max_date(isset($arr['max_date']) ? $arr['max_date'] : '');\n\t\t$instance->set_format(isset($arr['format']) ? $arr['format'] : 'yy-mm-dd');\n\t\treturn $instance;\n\t}\n\n\tprotected function _setup_data()\n\t{\n\t\t$opt = array(\n\t\t\t'minDate'    => $this->get_min_date(),\n\t\t\t'maxDate'    => $this->get_max_date(),\n\t\t\t'dateFormat' => $this->get_format(),\n\t\t\t'value'      => $this->get_value()\n\t\t);\n\t\t$this->add_data('opt', VP_Util_Text::make_opt($opt));\n\t\tparent::_setup_data();\n\t}\n\n\tpublic function render($is_compact = false)\n\t{\n\t\t// Setup Data\n\t\t$this->_setup_data();\n\t\t$this->add_data('is_compact', $is_compact);\n\t\treturn VP_View::instance()->load('control/date', $this->get_data());\n\t}\n\n\t/**\n\t * Get Minimum Date\n\t *\n\t * @return String Minimum Date\n\t */\n\tpublic function get_min_date() {\n\t\treturn $this->_min_date;\n\t}\n\t\n\t/**\n\t * Set Minimum Date\n\t *\n\t * @param String $_min_date Minimum Date\n\t */\n\tpublic function set_min_date($_min_date) {\n\t\t$this->_min_date = $_min_date;\n\t\treturn $this;\n\t}\n\n\t/**\n\t * Get Maximum Date\n\t *\n\t * @return String Maximum Date\n\t */\n\tpublic function get_max_date() {\n\t\treturn $this->_max_date;\n\t}\n\t\n\t/**\n\t * Set Maximum Date\n\t *\n\t * @param String $_max_date Maximum Date\n\t */\n\tpublic function set_max_date($_max_date) {\n\t\t$this->_max_date = $_max_date;\n\t\treturn $this;\n\t}\n\n\n\t/**\n\t * Get Date Format\n\t *\n\t * @return String Date format\n\t */\n\tpublic function get_format() {\n\t\treturn $this->_format;\n\t}\n\t\n\t/**\n\t * Set Date Format\n\t *\n\t * @param String $_format Date format\n\t */\n\tpublic function set_format($_format) {\n\t\t$this->_format = $_format;\n\t\treturn $this;\n\t}\n\n}\n\n/**\n * EOF\n */"
  },
  {
    "path": "classes/control/field/fontawesome.php",
    "content": "<?php\n\nclass VP_Control_Field_Fontawesome extends VP_Control_FieldMulti\n{\n\n\tpublic function __construct()\n\t{\n\t\tparent::__construct();\n\t}\n\n\tpublic static function withArray($arr = array(), $class_name = null)\n\t{\n\t\tif(is_null($class_name))\n\t\t\t$instance = new self();\n\t\telse\n\t\t\t$instance = new $class_name;\n\t\t$arr['items']['data'][] = array(\n\t\t\t'source' => 'function',\n\t\t\t'value' => 'vp_get_fontawesome_icons',\n\t\t);\n\n\t\t$instance->_basic_make($arr);\n\t\t\n\t\treturn $instance;\n\t}\n\n\tpublic function render($is_compact = false)\n\t{\n\t\t$this->_setup_data();\n\t\t$this->add_data('is_compact', $is_compact);\n\t\treturn VP_View::instance()->load('control/fontawesome', $this->get_data());\n\t}\n\n}\n\n/**\n * EOF\n */"
  },
  {
    "path": "classes/control/field/html.php",
    "content": "<?php\n\nclass VP_Control_Field_HTML extends VP_Control_Field\n{\n\n\tprotected $_height;\n\n\tpublic function __construct()\n\t{\n\t\tparent::__construct();\n\t}\n\t\n\tpublic static function withArray($arr = array(), $class_name = null)\n\t{\n\t\tif(is_null($class_name))\n\t\t\t$instance = new self();\n\t\telse\n\t\t\t$instance = new $class_name;\n\t\t$instance->_basic_make($arr);\n\t\t$instance->set_height(isset($arr['height']) ? $arr['height'] : 'auto');\n\t\treturn $instance;\n\t}\n\n\tprotected function _setup_data()\n\t{\n\t\t$this->add_data('height', $this->get_height());\n\t\tparent::_setup_data();\n\t}\n\n\tpublic function render($is_compact = false)\n\t{\n\t\t// Setup Data\n\t\t$this->_setup_data();\n\t\t$this->add_data('is_compact', $is_compact);\n\t\treturn VP_View::instance()->load('control/html', $this->get_data());\n\t}\n\n\tpublic function set_value($_value)\n\t{\n\t\t// normalize linebreak to \\n for all saved data\n\t\tif( is_string($_value) )\n\t\t{\n\t\t\t$_value = str_replace(array(\"\\r\\n\", \"\\r\"), \"\\n\", $_value);\n\t\t}\n\t\t$this->_value = $_value;\n\t\treturn $this;\n\t}\n\n\n\t/**\n\t * Get the Height of the Container\n\t *\n\t * @return String Height of the Container\n\t */\n\tpublic function get_height() {\n\t\treturn $this->_height;\n\t}\n\t\n\t/**\n\t * Set the Height of the Container\n\t *\n\t * @param String $_status Height of the Container\n\t */\n\tpublic function set_height($_height) {\n\t\t$this->_height = $_height;\n\t\treturn $this;\n\t}\n\n}\n\n/**\n * EOF\n */"
  },
  {
    "path": "classes/control/field/item/generic.php",
    "content": "<?php\n\n/**\n * Not really a class, jump simple 'struct' storing multiple choice option item.\n */\nclass VP_Control_Field_Item_Generic\n{\n\n\tpublic $img;\n\n\tpublic $value;\n\n\tpublic $label;\n\n\tpublic function __construct(){}\n\n\tpublic function img($img)\n\t{\n\t\t$this->img = $img;\n\t\treturn $this;\n\t}\n\n\tpublic function value($value)\n\t{\n\t\t$this->value = $value;\n\t\treturn $this;\n\t}\n\n\tpublic function label($label)\n\t{\n\t\t$this->label = $label;\n\t\treturn $this;\n\t}\n\n}\n\n/**\n * EOF\n */"
  },
  {
    "path": "classes/control/field/multiselect.php",
    "content": "<?php\n\nclass VP_Control_Field_MultiSelect extends VP_Control_FieldMulti implements VP_MultiSelectable\n{\n\n\tpublic function __construct()\n\t{\n\t\tparent::__construct();\n\t\t$this->_value = array();\n\t}\n\n\tpublic static function withArray($arr = array(), $class_name = null)\n\t{\n\t\tif(is_null($class_name))\n\t\t\t$instance = new self();\n\t\telse\n\t\t\t$instance = new $class_name;\n\t\t$instance->_basic_make($arr);\n\t\t\n\t\treturn $instance;\n\t}\n\n\tpublic function render($is_compact = false)\n\t{\n\t\t$this->_setup_data();\n\t\t$this->add_data('is_compact', $is_compact);\n\t\treturn VP_View::instance()->load('control/multiselect', $this->get_data());\n\t}\n\n}\n\n/**\n * EOF\n */"
  },
  {
    "path": "classes/control/field/notebox.php",
    "content": "<?php\n\nclass VP_Control_Field_NoteBox extends VP_Control_Field\n{\n\n\t/**\n\t * Status of message, can be one of these:\n\t * - normal\n\t * - info\n\t * - warning\n\t * - error\n\t * - success\n\t * @var String\n\t */\n\tprotected $_status;\n\n\tpublic function __construct()\n\t{\n\t\tparent::__construct();\n\t}\n\n\tpublic static function withArray($arr = array(), $class_name = null)\n\t{\n\t\tif(is_null($class_name))\n\t\t\t$instance = new self();\n\t\telse\n\t\t\t$instance = new $class_name;\n\t\t$instance->_basic_make($arr);\n\t\treturn $instance;\n\t}\n\n\tprotected function _basic_make($arr)\n\t{\n\t\tparent::_basic_make($arr);\n\t\t$this->set_status(isset($arr['status']) ? $arr['status'] : 'normal');\n\t}\n\n\tprotected function _setup_data()\n\t{\n\t\tswitch ($this->get_status())\n\t\t{\n\t\t\tcase 'normal':\n\t\t\t\t$this->add_container_extra_classes('note-normal');\n\t\t\t\tbreak;\n\t\t\tcase 'info':\n\t\t\t\t$this->add_container_extra_classes('note-info');\n\t\t\t\tbreak;\n\t\t\tcase 'warning':\n\t\t\t\t$this->add_container_extra_classes('note-warning');\n\t\t\t\tbreak;\n\t\t\tcase 'error':\n\t\t\t\t$this->add_container_extra_classes('note-error');\n\t\t\t\tbreak;\n\t\t\tcase 'success':\n\t\t\t\t$this->add_container_extra_classes('note-success');\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\t$this->add_container_extra_classes('note-normal');\n\t\t\t\tbreak;\n\t\t}\n\t\t$this->add_data('status', $this->get_status());\n\t\tparent::_setup_data();\n\t}\n\n\tpublic function render($is_compact = false)\n\t{\n\t\t// Setup Data\n\t\t$this->_setup_data();\n\t\t$this->add_data('is_compact', $is_compact);\n\t\treturn VP_View::instance()->load('control/notebox', $this->get_data());\n\t}\n\n\t/**\n\t * Get the status of message\n\t *\n\t * @return String Status of message\n\t */\n\tpublic function get_status() {\n\t\treturn $this->_status;\n\t}\n\t\n\t/**\n\t * Set the status of message\n\t *\n\t * @param String $_status Status of message\n\t */\n\tpublic function set_status($_status) {\n\t\t$this->_status = $_status;\n\t\treturn $this;\n\t}\n\n}\n\n/**\n * EOF\n */"
  },
  {
    "path": "classes/control/field/radiobutton.php",
    "content": "<?php\n\nclass VP_Control_Field_RadioButton extends VP_Control_FieldMulti\n{\n\n\tpublic function __construct()\n\t{\n\t\tparent::__construct();\n\t\t$this->add_container_extra_classes('vp-checked-field');\n\t}\n\n\tpublic static function withArray($arr = array(), $class_name = null)\n\t{\n\t\tif(is_null($class_name))\n\t\t\t$instance = new self();\n\t\telse\n\t\t\t$instance = new $class_name;\n\t\t$instance->_basic_make($arr);\n\t\t\n\t\treturn $instance;\n\t}\n\n\tpublic function render($is_compact = false)\n\t{\n\t\t$this->_setup_data();\n\t\t$this->add_data('is_compact', $is_compact);\n\t\treturn VP_View::instance()->load('control/radiobutton', $this->get_data());\n\t}\n\n}\n\n/**\n * EOF\n */"
  },
  {
    "path": "classes/control/field/radioimage.php",
    "content": "<?php\n\nclass VP_Control_Field_RadioImage extends VP_Control_FieldMultiImage\n{\n\n\tpublic function __construct()\n\t{\n\t\tparent::__construct();\n\t\t$this->add_container_extra_classes('vp-checked-field');\n\t}\n\n\tpublic static function withArray($arr = array(), $class_name = null)\n\t{\n\t\tif(is_null($class_name))\n\t\t\t$instance = new self();\n\t\telse\n\t\t\t$instance = new $class_name;\n\t\t$instance->_basic_make($arr);\n\n\t\treturn $instance;\n\t}\n\n\tpublic function render($is_compact = false)\n\t{\n\t\t$this->_setup_data();\n\t\t$this->add_data('is_compact', $is_compact);\n\t\treturn VP_View::instance()->load('control/radioimage', $this->get_data());\n\t}\n\n}\n\n/**\n * EOF\n */"
  },
  {
    "path": "classes/control/field/select.php",
    "content": "<?php\n\nclass VP_Control_Field_Select extends VP_Control_FieldMulti\n{\n\n\tpublic function __construct()\n\t{\n\t\tparent::__construct();\n\t}\n\n\tpublic static function withArray($arr = array(), $class_name = null)\n\t{\n\t\tif(is_null($class_name))\n\t\t\t$instance = new self();\n\t\telse\n\t\t\t$instance = new $class_name;\n\t\t$instance->_basic_make($arr);\n\n\t\treturn $instance;\n\t}\n\n\tpublic function render($is_compact = false)\n\t{\n\t\t$this->_setup_data();\n\t\t$this->add_data('is_compact', $is_compact);\n\t\treturn VP_View::instance()->load('control/select', $this->get_data());\n\t}\n\n}\n\n/**\n * EOF\n */"
  },
  {
    "path": "classes/control/field/slider.php",
    "content": "<?php\n\nclass VP_Control_Field_Slider extends VP_Control_Field\n{\n\n\tprivate $_min;\n\n\tprivate $_max;\n\n\tprivate $_step;\n\n\tpublic function __construct()\n\t{\n\t\tparent::__construct();\n\t}\n\n\tpublic static function withArray($arr = array(), $class_name = null)\n\t{\n\t\tif(is_null($class_name))\n\t\t\t$instance = new self();\n\t\telse\n\t\t\t$instance = new $class_name;\n\t\t$instance->set_min(isset($arr['min']) ? $arr['min'] : 0);\n\t\t$instance->set_max(isset($arr['max']) ? $arr['max'] : 100);\n\t\t$instance->set_step(isset($arr['step']) ? $arr['step'] : 1);\n\t\t$instance->_basic_make($arr);\n\t\treturn $instance;\n\t}\n\n\tprotected function _setup_data()\n\t{\n\t\t$opt = array(\n\t\t\t'min'   => $this->get_min(),\n\t\t\t'max'   => $this->get_max(),\n\t\t\t'step'  => $this->get_step(),\n\t\t\t'value' => $this->get_value(),\n\t\t);\n\t\t$this->add_data('opt', VP_Util_Text::make_opt($opt));\n\t\t$this->add_data('opt_raw', $opt);\n\t\tparent::_setup_data();\n\t}\n\n\tpublic function render($is_compact = false)\n\t{\n\t\t// Setup Data\n\t\t$this->_setup_data();\n\t\t$this->add_data('is_compact', $is_compact);\n\t\treturn VP_View::instance()->load('control/slider', $this->get_data());\n\t}\n\n\tprotected function _basic_make($arr)\n\t{\n\t\tparent::_basic_make($arr);\n\t\t$default = $this->get_default();\n\t\t$default = $this->validate_value($default);\n\t\t$this->set_default($default);\n\t}\n\n\tprotected function validate_value($_value)\n\t{\n\t\t$out_range = (floatval($_value) < $this->get_min()) || (floatval($_value) > $this->get_max());\n\n\t\tif (is_null($_value) || $out_range)\n\t\t\treturn $this->get_min();\n\t\telse\n\t\t\treturn $_value;\n\t}\n\n\tpublic function set_value($_value)\n\t{\n\t\t$_value = $this->validate_value($_value);\n\t\tparent::set_value($_value);\n\t}\n\n\t/**\n\t * Get the min value\n\t *\n\t * @return Integer Minimum value of slider\n\t */\n\tpublic function get_min() {\n\t\treturn $this->_min;\n\t}\n\t\n\t/**\n\t * Set the min value\n\t *\n\t * @param Integer $_min Minimum value of slider\n\t */\n\tpublic function set_min($_min) {\n\t\t$this->_min = $_min;\n\t\treturn $this;\n\t}\n\n\t/**\n\t * Get the max value\n\t *\n\t * @return Integer Maximum value of slider\n\t */\n\tpublic function get_max() {\n\t\treturn $this->_max;\n\t}\n\t\n\t/**\n\t * Set the max value\n\t *\n\t * @param Integer $_max Maximum value of slider\n\t */\n\tpublic function set_max($_max) {\n\t\t$this->_max = $_max;\n\t\treturn $this;\n\t}\n\n\t/**\n\t * Get the step value\n\t *\n\t * @return Integer Step value of slider\n\t */\n\tpublic function get_step() {\n\t\treturn $this->_step;\n\t}\n\t\n\t/**\n\t * Set the step value\n\t *\n\t * @param Integer $_step Step value of slider\n\t */\n\tpublic function set_step($_step) {\n\t\t$this->_step = $_step;\n\t\treturn $this;\n\t}\n\n}\n\n/**\n * EOF\n */"
  },
  {
    "path": "classes/control/field/sorter.php",
    "content": "<?php\n\nclass VP_Control_Field_Sorter extends VP_Control_FieldMulti implements VP_MultiSelectable\n{\n\n\tprivate $_max_selection;\n\n\tpublic function __construct()\n\t{\n\t\tparent::__construct();\n\t\t$this->_value = array();\n\t}\n\n\tpublic static function withArray($arr = array(), $class_name = null)\n\t{\n\t\tif(is_null($class_name))\n\t\t\t$instance = new self();\n\t\telse\n\t\t\t$instance = new $class_name;\n\t\t$instance->set_max_selection(isset($arr['max_selection']) ? $arr['max_selection'] : false);\n\t\t$instance->_basic_make($arr);\n\t\t\n\t\treturn $instance;\n\t}\n\n\tprotected function _setup_data()\n\t{\n\t\t$opt = array(\n\t\t\t'maximumSelectionSize' => $this->get_max_selection(),\n\t\t);\n\t\t$this->add_data('opt', VP_Util_Text::make_opt($opt));\n\t\t$this->add_data('opt_raw', $opt);\n\t\tparent::_setup_data();\n\t}\n\n\tpublic function render($is_compact = false)\n\t{\n\t\t$this->_setup_data();\n\t\t$this->add_data('is_compact', $is_compact);\n\t\treturn VP_View::instance()->load('control/sorter', $this->get_data());\n\t}\n\n\tpublic function get_max_selection() {\n\t\treturn $this->_max_selection;\n\t}\n\t\n\tpublic function set_max_selection($_max_selection) {\n\t\t$this->_max_selection = $_max_selection;\n\t\treturn $this;\n\t}\n\n}\n\n/**\n * EOF\n */"
  },
  {
    "path": "classes/control/field/textarea.php",
    "content": "<?php\n\nclass VP_Control_Field_TextArea extends VP_Control_Field\n{\n\n\tpublic function __construct()\n\t{\n\t\tparent::__construct();\n\t}\n\n\tpublic static function withArray($arr = array(), $class_name = null)\n\t{\n\t\tif(is_null($class_name))\n\t\t\t$instance = new self();\n\t\telse\n\t\t\t$instance = new $class_name;\n\t\t$instance->_basic_make($arr);\n\t\treturn $instance;\n\t}\n\n\tpublic function render($is_compact = false)\n\t{\n\t\t$this->_setup_data();\n\t\t$this->add_data('is_compact', $is_compact);\n\t\treturn VP_View::instance()->load('control/textarea', $this->get_data());\n\t}\n\n\tpublic function set_value($_value)\n\t{\n\t\t$this->_value = $_value;\n\t\treturn $this;\n\t}\n\n}\n\n/**\n * EOF\n */"
  },
  {
    "path": "classes/control/field/textbox.php",
    "content": "<?php\n\nclass VP_Control_Field_TextBox extends VP_Control_Field\n{\n\n\tpublic function __construct()\n\t{\n\t\tparent::__construct();\n\t}\n\t\n\tpublic static function withArray($arr = array(), $class_name = null)\n\t{\n\t\tif(is_null($class_name))\n\t\t\t$instance = new self();\n\t\telse\n\t\t\t$instance = new $class_name;\n\t\t$instance->_basic_make($arr);\n\t\treturn $instance;\n\t}\n\n\tpublic function render($is_compact = false)\n\t{\n\t\t// Setup Data\n\t\t$this->_setup_data();\n\t\t$this->add_data('is_compact', $is_compact);\n\t\treturn VP_View::instance()->load('control/textbox', $this->get_data());\n\t}\n\n}\n\n/**\n * EOF\n */"
  },
  {
    "path": "classes/control/field/toggle.php",
    "content": "<?php\n\nclass VP_Control_Field_Toggle extends VP_Control_Field\n{\n\n\tpublic function __construct()\n\t{\n\t\tparent::__construct();\n\t\t$this->add_container_extra_classes('vp-checked-field');\n\t}\n\n\tpublic static function withArray($arr = array(), $class_name = null)\n\t{\n\t\tif(is_null($class_name))\n\t\t\t$instance = new self();\n\t\telse\n\t\t\t$instance = new $class_name;\n\t\t$instance->_basic_make($arr);\n\t\treturn $instance;\n\t}\n\n\tpublic function render($is_compact = false)\n\t{\n\t\t$this->_setup_data();\n\t\t$this->add_data('is_compact', $is_compact);\n\t\treturn VP_View::instance()->load('control/toggle', $this->get_data());\n\t}\n\n}\n\n/**\n * EOF\n */"
  },
  {
    "path": "classes/control/field/upload.php",
    "content": "<?php\n\nclass VP_Control_Field_Upload extends VP_Control_Field\n{\n\n\tpublic function __construct()\n\t{\n\t\tparent::__construct();\n\t}\n\n\tpublic static function withArray($arr = array(), $class_name = null)\n\t{\n\t\tif(is_null($class_name))\n\t\t\t$instance = new self();\n\t\telse\n\t\t\t$instance = new $class_name;\n\t\t$instance->_basic_make($arr);\n\t\treturn $instance;\n\t}\n\n\tpublic function _setup_data()\n\t{\n\t\t$preview = VP_Util_Res::get_preview_from_url($this->get_value());\n\t\t$this->add_data('preview', $preview);\n\t\tparent::_setup_data();\n\t}\n\n\tpublic function render($is_compact = false)\n\t{\n\t\t$this->_setup_data();\n\t\t$this->add_data('is_compact', $is_compact);\n\t\treturn VP_View::instance()->load('control/upload', $this->get_data());\n\t}\n\n}\n\n/**\n * EOF\n */"
  },
  {
    "path": "classes/control/field/wpeditor.php",
    "content": "<?php\n\nclass VP_Control_Field_WPEditor extends VP_Control_Field\n{\n\n\tprivate $_use_external_plugins       = true;\n\n\tprivate $_disabled_externals_plugins = array();\n\n\tprivate $_disabled_internals_plugins = array();\n\n\tpublic function __construct()\n\t{\n\t\tparent::__construct();\n\t}\n\n\tpublic static function withArray($arr = array(), $class_name = null)\n\t{\n\t\tif(is_null($class_name))\n\t\t\t$instance = new self();\n\t\telse\n\t\t\t$instance = new $class_name;\n\n\t\t$use_external_plugins       = isset($arr['use_external_plugins']) ? $arr['use_external_plugins'] : 1;\n\t\t$disabled_externals_plugins = array();\n\t\t$disabled_internals_plugins = array();\n\n\t\tif(isset($arr['disabled_externals_plugins']))\n\t\t{\n\t\t\t$disabled_externals_plugins = explode(',', $arr['disabled_externals_plugins']);\n\t\t}\n\t\tif(isset($arr['disabled_internals_plugins']))\n\t\t{\n\t\t\t$disabled_internals_plugins = explode(',', $arr['disabled_internals_plugins']);\n\t\t}\n\n\t\t$instance->use_external_plugins($use_external_plugins);\n\t\t$instance->set_disabled_externals_plugins($disabled_externals_plugins);\n\t\t$instance->set_disabled_internals_plugins($disabled_internals_plugins);\n\t\t$instance->_basic_make($arr);\n\n\t\treturn $instance;\n\t}\n\n\tprotected function _setup_data()\n\t{\n\t\t$opt = array(\n\t\t\t'use_external_plugins'       => $this->use_external_plugins(),\n\t\t\t'disabled_externals_plugins' => implode(',', $this->get_disabled_externals_plugins()),\n\t\t\t'disabled_internals_plugins' => implode(',', $this->get_disabled_internals_plugins()),\n\t\t);\n\t\t$this->add_data('opt', VP_Util_Text::make_opt($opt));\n\t\t$this->add_data('opt_raw', $opt);\n\t\tparent::_setup_data();\n\t}\n\n\tpublic function render($is_compact = false)\n\t{\n\t\t$this->_setup_data();\n\t\t$this->add_data('is_compact', $is_compact);\n\t\treturn VP_View::instance()->load('control/wpeditor', $this->get_data());\n\t}\n\n\tpublic function set_value($_value)\n\t{\n\t\t$this->_value = $_value;\n\t\treturn $this;\n\t}\n\n\tpublic function use_external_plugins($use = null)\n\t{\n\t\tif(!is_null($use))\n\t\t{\n\t\t\t$this->_use_external_plugins = $use;\n\t\t}\n\t\treturn $this->_use_external_plugins;\n\t}\n\n\t/**\n\t * Get disable external plugins\n\t *\n\t * @return Array\n\t */\n\tpublic function get_disabled_externals_plugins()\n\t{\n\t\treturn $this->_disabled_externals_plugins;\n\t}\n\t\n\t/**\n\t * Set disabled external plugins\n\t *\n\t * @param Array $_disabled_externals_plugins\n\t */\n\tpublic function set_disabled_externals_plugins($_disabled_externals_plugins)\n\t{\n\t\t$this->_disabled_externals_plugins = $_disabled_externals_plugins;\n\t\treturn $this;\n\t}\n\n\n\t/**\n\t * Get disabled internal plugins\n\t *\n\t * @return Array\n\t */\n\tpublic function get_disabled_internals_plugins() {\n\t\treturn $this->_disabled_internals_plugins;\n\t}\n\t\n\t/**\n\t * Set disabled internal plugins\n\t *\n\t * @param Array $_disabled_internals_plugins \n\t */\n\tpublic function set_disabled_internals_plugins($_disabled_internals_plugins) {\n\t\t$this->_disabled_internals_plugins = $_disabled_internals_plugins;\n\t\treturn $this;\n\t}\n\n}\n\n/**\n * EOF\n */"
  },
  {
    "path": "classes/control/field.php",
    "content": "<?php\n\n/**\n * The smallest unit of an option, the field it self.\n */\nabstract class VP_Control_Field implements iFactory\n{\n\n\t/**\n\t * Unique name of the field\n\t * @var String\n\t */\n\tprotected $_name;\n\n\t/**\n\t * Label for the field\n\t * @var String\n\t */\n\tprotected $_label;\n\n\t/**\n\t * Description on what the field about\n\t * @var String\n\t */\n\tprotected $_description;\n\n\t/**\n\t * Validation pattern string\n\t * @var String\n\t */\n\tprotected $_validation;\n\n\t/**\n\t * dependency pattern string\n\t * @var String\n\t */\n\tprotected $_dependency;\n\n\t/**\n\t * binding patter string\n\t * @var String\n\t */\n\tprotected $_binding;\n\n\t/**\n\t * Default value for the field\n\t * @var String|Array\n\t */\n\tprotected $_default;\n\n\t/**\n\t * Maximum height of the field\n\t * @var Integer\n\t */\n\tprotected $_field_max_height;\n\n\t/**\n\t * Value for the field\n\t * @var String|Array\n\t */\n\tprotected $_value;\n\n\t/**\n\t * Data to be rendered\n\t * @var Array\n\t */\n\tprotected $_data;\n\n\t/**\n\t * Extra Classes for the container\n\t * @var Array\n\t */\n\tprotected $_container_extra_classes;\n\n\t/**\n\t * Whether to hide this control in first rendering\n\t */\n\tprotected $_is_hidden;\n\n\t/**\n\t * Class Constructor\n\t */\n\tpublic function __construct()\n\t{\n\t\t$this->_data = array();\n\t\t$this->_container_extra_classes = array();\n\t}\n\n\tabstract public function render();\n\n\t/**\n\t * Setup and return needed attribute as array\n\t * @return Array Data array\n\t */\n\tprotected function _setup_data()\n\t{\n\t\t// Set Basic Data\n\t\t$this->add_data('name', $this->get_name());\n\t\t$this->add_data('default', $this->get_default());\n\t\t$this->add_data('value', $this->get_value());\n\n\t\t// Determine Type\n\t\t$type = 'vp-' . strtolower(substr(get_class($this), strrpos(get_class($this), '_') + 1));\n\n\t\t// Is hidden\n\t\tif($this->is_hidden())\n\t\t{\n\t\t\t$this->add_container_extra_classes('vp-hide');\n\t\t}\n\n\t\t// Set Control Head Data\n\t\t$this->add_data('head_info', array(\n\t\t\t'name'                    => $this->get_name(),\n\t\t\t'type'                    => $type,\n\t\t\t'container_extra_classes' => implode(' ', $this->get_container_extra_classes()),\n\t\t\t'is_hidden'               => $this->is_hidden(),\n\t\t\t'validation'              => $this->get_validation(),\n\t\t\t'dependency'              => $this->get_dependency(),\n\t\t\t'binding'                 => $this->get_binding(),\n\t\t\t'label'                   => $this->get_label(),\n\t\t\t'description'             => VP_Util_Text::parse_md($this->get_description())\n\t\t));\n\t}\n\n\t/**\n\t * Basic self setup of the object\n\t * @param  Array $arr Array representation of the field\n\t * @return VP_Control_Field Field object\n\t */\n\tprotected function _basic_make($arr)\n\t{\n\t\t$this->set_name(isset($arr['name']) ? $arr['name'] : '')\n\t\t\t ->set_label(isset($arr['label']) ? $arr['label'] : '')\n\t\t\t ->set_default(isset($arr['default']) ? $arr['default'] : null)\n\t\t\t ->set_description(isset($arr['description']) ? $arr['description'] : '')\n\t\t\t ->set_validation(isset($arr['validation']) ? $arr['validation'] : '');\n\n\t\tif(isset($arr['dependency']))\n\t\t{\n\t\t\t$func  = $arr['dependency']['function'];\n\t\t\t$field = $arr['dependency']['field'];\n\t\t\t$this->set_dependency($func . '|' . $field);\n\t\t}\n\n\t\tif(isset($arr['binding']))\n\t\t{\n\t\t\t$function = $arr['binding']['function'];\n\t\t\t$field    = $arr['binding']['field'];\n\t\t\t$this->set_binding($function . '|' . $field);\n\t\t}\n\n\t\treturn $this;\n\t}\n\n\t/**\n\t * Add value to render data array\n\t * @param Mixed $item Value to be added to render data arary\n\t */\n\tpublic function add_data($key, $value)\n\t{\n\t\t$this->_data[$key] = $value;\n\t}\n\n\t/**\n\t * Get render data\n\t *\n\t * @return Array Render data array\n\t */\n\tpublic function get_data() {\n\t\treturn $this->_data;\n\t}\n\t\n\t/**\n\t * Set render data\n\t *\n\t * @param Array $_data Render data array\n\t */\n\tpublic function set_data($_data) {\n\t\t$this->_data = $_data;\n\t\treturn $this;\n\t}\n\n\t/**\n\t * Set single render data\n\t *\n\t * @param Array $_data Render data array\n\t */\n\tpublic function set_single_data($key, $_data) {\n\t\t$this->_data[$key] = $_data;\n\t\treturn $this;\n\t}\n\n\t/**\n\t * Get single render data\n\t *\n\t * @param Array $_data Render data array\n\t */\n\tpublic function get_single_data($key) {\n\t   \treturn $this->_data[$key];\n\t}\n\n\t/**\n\t * Add value to render data array\n\t * @param Mixed $item Value to be added to render data arary\n\t */\n\tpublic function add_single_data($p_key, $key, $value)\n\t{\n\t\t$this->_data[$p_key][$key] = $value;\n\t}\n\n\t/**\n\t * Getter for $_name\n\t *\n\t * @return String unique name of the field\n\t */\n\tpublic function get_name() {\n\t\treturn $this->_name;\n\t}\n\t\n\t/**\n\t * Setter for $_name\n\t *\n\t * @param String $_name unique name of the field\n\t */\n\tpublic function set_name($_name) {\n\t\t$this->_name = $_name;\n\t\treturn $this;\n\t}\n\n\t/**\n\t * Getter for $_label\n\t *\n\t * @return String label of the field\n\t */\n\tpublic function get_label() {\n\t\treturn $this->_label;\n\t}\n\t\n\t/**\n\t * Setter for $_label\n\t *\n\t * @param String $_label label of the field\n\t */\n\tpublic function set_label($_label) {\n\t\t$this->_label = $_label;\n\t\treturn $this;\n\t}\n\n\t/**\n\t * Getter for $_description\n\t *\n\t * @return String description of the field\n\t */\n\tpublic function get_description() {\n\t\treturn $this->_description;\n\t}\n\t\n\t/**\n\t * Setter for $_description\n\t *\n\t * @param String $_description description of the field\n\t */\n\tpublic function set_description($_description) {\n\t\t$this->_description = $_description;\n\t\treturn $this;\n\t}\n\n\t/**\n\t * Getter for $_validation\n\t *\n\t * @return String validation pattern in string\n\t */\n\tpublic function get_validation() {\n\t\treturn $this->_validation;\n\t}\n\t\n\t/**\n\t * Setter for $_validation\n\t *\n\t * @param String $_validation validation pattern in string\n\t */\n\tpublic function set_validation($_validation) {\n\t\t$this->_validation = $_validation;\n\t\treturn $this;\n\t}\n\n\t/**\n\t * Getter for $_dependency\n\t *\n\t * @return String dependency pattern in string\n\t */\n\tpublic function get_dependency() {\n\t\treturn $this->_dependency;\n\t}\n\t\n\t/**\n\t * Setter for $_dependency\n\t *\n\t * @param String $_dependency dependency pattern in string\n\t */\n\tpublic function set_dependency($_dependency) {\n\t\t$this->_dependency = $_dependency;\n\t\treturn $this;\n\t}\n\n\t/**\n\t * Get $_binding\n\t *\n\t * @return String bind rule string\n\t */\n\tpublic function get_binding() {\n\t\treturn $this->_binding;\n\t}\n\t\n\t/**\n\t * Set $_binding\n\t *\n\t * @param String $_binding bind rule string\n\t */\n\tpublic function set_binding($_binding) {\n\t\t$this->_binding = $_binding;\n\t\treturn $this;\n\t}\n\n\t/**\n\t * Getter for $_default\n\t *\n\t * @return mixed default value of the field\n\t */\n\tpublic function get_default() {\n\t\treturn $this->_default;\n\t}\n\t\n\t/**\n\t * Setter for $_default\n\t *\n\t * @param mixed $_default default value of the field\n\t */\n\tpublic function set_default($_default) {\n\t\t$this->_default = $_default;\n\t\treturn $this;\n\t}\n\n\t/**\n\t * Get field value\n\t *\n\t * @return String|Array Value of field\n\t */\n\tpublic function get_value() {\n\t\treturn $this->_value;\n\t}\n\t\n\t/**\n\t * Set field value\n\t *\n\t * @param String|Array $_value Value of field\n\t */\n\tpublic function set_value($_value) {\n\t\t$this->_value = $_value;\n\t\treturn $this;\n\t}\n\n\t/**\n\t * Getter of $_field_max_height\n\t *\n\t * @return Integer Max height of the field\n\t */\n\tpublic function get_field_max_height() {\n\t\treturn $this->_field_max_height;\n\t}\n\t\n\t/**\n\t * Setter of $_field_max_height\n\t *\n\t * @param Integer $_field_max_height Max height of the field\n\t */\n\tpublic function set_field_max_height($_field_max_height) {\n\t\t$this->_field_max_height = $_field_max_height;\n\t\treturn $this;\n\t}\n\n\t/**\n\t * Getter of $_container_extra_classes\n\t *\n\t * @return Array of Extra Classes for the container\n\t */\n\tpublic function get_container_extra_classes() {\n\t\treturn $this->_container_extra_classes;\n\t}\n\t\n\t/**\n\t * Setter of $_container_extra_classes\n\t *\n\t * @param Array $_container_extra_classes Extra Classes for the container\n\t */\n\tpublic function set_container_extra_classes($_container_extra_classes) {\n\t\t$this->_container_extra_classes = $_container_extra_classes;\n\t\treturn $this;\n\t}\n\n\tpublic function add_container_extra_classes($class)\n\t{\n\t\tif(is_array($class))\n\t\t{\n\t\t\t$this->_container_extra_classes = array_merge($this->_container_extra_classes, $class);\n\t\t}\n\t\telse if(!in_array($class, $this->_container_extra_classes))\n\t\t{\n\t\t\t$this->_container_extra_classes[] = $class;\n\t\t}\n\t\treturn $this->_container_extra_classes;\n\t}\n\n\n\t/**\n\t * Get is_hidden status, will set the status if a boolean passed\n\t *\n\t * @return bool is_hidden status\n\t */\n\tpublic function is_hidden($_is_hidden = null) {\n\t\tif(!is_null($_is_hidden))\n\t\t\t$this->_is_hidden = (bool) $_is_hidden;\n\t\treturn $this->_is_hidden;\n\t}\n\n}\n\n/**\n * Interface to force implementation of the 'factory' pattern method for each field class\n * to enable easier instantiation of each field class.\n */\ninterface iFactory\n{\n\tstatic function withArray($arr = array(), $class_name = null);\n}\n\n/**\n * EOF\n */"
  },
  {
    "path": "classes/control/fieldmulti.php",
    "content": "<?php\n\n/**\n * The smallest unit of an item, the field it self.\n */\nabstract class VP_Control_FieldMulti extends VP_Control_Field\n{\n\n\tprotected $_items = array();\n\n\tprotected $_items_binding;\n\n\tprotected $_raw_default;\n\n\t/**\n\t * Basic self setup of the object\n\t * @param  SimpleXMLElement $simpleXML SimpleXML object representation of the field\n\t * @return VP_Control_FieldMulti Field object\n\t */\n\tprotected function _basic_make($arr)\n\t{\n\t\tparent::_basic_make($arr);\n\n\t\tif (!empty($arr['items']))\n\t\t{\n\t\t\tif(isset($arr['items']['data']) and is_array($arr['items']['data']))\n\t\t\t{\n\t\t\t\tforeach ($arr['items']['data'] as $data)\n\t\t\t\t{\n\t\t\t\t\tif($data['source'] == 'function')\n\t\t\t\t\t{\n\t\t\t\t\t\t$function     = $data['value'];\n\t\t\t\t\t\t$params       = explode(',', !empty($data['params']) ? $data['params'] : '');\n\n\t\t\t\t\t\t$items        = call_user_func_array($function, $params);\n\t\t\t\t\t\t$arr['items'] = array_merge($arr['items'], $items);\n\t\t\t\t\t}\n\t\t\t\t\telse if($data['source'] == 'binding')\n\t\t\t\t\t{\n\t\t\t\t\t\t$function = $data['value'];\n\t\t\t\t\t\t$field    = $data['field'];\n\t\t\t\t\t\t$this->set_items_binding($function . '|' . $field);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tunset($arr['items']['data']);\n\t\t\t}\n\t\t\tif(is_array($arr['items'])) foreach ($arr['items'] as $item)\n\t\t\t{\n\t\t\t\t$the_item = new VP_Control_Field_Item_Generic();\n\t\t\t\t$the_item->value($item['value'])\n\t\t\t\t\t \t ->label($item['label']);\n\t\t\t\tif( isset( $item['img'] ) )\n\t\t\t\t\t$the_item->img($item['img']);\n\t\t\t\t$this->add_item($the_item);\n\t\t\t}\n\t\t}\n\t\tif (isset($arr['default']))\n\t\t{\n\t\t\t$arr['default'] = (array) $arr['default'];\n\t\t\tif(!VP_Util_Reflection::is_multiselectable($this))\n\t\t\t{\n\t\t\t\t$arr['default'] = (array) reset($arr['default']);\n\t\t\t}\n\t\t\t$this->_raw_default = $arr['default'];\n\t\t\t$this->_process_default();\n\t\t}\n\t\treturn $this;\n\t}\n\n\tpublic function _process_default()\n\t{\n\t\t$defaults = array();\n\t\t$items    = $this->get_items();\n\n\t\tforeach ($this->_raw_default as $def)\n\t\t{\n\t\t\tswitch ($def)\n\t\t\t{\n\t\t\t\tcase '{{all}}':\n\t\t\t\t\tif(VP_Util_Reflection::is_multiselectable($this))\n\t\t\t\t\t\t$defaults = array_merge($defaults, array_keys($items));\n\t\t\t\t\tbreak;\n\t\t\t\tcase '{{first}}':\n\t\t\t\t\t$first = VP_Util_Array::first($items);\n\t\t\t\t\tif(!is_null($first))\n\t\t\t\t\t\t$defaults[] = $first->value;\n\t\t\t\t\tbreak;\n\t\t\t\tcase '{{last}}':\n\t\t\t\t\t$last = end($items);\n\t\t\t\t\tif(!is_null($last))\n\t\t\t\t\t\t$defaults[] = $last->value;\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\t$defaults[] = $def;\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\t$defaults = array_unique($defaults);\n\t\tif(!empty($defaults))\n\t\t\t$this->set_default($defaults);\n\t}\n\n\tprotected function _setup_data()\n\t{\n\t\tparent::_setup_data();\n\t\t$this->add_single_data('head_info', 'items_binding', $this->get_items_binding());\n\t\t$this->add_data('items', $this->get_items());\n\t}\n\n\t/**\n\t * Setter for $_default\n\t *\n\t * @param mixed $_default default value of the field\n\t */\n\tpublic function set_default($_default) {\n\t\tif(is_array($_default) and !VP_Util_Reflection::is_multiselectable($this))\n\t\t\t$_default = VP_Util_Array::first($_default);\n\t\t$this->_default = $_default;\n\t\treturn $this;\n\t}\n\n\tpublic function add_items($items)\n\t{\n\t\t$this->_items = array_merge($this->_items, $items);\n\t}\n\n\t/**\n\t * Add single item\n\t * @param VP_Control_Field_Item_ $opt Single item item\n\t */\n\tpublic function add_item($opt)\n\t{\n\t\t$this->_items[$opt->value] = $opt;\n\t}\n\n\t/**\n\t * Getter for $_items\n\t *\n\t * @return Array array of items {value, label}\n\t */\n\tpublic function get_items() {\n\t\treturn $this->_items;\n\t}\n\t\n\t/**\n\t * Setter for $_items\n\t *\n\t * @param Array $_items array of items\n\t */\n\tpublic function set_items($_items) {\n\t\t$this->_items = $_items;\n\t\treturn $this;\n\t}\n\n\tpublic function add_items_from_array($_items) {\n\t\tif(is_array($_items))\n\t\t{\n\t\t\tforeach ($_items as $item)\n\t\t\t{\n\t\t\t\t$the_item = new VP_Control_Field_Item_Generic();\n\t\t\t\t$the_item->value($item['value'])\n\t\t\t\t\t \t ->label($item['label']);\n\t\t\t\t$this->add_item($the_item);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Get $_items_binding\n\t *\n\t * @return String bind rule string\n\t */\n\tpublic function get_items_binding() {\n\t\treturn $this->_items_binding;\n\t}\n\t\n\t/**\n\t * Set $_items_binding\n\t *\n\t * @param String $_items_binding bind rule string\n\t */\n\tpublic function set_items_binding($_items_binding) {\n\t\t$this->_items_binding = $_items_binding;\n\t\treturn $this;\n\t}\n\n}\n\n/**\n * EOF\n */"
  },
  {
    "path": "classes/control/fieldmultiimage.php",
    "content": "<?php\n\n/**\n * The smallest unit of an item, the field it self.\n */\nabstract class VP_Control_FieldMultiImage extends VP_Control_FieldMulti\n{\n\n\tprotected $_item_max_height;\n\n\tprotected $_item_max_width;\n\n\t/**\n\t * Basic self setup of the object\n\t * @param  SimpleXMLElement $simpleXML SimpleXML object representation of the field\n\t * @return VP_Control_FieldMultiImage Field object\n\t */\n\tprotected function _basic_make($arr)\n\t{\n\t\tparent::_basic_make($arr);\n\t\t\n\t\t$this->set_item_max_height(isset($arr['item_max_height']) ? $arr['item_max_height'] : '')\n\t\t     ->set_item_max_width(isset($arr['item_max_width']) ? $arr['item_max_width'] : '');\n\n\t\treturn $this;\n\t}\n\n\tprotected function _setup_data()\n\t{\n\t\tparent::_setup_data();\n\t\t$this->add_data('item_max_height', $this->get_item_max_height());\n\t\t$this->add_data('item_max_width', $this->get_item_max_width());\n\t}\n\n\tpublic function add_items_from_array($_items){\n\t\tforeach ($_items as $item)\n\t\t{\n\t\t\t$the_item = new VP_Control_Field_Item_Generic();\n\t\t\t$the_item->value($item['value'])\n\t\t\t\t \t ->label($item['label'])\n\t\t\t\t \t ->img($item['img']);\n\t\t\t$this->add_item($the_item);\n\t\t}\n\t}\n\n\t/**\n\t * Get item max height\n\t *\n\t * @return Integer Item Max Height\n\t */\n\tpublic function get_item_max_height() {\n\t\treturn $this->_item_max_height;\n\t}\n\t\n\t/**\n\t * Set item max height\n\t *\n\t * @param Integer $_item_max_height Item Max Height\n\t */\n\tpublic function set_item_max_height($_item_max_height) {\n\t\t$this->_item_max_height = $_item_max_height;\n\t\treturn $this;\n\t}\n\n\t/**\n\t * Get item max width\n\t *\n\t * @return Integer Item Max Width\n\t */\n\tpublic function get_item_max_width() {\n\t\treturn $this->_item_max_width;\n\t}\n\t\n\t/**\n\t * Set item max width\n\t *\n\t * @param Integer $_item_max_width Item Max Width\n\t */\n\tpublic function set_item_max_width($_item_max_width) {\n\t\t$this->_item_max_width = $_item_max_width;\n\t\treturn $this;\n\t}\n\n}\n\n/**\n * EOF\n */"
  },
  {
    "path": "classes/filesystem.php",
    "content": "<?php\n\nclass VP_FileSystem\n{\n\n\tprivate static $_instance = null;\n\n\tprivate $_lookup_dirs = array();\n\n\tpublic static function instance()\n\t{\n\t\tif(is_null(self::$_instance))\n\t\t{\n\t\t\tself::$_instance = new self();\n\t\t}\n\t\treturn self::$_instance;\n\t}\n\n\tpublic function get_first_non_empty_dir($key, $name = null)\n\t{\n\t\tif(!isset($this->_lookup_dirs[$key]))\n\t\t\treturn false;\n\n\t\tforeach ($this->_lookup_dirs[$key] as $dir)\n\t\t{\n\t\t\tif (is_link($dir))\n\t\t\t{\n\t\t\t\t$dir = readlink($dir);\n\t\t\t}\n\t\t\tif(!is_null($name))\n\t\t\t{\n\t\t\t\t$dir = $dir . DIRECTORY_SEPARATOR . $name;\n\t\t\t}\n\t\t\tif($this->dir_contains_children($dir, 'php'))\n\t\t\t{\n\t\t\t\treturn $dir;\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic function resolve_path($key, $name, $ext = 'php')\n\t{\n\t\tif(!isset($this->_lookup_dirs[$key]))\n\t\t\treturn false;\n\n\t\t$name = $this->normalize_path($name, $ext);\n\n\t\tforeach ($this->_lookup_dirs[$key] as $dir)\n\t\t{\n\t\t\t$file = $dir . DIRECTORY_SEPARATOR . $name;\n\t\t\tif (is_link($file))\n\t\t\t{\n\t\t\t\t$file = readlink($file);\n\t\t\t}\n\t\t\tif(file_exists($file))\n\t\t\t{\n\t\t\t\treturn $file;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n\n\tpublic function normalize_path($path, $ext)\n\t{\n\t\t$path = trim($path, '\\\\/');\n\t\treturn $path . '.' . $ext;\n\t}\n\n\tfunction dir_contains_children($dir, $ext = null)\n\t{\n\t\t$result = false;\n\t\tif (is_link($dir))\n\t\t{\n\t\t\t$dir = readlink($dir);\n\t\t}\n\n\t\tif($dh = opendir($dir))\n\t\t{\n\t\t\twhile(!$result && ($file = readdir($dh)) !== false)\n\t\t\t{\n\t\t\t\t$result = $file !== \".\" && $file !== \"..\";\n\t\t\t\tif(!is_null($ext))\n\t\t\t\t{\n\t\t\t\t\t$result = pathinfo($file, PATHINFO_EXTENSION) === $ext;\n\t\t\t\t}\n\t\t\t}\n\t\t\tclosedir($dh);\n\t\t}\n\t\treturn $result;\n\t}\n\n\t/**\n\t * Add directories to the autoloader, loading process will be run in orderly fashion\n\t * of directory addition.\n\t * \n\t * @param  String|Array $directories\n\t * @return void\n\t */\n\tpublic function add_directories($key, $directories)\n\t{\n\t\tif(!isset($this->_lookup_dirs[$key]))\n\t\t{\n\t\t\t$this->_lookup_dirs[$key] = array();\n\t\t}\n\t\t$this->_lookup_dirs[$key] = array_merge($this->_lookup_dirs[$key], (array) $directories);\n\t\t$this->_lookup_dirs[$key] = array_unique($this->_lookup_dirs[$key]);\n\t}\n\n\t/**\n\t * Remove directories.\n\t * \n\t * @param  String|Array $directories\n\t * @return void\n\t */\n\tpublic function remove_directories($key, $directories = null)\n\t{\n\t\t// annihilate everything if none / null passed\n\t\tif(is_null($directories))\n\t\t{\n\t\t\t$this->_lookup_dirs[$key] = array();\n\t\t}\n\t\telse\n\t\t{\n\t\t\t// prepare directories to be filtered\n\t\t\t$directories = (array) $directories;\n\n\t\t\t// do the filtering\n\t\t\tforeach ($this->_lookup_dirs[$key] as $name => $dir)\n\t\t\t{\n\t\t\t\tif(in_array($dir, $directories))\n\t\t\t\t{\n\t\t\t\t\tunset($this->_lookup_dirs[$key][$name]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Get all directories\n\t * \n\t * @return Array\n\t */\n\tpublic function get_directories($key = null)\n\t{\n\t\tif(!is_null($key))\n\t\t\treturn $this->_lookup_dirs[$key];\n\t\treturn $this->_lookup_dirs;\n\t}\n\n}"
  },
  {
    "path": "classes/metabox/alchemy.php",
    "content": "<?php\n\n/**\n * Extended version of WPAlchemy Class\n * so that it can process metabox using an array specification\n * and compatible with all Vafpress Framework Option Controls.\n */\n\n/////////////////////////////////////////\n// Include original WPAlchemy Class    //\n/////////////////////////////////////////\nif(!class_exists('WPAlchemy_MetaBox'))\n{\n\trequire_once VP_FileSystem::instance()->resolve_path('includes', 'wpalchemy/MetaBox');\n}\n\nclass VP_MetaBox_Alchemy extends WPAlchemy_MetaBox\n{\n\n\t/**\n\t * Used to setup the meta box content template\n\t *\n\t * @since\t1.0\n\t * @access\tprivate\n\t * @see\t\t_init()\n\t */\n\tfunction _setup()\n\t{\n\t\t$this->in_template = TRUE;\n\t\t\n\t\t// also make current post data available\n\t\tglobal $post;\n\n\t\t// shortcuts\n\t\t$mb      =& $this;\n\t\t$metabox =& $this;\n\t\t$id      =  $this->id;\n\t\t$meta    =  $this->_meta(NULL, TRUE);\n\n\t\t// use include because users may want to use one template for multiple meta boxes\n\t\tif( !is_array($this->template) and file_exists($this->template) )\n\t\t{\n\t\t\tinclude $this->template;\n\t\t}\n\t\telse\n\t\t{\n\t\t\t$fields = $this->_enfactor($this->template);\n\t\t\t$this->_enbind($fields);\n\t\t\t$fields = $this->_endep($fields);\n\n\t\t\techo '<div class=\"vp-metabox\">';\n\t\t\t$this->_enview($fields);\n\t\t\techo '</div>';\n\t\t}\n\t \n\t\t// create a nonce for verification\n\t\techo '<input type=\"hidden\" name=\"'. $this->id .'_nonce\" value=\"' . wp_create_nonce($this->id) . '\" />';\n\n\t\t$this->in_template = FALSE;\n\t}\n\n\t// return all field types\n\tfunction get_field_types()\n\t{\n\t\t$types = array();\n\n\t\tif(!function_exists('inner_build'))\n\t\t{\n\t\t\tfunction inner_build($fields, &$types)\n\t\t\t{\n\t\t\t\t$rules = VP_Util_Config::instance()->load('dependencies', 'rules');\n\t\t\t\tforeach ($fields as $field)\n\t\t\t\t{\n\t\t\t\t\tif($field['type'] == 'group')\n\t\t\t\t\t{\n\t\t\t\t\t\tinner_build($field['fields'], $types);\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tif( ! in_array($field['type'], $types) )\n\t\t\t\t\t\t\t$types[] = $field['type'];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tinner_build($this->template, $types);\n\n\t\treturn $types;\n\t}\n\n\tfunction _enfactor($arr)\n\t{\n\t\t$mb            =& $this;\n\t\t$fields        = $arr;\n\t\t$field_objects = array();\n\n\t\tforeach ($fields as $field)\n\t\t{\n\t\t\tif($field['type'] == 'group' and $field['repeating'])\n\t\t\t{\n\t\t\t\t$field_objects[$field['name']] = $this->_enfactor_group($field, $mb, true);\n\t\t\t}\n\t\t\telse if($field['type'] == 'group' and !$field['repeating'])\n\t\t\t{\n\t\t\t\t$field_objects[$field['name']] = $this->_enfactor_group($field, $mb, false);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t$field_objects[$field['name']] = $this->_enfactor_field($field, $mb);\n\t\t\t}\n\t\t}\n\n\t\treturn $field_objects;\n\t}\n\n\tfunction _enbind($fields)\n\t{\n\t\tforeach ($fields as $name => $field)\n\t\t{\n\t\t\tif(is_array($field))\n\t\t\t{\n\t\t\t\tforeach ($field['groups'] as $group)\n\t\t\t\t{\n\t\t\t\t\t$this->_enbind($group['childs']);\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t$bind = $field->get_binding();\n\t\t\t\t$val  = $field->get_value();\n\t\t\t\tif(!empty($bind) and is_null($val))\n\t\t\t\t{\n\t\t\t\t\t$bind   = explode('|', $bind);\n\t\t\t\t\t$func   = $bind[0];\n\t\t\t\t\t$params = $bind[1];\n\t\t\t\t\t$params = preg_split('/[\\s,]+/', $params);\n\t\t\t\t\t$values = array();\n\t\t\t\t\tforeach ($params as $param)\n\t\t\t\t\t{\n\t\t\t\t\t\tif(array_key_exists($param, $fields))\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t$values[] = $fields[$param]->get_value();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t$result = call_user_func_array($func, $values);\n\n\t\t\t\t\tif(VP_Util_Reflection::is_multiselectable($field))\n\t\t\t\t\t{\n\t\t\t\t\t\t$result = (array) $result;\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tif(is_array($result))\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t$result = reset($result);\n\t\t\t\t\t\t}\n\t\t\t\t\t\t$result = (String) $result;\n\t\t\t\t\t}\n\t\t\t\t\t$field->set_value($result);\n\t\t\t\t}\n\t\t\t\tif($field instanceof VP_Control_FieldMulti)\n\t\t\t\t{\n\t\t\t\t\t$bind = $field->get_items_binding();\n\t\t\t\t\tif(!empty($bind))\n\t\t\t\t\t{\n\t\t\t\t\t\t$bind   = explode('|', $bind);\n\t\t\t\t\t\t$func   = $bind[0];\n\t\t\t\t\t\t$params = $bind[1];\n\t\t\t\t\t\t$params = explode(',', $params);\n\t\t\t\t\t\t$values = array();\n\t\t\t\t\t\tforeach ($params as $param)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif(array_key_exists($param, $fields))\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t$values[] = $fields[$param]->get_value();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\t$items  = call_user_func_array($func, $values);\n\t\t\t\t\t\t$field->add_items_from_array($items);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tfunction _endep($fields)\n\t{\n\n\t\tif(!function_exists('loop_fields'))\n\t\t{\n\t\t\tfunction loop_fields(&$fields)\n\t\t\t{\n\t\t\t\tforeach ($fields as &$field)\n\t\t\t\t{\n\t\t\t\t\tif(is_array($field))\n\t\t\t\t\t{\n\t\t\t\t\t\tforeach ($field['groups'] as &$group)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tloop_fields($group['childs']);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t$dependency = '';\n\t\t\t\t\tif($field instanceof VP_Control_Field)\n\t\t\t\t\t{\n\t\t\t\t\t\t$dependency = $field->get_dependency();\n\t\t\t\t\t\tif(!empty($dependency))\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t$dependency = explode('|', $dependency);\n\t\t\t\t\t\t\t$func       = $dependency[0];\n\t\t\t\t\t\t\t$params     = $dependency[1];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tif(isset($field['dependency']))\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif(!empty($field['dependency']))\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t$dependency = $field['dependency'];\n\t\t\t\t\t\t\t\t$func       = $dependency['function'];\n\t\t\t\t\t\t\t\t$params     = $dependency['field'];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif(!empty($dependency))\n\t\t\t\t\t{\n\t\t\t\t\t\t$params     = explode(',', $params);\n\t\t\t\t\t\t$values     = array();\n\t\t\t\t\t\tforeach ($params as $param)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif(array_key_exists($param, $fields))\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t$values[] = $fields[$param]->get_value();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\t$result  = call_user_func_array($func, $values);\n\t\t\t\t\t\tif(!$result)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif($field instanceof VP_Control_Field)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t$field->is_hidden(true);\n\t\t\t\t\t\t\t\tif($field->is_hidden())\n\t\t\t\t\t\t\t\t\t$field->add_container_extra_classes('vp-hide');\n\n\t\t\t\t\t\t\t\t$field->add_container_extra_classes('vp-dep-inactive');\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t$field['is_hidden'] = true;\n\t\t\t\t\t\t\t\tif($field['is_hidden'])\n\t\t\t\t\t\t\t\t\t$field['container_extra_classes'][] = 'vp-hide';\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t$field['container_extra_classes'][] = 'vp-dep-inactive';\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tloop_fields($fields);\n\n\t\treturn $fields;\n\t}\n\n\tfunction _enfactor_field($field, $mb, $in_group = false)\n\t{\n\t\t$is_multi = VP_Util_Reflection::is_multiselectable($field['type']);\n\n\t\tif( !$is_multi )\n\t\t{\n\t\t\t$mb->the_field($field['name']);\n\t\t}\n\t\telse\n\t\t{\n\t\t\t$mb->the_field($field['name'], WPALCHEMY_FIELD_HINT_CHECKBOX_MULTI);\n\t\t}\n\t\t$field['name'] = $mb->get_the_name();\n\n\t\t// create the object\n\t\t$make     = VP_Util_Reflection::field_class_from_type($field['type']);\n\t\t$vp_field = call_user_func(\"$make::withArray\", $field);\n\n\t\t// get value from mb\n\t\t$value    = $mb->get_the_value();\n\t\t// get default from array\n\t\t$default  = $vp_field->get_default();\n\n\t\t// if tocopy always assign default\n\t\tif( $mb->is_parent_multi() and $mb->is_in_multi_last() )\n\t\t{\n\t\t\t$value = $default;\n\t\t}\n\t\telse\n\t\t{\n\t\t\t// if value is null and default exist, use default\n\t\t\tif( is_null($value) and !is_null($default) and empty($this->meta) )\n\t\t\t{\n\t\t\t\t$value = $default;\n\t\t\t}\n\t\t\t// if not then set up value from mb\n\t\t\telse\n\t\t\t{\n\t\t\t\tif( VP_Util_Reflection::is_multiselectable($field['type']) )\n\t\t\t\t{\n\t\t\t\t\tif( !is_array($value) )\n\t\t\t\t\t\t$value = array( $value );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t$vp_field->set_value($value);\n\n\t\tif (!$in_group)\n\t\t{\n\t\t\t$vp_field->add_container_extra_classes(array('vp-meta-single'));\n\t\t}\n\n\t\treturn $vp_field;\n\t}\n\n\tfunction _enfactor_group($field, $mb, $repeating)\n\t{\n\t\t$ignore       = array('type', 'length', 'fields');\n\t\t$groups       = array();\n\t\t$indexed_name = '';\n\t\t$level        = null;\n\t\tif($repeating)\n\t\t{\n\t\t\twhile($mb->have_fields_and_multi($field['name']))\n\t\t\t{\n\t\t\t\tif ($indexed_name === '') $indexed_name = $mb->get_the_loop_group_id();\n\t\t\t\tif (is_null($level)) $level = $mb->get_the_loop_level();\n\t\t\t\t$fields = array();\n\t\t\t\tforeach ($field['fields'] as $f)\n\t\t\t\t{\n\t\t\t\t\tif($f['type'] === 'group')\n\t \t\t\t\t\t$fields[$f['name']] = $this->_enfactor_group($f, $mb, $f['repeating']);\n\t\t\t\t\telse\n\t \t\t\t\t\t$fields[$f['name']] = $this->_enfactor_field($f, $mb, true);\n\t\t\t\t}\n\t\t\t\t$groups[] = array(\n\t\t\t\t\t'name'   => $mb->get_the_loop_group_name(true),\n\t\t\t\t\t'childs' => $fields\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\t$length = isset($field['length']) ? $field['length'] : 1;\n\t\t\twhile($mb->have_fields($field['name'], $length))\n\t\t\t{\n\t\t\t\tif ($indexed_name === '') $indexed_name = $mb->get_the_loop_group_id();\n\t\t\t\tif (is_null($level)) $level = $mb->get_the_loop_level();\n\t\t\t\t$fields = array();\n\t\t\t\tforeach ($field['fields'] as $f)\n\t\t\t\t{\n\t\t\t\t\tif($f['type'] === 'group')\n\t \t\t\t\t\t$fields[$f['name']] = $this->_enfactor_group($f, $mb, $f['repeating']);\n\t\t\t\t\telse\n\t \t\t\t\t\t$fields[$f['name']] = $this->_enfactor_field($f, $mb, true);\n\t\t\t\t}\n\t\t\t\t$groups[] = array(\n\t\t\t\t\t'name'   => $mb->get_the_loop_group_name(true),\n\t\t\t\t\t'childs' => $fields\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t\t// assign groups\n\t\t$group['groups']       = $groups;\n\t\t$group['indexed_name'] = $indexed_name;\n\t\t$group['level']        = $level;\n\n\t\t// assign other information\n\t\t$keys = array_keys($field);\n\t\tforeach ($keys as $key)\n\t\t{\n\t\t\tif(!in_array($key, $ignore))\n\t\t\t{\n\t\t\t\t$group[$key] = $field[$key];\n\t\t\t}\n\t\t}\n\n\t\t// sortable\n\t\tif(isset($group['sortable']) and $group['sortable'])\n\t\t\t$group['container_extra_classes'][] = 'vp-sortable';\n\n\t\treturn $group;\n\t}\n\n\tfunction _enview($fields)\n\t{\n\t\tforeach ($fields as $name => $field)\n\t\t{\n\t\t\tif( is_array($field) and $field['repeating'] )\n\t\t\t{\n\t\t\t\techo $this->_render_repeating_group($field);\n\t\t\t}\n\t\t\telse if( is_array($field) and !$field['repeating'] )\n\t\t\t{\n\t\t\t\techo $this->_render_group($field);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\techo $this->_render_field($field);\n\t\t\t}\n\t\t}\n\t}\n\n\tfunction _render_field($field)\n\t{\n\t\treturn $field->render();\n\t}\n\n\tfunction _render_group($group)\n\t{\n\t\t$name       = $group['name'];\n\t\t$uid        = $group['indexed_name'];\n\t\t$oddity     = ($group['level'] % 2 === 0) ? 'even' : 'odd';\n\t\t$dependency = isset($group['dependency']) ? $group['dependency']['function'] . '|' . $group['dependency']['field'] : '';\n\n\t\t$html  = '';\n\t\t$html .= '<div id=\"wpa_loop-' . $uid\n\t\t\t\t. '\" class=\"vp-wpa-loop level-' . $oddity . ' wpa_loop wpa_loop-' . $name . ' vp-fixed-loop vp-meta-group'\n\t\t\t\t. (isset($group['container_extra_classes']) ? (' ' . implode(' ', $group['container_extra_classes'])) : '')\n\t\t\t\t. '\"'\n\t\t\t\t. VP_Util_Text::return_if_exists(isset($dependency) ? $dependency : '', 'data-vp-dependency=\"%s\"')\n\t\t\t\t. '>';\n\n\t\t$icon = '';\n\t\tif(isset($group['sortable']) and $group['sortable'])\n\t\t\t$icon = '<i class=\"fa fa-move\"></i> ';\n\n\t\tforeach ($group['groups'] as $g)\n\t\t{\n\t\t\t$is_first = false;\n\t\t\tif ($g === reset($group['groups'])){ $is_first = true;}\n\n\t\t\t$html .= '<div id=\"'. $g['name'] .'\" class=\"vp-wpa-group wpa_group wpa_group-' . $name . '\">';\n\t\t\t$html .= '<div class=\"vp-wpa-group-heading\"><a href=\"#\" class=\"vp-wpa-group-title\">' . $icon . $group['title'] . '</a></div>';\n\t\t\t$html .= '<div class=\"vp-controls' . ((!$is_first) ? ' vp-hide' : '') . '\">';\n\n\t\t\tforeach ($g['childs'] as $f)\n\t\t\t{\n\n\t\t\t\tif( is_array($f) and $f['repeating'] )\n\t\t\t\t\t$html .= $this->_render_repeating_group($f);\n\t\t\t\telse if( is_array($f) and !$f['repeating'] )\n\t\t\t\t\t$html .= $this->_render_group($f);\n\t\t\t\telse\n\t\t\t\t\t$html .= $this->_render_field($f);\n\t\t\t}\n\n\t\t\t$html .= '</div>';\n\t\t\t$html .= '</div>';\n\t\t}\n\n\t\t$html .= '</div>';\n\n\t\treturn $html;\n\t}\n\n\tfunction _render_repeating_group($group)\n\t{\n\t\t$name       = $group['name'];\n\t\t$uid        = $group['indexed_name'];\n\t\t$oddity     = ($group['level'] % 2 === 0) ? 'even' : 'odd';\n\t\t$dependency = isset($group['dependency']) ? $group['dependency']['function'] . '|' . $group['dependency']['field'] : '';\n\n\t\t$html  = '';\n\t\t$html .= '<div id=\"wpa_loop-' . $uid\n\t\t\t\t. '\" class=\"vp-wpa-loop level-' . $oddity . ' wpa_loop wpa_loop-' . $name . ' vp-repeating-loop vp-meta-group'\n\t\t\t\t. (isset($group['container_extra_classes']) ? (' ' . implode(' ', $group['container_extra_classes'])) : '')\n\t\t\t\t. '\"'\n\t\t\t\t. VP_Util_Text::return_if_exists(isset($dependency) ? $dependency : '', 'data-vp-dependency=\"%s\"')\n\t\t\t\t. '>';\n\n\t\t$icon = '';\n\t\tif(isset($group['sortable']) and $group['sortable'])\n\t\t\t$icon = '<i class=\"fa fa-move\"></i> ';\n\n\t\tforeach ($group['groups'] as $g)\n\t\t{\n\t\t\t$class    = '';\n\t\t\t$is_first = false;\n\t\t\t$is_last  = false;\n\t\t\tif ($g === end($group['groups'])){ $is_last = true; $class = ' last tocopy';}\n\t\t\tif ($g === reset($group['groups'])){ $is_first = true; $class = ' first';}\n\n\t\t\t$html .= '<div id=\"'. $g['name'] .'\" class=\"vp-wpa-group wpa_group wpa_group-' . $name . $class . '\">';\n\t\t\t$html .= '<div class=\"vp-wpa-group-heading\"><a href=\"#\" class=\"vp-wpa-group-title\">' . $icon . $group['title'] . '</a><a href=\"#\" class=\"dodelete vp-wpa-group-remove\" title=\"'. __('Remove', 'vp_textdomain') .'\"><i class=\"fa fa-times\"></i> '. __('Remove', 'vp_textdomain') .'</a></div>';\n\t\t\t$html .= '<div class=\"vp-controls' . ((!$is_first) ? ' vp-hide' : '') . '\">';\n\t\t\tif ($g === end($group['groups']))\n\t\t\t{\n\t\t\t\t$tocopy = $g['name'] . '[tocopy]';\n\t\t\t\t$html  .= '<input type=\"hidden\" class=\"tocopy-hidden\" name=\"' . $tocopy . '\" value=\"1\">';\n\t\t\t}\n\t\t\tforeach ($g['childs'] as $f)\n\t\t\t{\n\n\t\t\t\tif( is_array($f) and $f['repeating'] )\n\t\t\t\t\t$html .= $this->_render_repeating_group($f);\n\t\t\t\telse if( is_array($f) and !$f['repeating'] )\n\t\t\t\t\t$html .= $this->_render_group($f);\n\t\t\t\telse\n\t\t\t\t\t$html .= $this->_render_field($f);\n\t\t\t}\n\t\t\t$html .= '</div>';\n\t\t\t$html .= '</div>';\n\t\t}\n\n\t\t$html .= '<div class=\"vp-wpa-group-add\">';\n\t\t$html .= '<a href=\"#\" class=\"button button-large docopy-' . $name . '\">'. __('Add More', 'vp_textdomain') . '' . $group['title'] . '</a>';\n\t\t$html .= '</div>';\n\n\t\t$html .= '</div>';\n\n\t\treturn $html;\n\t}\n\n\tfunction _save($post_id) \n\t{\n\t\t// skip saving if dev mode is on\n\t\t$dev_mode = VP_Util_Config::instance()->load('metabox', 'dev_mode');\n\t\tif($dev_mode)\n\t\t\treturn;\n\n\t\t$real_post_id = isset($_POST['post_ID']) ? $_POST['post_ID'] : NULL ;\n\t\t\n\t\t// check autosave\n\t\tif (defined('DOING_AUTOSAVE') AND DOING_AUTOSAVE AND !$this->autosave) return $post_id;\n\t \n\t\t// make sure data came from our meta box, verify nonce\n\t\t$nonce = isset($_POST[$this->id.'_nonce']) ? $_POST[$this->id.'_nonce'] : NULL ;\n\t\tif (!wp_verify_nonce($nonce, $this->id)) return $post_id;\n\t \n\t\t// check user permissions\n\t\tif ($_POST['post_type'] == 'page') \n\t\t{\n\t\t\tif (!current_user_can('edit_page', $post_id)) return $post_id;\n\t\t}\n\t\telse \n\t\t{\n\t\t\tif (!current_user_can('edit_post', $post_id)) return $post_id;\n\t\t}\n\t \n\t\t// authentication passed, save data\n\t\t$new_data = isset( $_POST[$this->id] ) ? $_POST[$this->id] : NULL ;\n\n\t\t// clean to copy and reset array indexes\n\t\t$this->_clean_tocopy($new_data);\n\n\t\tif (empty($new_data))\n\t\t{\n\t\t\t$new_data = NULL;\n\t\t}\n\n\t\t// filter: save\n\t\tif ($this->has_filter('save'))\n\t\t{\n\t\t\t$new_data = $this->apply_filters('save', $new_data, $real_post_id);\n\n\t\t\t/**\n\t\t\t * halt saving\n\t\t\t * @since 1.3.4\n\t\t\t */\n\t\t\tif (FALSE === $new_data) return $post_id;\n\n\t\t\t$this->_clean_tocopy($new_data);\n\t\t}\n\n\t\t// get current fields, use $real_post_id (checked for in both modes)\n\t\t$current_fields = get_post_meta($real_post_id, $this->id . '_fields', TRUE);\n\n\t\tif ($this->mode == WPALCHEMY_MODE_EXTRACT)\n\t\t{\n\t\t\t$new_fields = array();\n\n\t\t\tif (is_array($new_data))\n\t\t\t{\n\t\t\t\tforeach ($new_data as $k => $v)\n\t\t\t\t{\n\t\t\t\t\t$field = $this->prefix . $k;\n\t\t\t\t\t\n\t\t\t\t\tarray_push($new_fields,$field);\n\n\t\t\t\t\t$new_value = $new_data[$k];\n\n\t\t\t\t\tif (is_null($new_value))\n\t\t\t\t\t{\n\t\t\t\t\t\tdelete_post_meta($post_id, $field);\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tupdate_post_meta($post_id, $field, $new_value);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t$diff_fields = array_diff((array)$current_fields,$new_fields);\n\n\t\t\tif (is_array($diff_fields))\n\t\t\t{\n\t\t\t\tforeach ($diff_fields as $field)\n\t\t\t\t{\n\t\t\t\t\tdelete_post_meta($post_id,$field);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tdelete_post_meta($post_id, $this->id . '_fields');\n\n\t\t\tif ( ! empty($new_fields))\n\t\t\t{\n\t\t\t\tadd_post_meta($post_id,$this->id . '_fields', $new_fields, TRUE);\n\t\t\t}\n\n\t\t\t// keep data tidy, delete values if previously using WPALCHEMY_MODE_ARRAY\n\t\t\tdelete_post_meta($post_id, $this->id);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tif (is_null($new_data))\n\t\t\t{\n\t\t\t\tdelete_post_meta($post_id, $this->id);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tupdate_post_meta($post_id, $this->id, $new_data);\n\t\t\t}\n\n\t\t\t// keep data tidy, delete values if previously using WPALCHEMY_MODE_EXTRACT\n\t\t\tif (is_array($current_fields))\n\t\t\t{\n\t\t\t\tforeach ($current_fields as $field)\n\t\t\t\t{\n\t\t\t\t\tdelete_post_meta($post_id, $field);\n\t\t\t\t}\n\n\t\t\t\tdelete_post_meta($post_id, $this->id . '_fields');\n\t\t\t}\n\t\t}\n\n\t\t// action: save\n\t\tif ($this->has_action('save'))\n\t\t{\n\t\t\t$this->do_action('save', $new_data, $real_post_id);\n\t\t}\n\n\t\treturn $post_id;\n\t}\n\n\tprivate function _clean_tocopy(&$arr)\n\t{\n\t\tif(is_array($arr))\n\t\t{\n\t\t\tforeach ($arr as $key => $value)\n\t\t\t{\n\t\t\t\tif(is_array($value))\n\t\t\t\t{\n\t\t\t\t\t$this->_clean_tocopy($arr[$key]);\n\t\t\t\t\tif(array_key_exists('tocopy', $value))\n\t\t\t\t\t{\n\t\t\t\t\t\tunset($arr[$key]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!count($arr)) \n\t\t\t{\n\t\t\t\t$arr = array();\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t$keys = array_keys($arr);\n\n\t\t\t\t$is_numeric = TRUE;\n\n\t\t\t\tforeach ($keys as $key)\n\t\t\t\t{\n\t\t\t\t\tif (!is_numeric($key)) \n\t\t\t\t\t{\n\t\t\t\t\t\t$is_numeric = FALSE;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ($is_numeric)\n\t\t\t\t{\n\t\t\t\t\t$arr = array_values($arr);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n}\n\n/**\n * EOF\n */"
  },
  {
    "path": "classes/metabox/depsloader.php",
    "content": "<?php\n\nclass VP_Metabox_Depsloader\n{\n\n\t/**\n\t * ARRAY OF VP_METABOX_ALCHEMY OBJECT\n\t * @var [type]\n\t */\n\tprivate $things;\n\n\tpublic function __construct($things)\n\t{\n\t\t$this->things = array($things);\n\t}\n\n\tpublic function build()\n\t{\n\t\t$vp_metabox_used = false;\n\t\t$metaboxes = $this->things;\n\n\t\t$result = array(\n\t\t\t'scripts'              => array(),\n\t\t\t'styles'               => array(),\n\t\t\t'localize_name'        => 'vp_mb',\n\t\t\t'localize_default'     => array(),\n\t\t\t'localize'             => array(),\n\t\t\t'use_upload'           => false,\n\t\t\t'use_new_media_upload' => false,\n\t\t\t'main_js'              => array(\n\t\t\t\t'name' => 'vp-metabox',\n\t\t\t\t'path' => VP_PUBLIC_URL . '/js/metabox.min.js'\n\t\t\t),\n\t\t\t'main_css'             => array(\n\t\t\t\t'name' => 'vp-metabox',\n\t\t\t\t'path' => VP_PUBLIC_URL . '/css/metabox.min.css'\n\t\t\t),\n\t\t);\n\n\t\t$script_always = VP_Util_Config::instance()->load('dependencies', 'scripts.always');\n\t\t$style_always  = VP_Util_Config::instance()->load('dependencies', 'styles.always');\n\t\t$messages      = VP_Util_Config::instance()->load('messages');\n\n\t\t$result['localize']['val_msg'] = $messages['validation'];\n\n\t\tif(is_array($metaboxes)) reset($metaboxes);\n\t\tif(is_array($metaboxes)) foreach ($metaboxes as $key => $metabox)\n\t\t{\n\t\t\tif($metabox->can_output())\n\t\t\t{\n\t\t\t\tif(!function_exists('inner_build'))\n\t\t\t\t{\n\t\t\t\t\tfunction inner_build($fields, &$result)\n\t\t\t\t\t{\n\t\t\t\t\t\t$rules = VP_Util_Config::instance()->load('dependencies', 'rules');\n\t\t\t\t\t\tforeach ($fields as $field)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif($field['type'] == 'group')\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinner_build($field['fields'], $result);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tif( array_key_exists($field['type'], $rules) )\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t$result['scripts'] = array_merge($result['scripts'], $rules[$field['type']]['js']);\n\t\t\t\t\t\t\t\t\t$result['styles']  = array_merge($result['styles'], $rules[$field['type']]['css']);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif( $field['type'] == 'upload' )\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t$result['use_upload'] = true;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tinner_build($metabox->template, $result);\n\t\t\t\t// at least one metabox used, then let's load\n\t\t\t\t$vp_metabox_used = true;\n\t\t\t}\n\n\t\t\tif($vp_metabox_used)\n\t\t\t{\n\t\t\t\t$result['scripts'] = array_merge($result['scripts'], $script_always);\n\t\t\t\t$result['styles']  = array_merge($result['styles'], $style_always);\n\t\t\t}\n\t\t\t$result['scripts'] = array_unique($result['scripts']);\n\t\t\t$result['styles']  = array_unique($result['styles']);\t\t\n\t\t}\n\t\treturn $result;\n\t}\n\n\tpublic function can_output($hook_suffix = '')\n\t{\n\t\tif ( WPAlchemy_MetaBox::_is_post() or WPAlchemy_MetaBox::_is_page() )\n\t\t\treturn true;\n\t\treturn false;\n\t}\n\n}"
  },
  {
    "path": "classes/metabox.php",
    "content": "<?php\n\n/**\n * Extended version of WPAlchemy Class\n * so that it can process metabox using an array specification\n * and compatible with all Vafpress Framework Option Controls.\n */\n\n/////////////////////////////////////////\n// Include original WPAlchemy Class    //\n/////////////////////////////////////////\nif(!class_exists('WPAlchemy_MetaBox'))\n{\n\trequire_once VP_FileSystem::instance()->resolve_path('includes', 'wpalchemy/MetaBox');\n}\n\nclass VP_Metabox extends WPAlchemy_MetaBox\n{\n\n\tpublic static $pool = array();\n\n\tpublic $is_dev_mode = false;\n\n\tfunction __construct($arr)\n\t{\n\t\tif( !is_array($arr) and file_exists($arr) )\n\t\t{\n\t\t\t$arr = include $arr;\n\t\t}\n\t\tparent::__construct($arr);\n\n\t\t// Modify title in dev mode\n\t\tif( $this->is_dev_mode )\n\t\t{\n\t\t\t$this->title = __('[Development Mode] ', 'vp_textdomain') . $this->title;\n\t\t}\n\n\t\tif ($this->can_output() and VP_WP_Admin::is_post_or_page() )\n\t\t{\n\t\t\t// make sure metabox template loaded\n\t\t\tif( !is_array($this->template) and file_exists($this->template) )\n\t\t\t\t$this->template = include $this->template;\n\t\t\tadd_action( 'init', array( $this, 'register_fields' ) );\n\t\t}\n\n\t\tself::$pool[$this->id] = $this;\n\t}\n\n\tpublic function register_fields()\n\t{\n\t\t$loader = VP_WP_Loader::instance();\n\t\t$loader->add_types( $this->get_field_types(), 'metabox' );\n\t}\n\n\tpublic static function get_pool()\n\t{\n\t\treturn self::$pool;\n\t}\n\n\tpublic static function pool_can_output()\n\t{\n\t\tforeach (self::$pool as $mb)\n\t\t{\n\t\t\tif( $mb->can_output() )\n\t\t\t{\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n\n\tpublic static function pool_supports_editor()\n\t{\n\t\tforeach (self::$pool as $mb)\n\t\t{\n\t\t\tif( $mb->supports_editor() )\n\t\t\t{\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n\n\tpublic function supports_editor()\n\t{\n\t\t$post_type  = self::_get_current_post_type();\n\t\t$has_editor = post_type_supports( $post_type, 'editor' );\n\t\treturn $has_editor;\n\t}\n\n\t/**\n\t * Used to setup the meta box content template\n\t *\n\t * @since\t1.0\n\t * @access\tprivate\n\t * @see\t\t_init()\n\t */\n\tfunction _setup()\n\t{\n\t\t$this->in_template = TRUE;\n\t\t\n\t\t// also make current post data available\n\t\tglobal $post;\n\n\t\t// shortcuts\n\t\t$mb      =& $this;\n\t\t$metabox =& $this;\n\t\t$id      =  $this->id;\n\t\t$meta    =  $this->_meta(NULL, TRUE);\n\n\t\t// make sure metabox template loaded\n\t\tif( !is_array($this->template) and file_exists($this->template) )\n\t\t{\n\t\t\t$this->template = include $this->template;\n\t\t}\n\t\telse\n\t\t{\n\t\t\t$fields = $this->_enfactor($this->template);\n\t\t\t$this->_enbind($fields);\n\t\t\t$fields = $this->_endep($fields);\n\n\t\t\techo '<div class=\"vp-metabox\">';\n\t\t\t$this->_enview($fields);\n\t\t\techo '</div>';\n\t\t}\n\t \n\t\t// create a nonce for verification\n\t\techo '<input type=\"hidden\" name=\"'. $this->id .'_nonce\" value=\"' . wp_create_nonce($this->id) . '\" />';\n\n\t\t$this->in_template = FALSE;\n\t}\n\n\t// return all field types\n\tfunction get_field_types()\n\t{\n\t\t$types = array();\n\n\t\tif(!function_exists('inner_build'))\n\t\t{\n\t\t\tfunction inner_build($fields, &$types)\n\t\t\t{\n\t\t\t\t$rules = VP_Util_Config::instance()->load('dependencies', 'rules');\n\t\t\t\tforeach ($fields as $field)\n\t\t\t\t{\n\t\t\t\t\tif($field['type'] == 'group')\n\t\t\t\t\t{\n\t\t\t\t\t\tinner_build($field['fields'], $types);\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tif( ! in_array($field['type'], $types) )\n\t\t\t\t\t\t\t$types[] = $field['type'];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tinner_build($this->template, $types);\n\n\t\treturn $types;\n\t}\n\n\tfunction _enfactor($arr)\n\t{\n\t\t$mb            =& $this;\n\t\t$fields        = $arr;\n\t\t$field_objects = array();\n\n\t\tforeach ($fields as $field)\n\t\t{\n\t\t\tif($field['type'] == 'group' and $field['repeating'])\n\t\t\t{\n\t\t\t\t$field_objects[$field['name']] = $this->_enfactor_group($field, $mb, true);\n\t\t\t}\n\t\t\telse if($field['type'] == 'group' and !$field['repeating'])\n\t\t\t{\n\t\t\t\t$field_objects[$field['name']] = $this->_enfactor_group($field, $mb, false);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t$field_objects[$field['name']] = $this->_enfactor_field($field, $mb);\n\t\t\t}\n\t\t}\n\n\t\treturn $field_objects;\n\t}\n\n\tfunction _enbind($fields)\n\t{\n\t\tforeach ($fields as $name => $field)\n\t\t{\n\t\t\tif(is_array($field))\n\t\t\t{\n\t\t\t\tforeach ($field['groups'] as $group)\n\t\t\t\t{\n\t\t\t\t\t$this->_enbind($group['childs']);\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t$bind = $field->get_binding();\n\t\t\t\t$val  = $field->get_value();\n\t\t\t\tif(!empty($bind) and is_null($val))\n\t\t\t\t{\n\t\t\t\t\t$bind   = explode('|', $bind);\n\t\t\t\t\t$func   = $bind[0];\n\t\t\t\t\t$params = $bind[1];\n\t\t\t\t\t$params = preg_split('/[\\s,]+/', $params);\n\t\t\t\t\t$values = array();\n\t\t\t\t\tforeach ($params as $param)\n\t\t\t\t\t{\n\t\t\t\t\t\tif(array_key_exists($param, $fields))\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t$values[] = $fields[$param]->get_value();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t$result = call_user_func_array($func, $values);\n\n\t\t\t\t\tif(VP_Util_Reflection::is_multiselectable($field))\n\t\t\t\t\t{\n\t\t\t\t\t\t$result = (array) $result;\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tif(is_array($result))\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t$result = reset($result);\n\t\t\t\t\t\t}\n\t\t\t\t\t\t$result = (String) $result;\n\t\t\t\t\t}\n\t\t\t\t\t$field->set_value($result);\n\t\t\t\t}\n\t\t\t\tif($field instanceof VP_Control_FieldMulti)\n\t\t\t\t{\n\t\t\t\t\t$bind = $field->get_items_binding();\n\t\t\t\t\tif(!empty($bind))\n\t\t\t\t\t{\n\t\t\t\t\t\t$bind   = explode('|', $bind);\n\t\t\t\t\t\t$func   = $bind[0];\n\t\t\t\t\t\t$params = $bind[1];\n\t\t\t\t\t\t$params = preg_split('/[\\s,]+/', $params);\n\t\t\t\t\t\t$values = array();\n\t\t\t\t\t\tforeach ($params as $param)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif(array_key_exists($param, $fields))\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t$values[] = $fields[$param]->get_value();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\t$items  = call_user_func_array($func, $values);\n\t\t\t\t\t\t$field->add_items_from_array($items);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tfunction _endep($fields)\n\t{\n\n\t\tif(!function_exists('loop_fields'))\n\t\t{\n\t\t\tfunction loop_fields(&$fields)\n\t\t\t{\n\t\t\t\tforeach ($fields as &$field)\n\t\t\t\t{\n\t\t\t\t\tif(is_array($field))\n\t\t\t\t\t{\n\t\t\t\t\t\tforeach ($field['groups'] as &$group)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tloop_fields($group['childs']);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t$dependency = '';\n\t\t\t\t\tif($field instanceof VP_Control_Field)\n\t\t\t\t\t{\n\t\t\t\t\t\t$dependency = $field->get_dependency();\n\t\t\t\t\t\tif(!empty($dependency))\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t$dependency = explode('|', $dependency);\n\t\t\t\t\t\t\t$func       = $dependency[0];\n\t\t\t\t\t\t\t$params     = $dependency[1];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tif(isset($field['dependency']))\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif(!empty($field['dependency']))\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t$dependency = $field['dependency'];\n\t\t\t\t\t\t\t\t$func       = $dependency['function'];\n\t\t\t\t\t\t\t\t$params     = $dependency['field'];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif(!empty($dependency))\n\t\t\t\t\t{\n\t\t\t\t\t\t$params     = preg_split('/[\\s,]+/', $params);\n\t\t\t\t\t\t$values     = array();\n\t\t\t\t\t\tforeach ($params as $param)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif(array_key_exists($param, $fields))\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t$values[] = $fields[$param]->get_value();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\t$result  = call_user_func_array($func, $values);\n\t\t\t\t\t\tif(!$result)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif($field instanceof VP_Control_Field)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t$field->is_hidden(true);\n\t\t\t\t\t\t\t\tif($field->is_hidden())\n\t\t\t\t\t\t\t\t\t$field->add_container_extra_classes('vp-hide');\n\n\t\t\t\t\t\t\t\t$field->add_container_extra_classes('vp-dep-inactive');\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t$field['is_hidden'] = true;\n\t\t\t\t\t\t\t\tif($field['is_hidden'])\n\t\t\t\t\t\t\t\t\t$field['container_extra_classes'][] = 'vp-hide';\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t$field['container_extra_classes'][] = 'vp-dep-inactive';\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tloop_fields($fields);\n\n\t\treturn $fields;\n\t}\n\n\tfunction _enfactor_field($field, $mb, $in_group = false)\n\t{\n\t\t$is_multi = VP_Util_Reflection::is_multiselectable($field['type']);\n\n\t\tif( !$is_multi )\n\t\t{\n\t\t\t$mb->the_field($field['name']);\n\t\t}\n\t\telse\n\t\t{\n\t\t\t$mb->the_field($field['name'], WPALCHEMY_FIELD_HINT_CHECKBOX_MULTI);\n\t\t}\n\t\t$field['name'] = $mb->get_the_name();\n\n\t\t// create the object\n\t\t$make     = VP_Util_Reflection::field_class_from_type($field['type']);\n\t\t$vp_field = call_user_func(\"$make::withArray\", $field);\n\n\t\t// get value from mb\n\t\t$value    = $mb->get_the_value();\n\t\t// get default from array\n\t\t$default  = $vp_field->get_default();\n\n\t\t// if tocopy always assign default\n\t\tif( $mb->is_parent_multi() and $mb->is_in_multi_last() )\n\t\t{\n\t\t\t$value = $default;\n\t\t}\n\t\telse\n\t\t{\n\t\t\t// if value is null and default exist, use default\n\t\t\tif( is_null($value) and !is_null($default) and empty($this->meta) )\n\t\t\t{\n\t\t\t\t$value = $default;\n\t\t\t}\n\t\t\t// if not then set up value from mb\n\t\t\telse\n\t\t\t{\n\t\t\t\tif( VP_Util_Reflection::is_multiselectable($field['type']) )\n\t\t\t\t{\n\t\t\t\t\tif( !is_array($value) and !is_null($value) )\n\t\t\t\t\t\t$value = array( $value );\n\t\t\t\t\telse if( is_null($value) )\n\t\t\t\t\t\t$value = array();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t$vp_field->set_value($value);\n\n\t\tif (!$in_group)\n\t\t{\n\t\t\t$vp_field->add_container_extra_classes(array('vp-meta-single'));\n\t\t}\n\n\t\treturn $vp_field;\n\t}\n\n\tfunction _enfactor_group($field, $mb, $repeating)\n\t{\n\t\t$ignore       = array('type', 'length', 'fields');\n\t\t$groups       = array();\n\t\t$indexed_name = '';\n\t\t$level        = null;\n\t\tif($repeating)\n\t\t{\n\t\t\twhile($mb->have_fields_and_multi($field['name']))\n\t\t\t{\n\t\t\t\tif ($indexed_name === '') $indexed_name = $mb->get_the_loop_group_id();\n\t\t\t\tif (is_null($level)) $level = $mb->get_the_loop_level();\n\t\t\t\t$fields = array();\n\t\t\t\tforeach ($field['fields'] as $f)\n\t\t\t\t{\n\t\t\t\t\tif($f['type'] === 'group')\n\t \t\t\t\t\t$fields[$f['name']] = $this->_enfactor_group($f, $mb, $f['repeating']);\n\t\t\t\t\telse\n\t \t\t\t\t\t$fields[$f['name']] = $this->_enfactor_field($f, $mb, true);\n\t\t\t\t}\n\t\t\t\t$groups[] = array(\n\t\t\t\t\t'name'   => $mb->get_the_loop_group_name(true),\n\t\t\t\t\t'childs' => $fields\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\t$length = isset($field['length']) ? $field['length'] : 1;\n\t\t\twhile($mb->have_fields($field['name'], $length))\n\t\t\t{\n\t\t\t\tif ($indexed_name === '') $indexed_name = $mb->get_the_loop_group_id();\n\t\t\t\tif (is_null($level)) $level = $mb->get_the_loop_level();\n\t\t\t\t$fields = array();\n\t\t\t\tforeach ($field['fields'] as $f)\n\t\t\t\t{\n\t\t\t\t\tif($f['type'] === 'group')\n\t \t\t\t\t\t$fields[$f['name']] = $this->_enfactor_group($f, $mb, $f['repeating']);\n\t\t\t\t\telse\n\t \t\t\t\t\t$fields[$f['name']] = $this->_enfactor_field($f, $mb, true);\n\t\t\t\t}\n\t\t\t\t$groups[] = array(\n\t\t\t\t\t'name'   => $mb->get_the_loop_group_name(true),\n\t\t\t\t\t'childs' => $fields\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t\t// assign groups\n\t\t$group['groups']       = $groups;\n\t\t$group['indexed_name'] = $indexed_name;\n\t\t$group['level']        = $level;\n\n\t\t// assign other information\n\t\t$keys = array_keys($field);\n\t\tforeach ($keys as $key)\n\t\t{\n\t\t\tif(!in_array($key, $ignore))\n\t\t\t{\n\t\t\t\t$group[$key] = $field[$key];\n\t\t\t}\n\t\t}\n\n\t\t// sortable\n\t\tif(isset($group['sortable']) and $group['sortable'])\n\t\t\t$group['container_extra_classes'][] = 'vp-sortable';\n\n\t\treturn $group;\n\t}\n\n\tfunction _enview($fields)\n\t{\n\t\tforeach ($fields as $name => $field)\n\t\t{\n\t\t\tif( is_array($field) and $field['repeating'] )\n\t\t\t{\n\t\t\t\techo $this->_render_repeating_group($field);\n\t\t\t}\n\t\t\telse if( is_array($field) and !$field['repeating'] )\n\t\t\t{\n\t\t\t\techo $this->_render_group($field);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\techo $this->_render_field($field);\n\t\t\t}\n\t\t}\n\t}\n\n\tfunction _render_field($field)\n\t{\n\t\treturn $field->render();\n\t}\n\n\tfunction _render_group($group)\n\t{\n\t\t$name       = $group['name'];\n\t\t$uid        = $group['indexed_name'];\n\t\t$oddity     = ($group['level'] % 2 === 0) ? 'even' : 'odd';\n\t\t$dependency = isset($group['dependency']) ? $group['dependency']['function'] . '|' . $group['dependency']['field'] : '';\n\n\t\t$html  = '';\n\t\t$html .= '<div id=\"wpa_loop-' . $uid\n\t\t\t\t. '\" class=\"vp-wpa-loop level-' . $oddity . ' wpa_loop wpa_loop-' . $name . ' vp-fixed-loop vp-meta-group'\n\t\t\t\t. (isset($group['container_extra_classes']) ? (' ' . implode(' ', $group['container_extra_classes'])) : '')\n\t\t\t\t. '\"'\n\t\t\t\t. VP_Util_Text::return_if_exists(isset($dependency) ? $dependency : '', 'data-vp-dependency=\"%s\"')\n\t\t\t\t. '>';\n\n\t\t$icon = '';\n\t\tif(isset($group['sortable']) and $group['sortable'])\n\t\t\t$icon = '<i class=\"fa fa-move\"></i> ';\n\n\t\tforeach ($group['groups'] as $g)\n\t\t{\n\t\t\t$is_first = false;\n\t\t\tif ($g === reset($group['groups'])){ $is_first = true;}\n\n\t\t\t$html .= '<div id=\"'. $g['name'] .'\" class=\"vp-wpa-group wpa_group wpa_group-' . $name . '\">';\n\t\t\t$html .= '<div class=\"vp-wpa-group-heading\"><a href=\"#\" class=\"vp-wpa-group-title\">' . $icon . $group['title'] . '</a></div>';\n\t\t\t$html .= '<div class=\"vp-controls' . ((!$is_first) ? ' vp-hide' : '') . '\">';\n\n\t\t\tforeach ($g['childs'] as $f)\n\t\t\t{\n\n\t\t\t\tif( is_array($f) and $f['repeating'] )\n\t\t\t\t\t$html .= $this->_render_repeating_group($f);\n\t\t\t\telse if( is_array($f) and !$f['repeating'] )\n\t\t\t\t\t$html .= $this->_render_group($f);\n\t\t\t\telse\n\t\t\t\t\t$html .= $this->_render_field($f);\n\t\t\t}\n\n\t\t\t$html .= '</div>';\n\t\t\t$html .= '</div>';\n\t\t}\n\n\t\t$html .= '</div>';\n\n\t\treturn $html;\n\t}\n\n\tfunction _render_repeating_group($group)\n\t{\n\t\t$name       = $group['name'];\n\t\t$uid        = $group['indexed_name'];\n\t\t$oddity     = ($group['level'] % 2 === 0) ? 'even' : 'odd';\n\t\t$dependency = isset($group['dependency']) ? $group['dependency']['function'] . '|' . $group['dependency']['field'] : '';\n\n\t\t$html  = '';\n\t\t$html .= '<div id=\"wpa_loop-' . $uid\n\t\t\t\t. '\" class=\"vp-wpa-loop level-' . $oddity . ' wpa_loop wpa_loop-' . $name . ' vp-repeating-loop vp-meta-group'\n\t\t\t\t. (isset($group['container_extra_classes']) ? (' ' . implode(' ', $group['container_extra_classes'])) : '')\n\t\t\t\t. '\"'\n\t\t\t\t. VP_Util_Text::return_if_exists(isset($dependency) ? $dependency : '', 'data-vp-dependency=\"%s\"')\n\t\t\t\t. '>';\n\n\t\t$icon = '';\n\t\tif(isset($group['sortable']) and $group['sortable'])\n\t\t\t$icon = '<i class=\"fa fa-move\"></i> ';\n\n\t\tforeach ($group['groups'] as $g)\n\t\t{\n\t\t\t$class    = '';\n\t\t\t$is_first = false;\n\t\t\t$is_last  = false;\n\t\t\tif ($g === end($group['groups'])){ $is_last = true; $class = ' last tocopy';}\n\t\t\tif ($g === reset($group['groups'])){ $is_first = true; $class = ' first';}\n\n\t\t\t$html .= '<div id=\"'. $g['name'] .'\" class=\"vp-wpa-group wpa_group wpa_group-' . $name . $class . '\">';\n\t\t\t$html .= '<div class=\"vp-wpa-group-heading\"><a href=\"#\" class=\"vp-wpa-group-title\">' . $icon . $group['title'] . '</a><a href=\"#\" class=\"dodelete vp-wpa-group-remove\" title=\"'. __('Remove', 'vp_textdomain') .'\"><i class=\"fa fa-times\"></i> '. __('Remove', 'vp_textdomain') .'</a></div>';\n\t\t\t$html .= '<div class=\"vp-controls' . ((!$is_first) ? ' vp-hide' : '') . '\">';\n\t\t\tif ($g === end($group['groups']))\n\t\t\t{\n\t\t\t\t$tocopy = $g['name'] . '[tocopy]';\n\t\t\t\t$html  .= '<input type=\"hidden\" class=\"tocopy-hidden\" name=\"' . $tocopy . '\" value=\"1\">';\n\t\t\t}\n\t\t\tforeach ($g['childs'] as $f)\n\t\t\t{\n\n\t\t\t\tif( is_array($f) and $f['repeating'] )\n\t\t\t\t\t$html .= $this->_render_repeating_group($f);\n\t\t\t\telse if( is_array($f) and !$f['repeating'] )\n\t\t\t\t\t$html .= $this->_render_group($f);\n\t\t\t\telse\n\t\t\t\t\t$html .= $this->_render_field($f);\n\t\t\t}\n\t\t\t$html .= '</div>';\n\t\t\t$html .= '</div>';\n\t\t}\n\n\t\t$html .= '<div class=\"vp-wpa-group-add\">';\n\t\t$html .= '<a href=\"#\" class=\"button button-large docopy-' . $name . '\">'. __('Add More', 'vp_textdomain') . ' ' . $group['title'] . '</a>';\n\t\t$html .= '</div>';\n\n\t\t$html .= '</div>';\n\n\t\treturn $html;\n\t}\n\n\tfunction _save($post_id) \n\t{\n\t\t// skip saving if dev mode is on\n\t\tif($this->is_dev_mode)\n\t\t\treturn;\n\n\t\t$real_post_id = isset($_POST['post_ID']) ? $_POST['post_ID'] : NULL ;\n\t\t\n\t\t// check autosave\n\t\tif (defined('DOING_AUTOSAVE') AND DOING_AUTOSAVE AND !$this->autosave) return $post_id;\n\t \n\t\t// make sure data came from our meta box, verify nonce\n\t\t$nonce = isset($_POST[$this->id.'_nonce']) ? $_POST[$this->id.'_nonce'] : NULL ;\n\t\tif (!wp_verify_nonce($nonce, $this->id)) return $post_id;\n\t \n\t\t// check user permissions\n\t\tif ($_POST['post_type'] == 'page') \n\t\t{\n\t\t\tif (!current_user_can('edit_page', $post_id)) return $post_id;\n\t\t}\n\t\telse \n\t\t{\n\t\t\tif (!current_user_can('edit_post', $post_id)) return $post_id;\n\t\t}\n\t \n\t\t// authentication passed, save data\n\t\t$new_data = isset( $_POST[$this->id] ) ? $_POST[$this->id] : NULL ;\n\n\t\t// clean to copy and reset array indexes\n\t\t$this->_clean_tocopy($new_data);\n\n\t\tif (empty($new_data))\n\t\t{\n\t\t\t$new_data = NULL;\n\t\t}\n\n\t\t// filter: save\n\t\tif ($this->has_filter('save'))\n\t\t{\n\t\t\t$new_data = $this->apply_filters('save', $new_data, $real_post_id);\n\n\t\t\t/**\n\t\t\t * halt saving\n\t\t\t * @since 1.3.4\n\t\t\t */\n\t\t\tif (FALSE === $new_data) return $post_id;\n\n\t\t\t$this->_clean_tocopy($new_data);\n\t\t}\n\n\t\t// get current fields, use $real_post_id (checked for in both modes)\n\t\t$current_fields = get_post_meta($real_post_id, $this->id . '_fields', TRUE);\n\n\t\tif ($this->mode == WPALCHEMY_MODE_EXTRACT)\n\t\t{\n\t\t\t$new_fields = array();\n\n\t\t\tif (is_array($new_data))\n\t\t\t{\n\t\t\t\tforeach ($new_data as $k => $v)\n\t\t\t\t{\n\t\t\t\t\t$field = $this->prefix . $k;\n\t\t\t\t\t\n\t\t\t\t\tarray_push($new_fields,$field);\n\n\t\t\t\t\t$new_value = $new_data[$k];\n\n\t\t\t\t\tif (is_null($new_value))\n\t\t\t\t\t{\n\t\t\t\t\t\tdelete_post_meta($post_id, $field);\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tupdate_post_meta($post_id, $field, $new_value);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t$diff_fields = array_diff((array)$current_fields,$new_fields);\n\n\t\t\tif (is_array($diff_fields))\n\t\t\t{\n\t\t\t\tforeach ($diff_fields as $field)\n\t\t\t\t{\n\t\t\t\t\tdelete_post_meta($post_id,$field);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tdelete_post_meta($post_id, $this->id . '_fields');\n\n\t\t\tif ( ! empty($new_fields))\n\t\t\t{\n\t\t\t\tadd_post_meta($post_id,$this->id . '_fields', $new_fields, TRUE);\n\t\t\t}\n\n\t\t\t// keep data tidy, delete values if previously using WPALCHEMY_MODE_ARRAY\n\t\t\tdelete_post_meta($post_id, $this->id);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tif (is_null($new_data))\n\t\t\t{\n\t\t\t\tdelete_post_meta($post_id, $this->id);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tupdate_post_meta($post_id, $this->id, $new_data);\n\t\t\t}\n\n\t\t\t// keep data tidy, delete values if previously using WPALCHEMY_MODE_EXTRACT\n\t\t\tif (is_array($current_fields))\n\t\t\t{\n\t\t\t\tforeach ($current_fields as $field)\n\t\t\t\t{\n\t\t\t\t\tdelete_post_meta($post_id, $field);\n\t\t\t\t}\n\n\t\t\t\tdelete_post_meta($post_id, $this->id . '_fields');\n\t\t\t}\n\t\t}\n\n\t\t// action: save\n\t\tif ($this->has_action('save'))\n\t\t{\n\t\t\t$this->do_action('save', $new_data, $real_post_id);\n\t\t}\n\n\t\treturn $post_id;\n\t}\n\n\tprivate function _clean_tocopy(&$arr)\n\t{\n\t\tif(is_array($arr))\n\t\t{\n\t\t\tforeach ($arr as $key => $value)\n\t\t\t{\n\t\t\t\tif(is_array($value))\n\t\t\t\t{\n\t\t\t\t\t$this->_clean_tocopy($arr[$key]);\n\t\t\t\t\tif(array_key_exists('tocopy', $value))\n\t\t\t\t\t{\n\t\t\t\t\t\tunset($arr[$key]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!count($arr)) \n\t\t\t{\n\t\t\t\t$arr = array();\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t$keys = array_keys($arr);\n\n\t\t\t\t$is_numeric = TRUE;\n\n\t\t\t\tforeach ($keys as $key)\n\t\t\t\t{\n\t\t\t\t\tif (!is_numeric($key)) \n\t\t\t\t\t{\n\t\t\t\t\t\t$is_numeric = FALSE;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ($is_numeric)\n\t\t\t\t{\n\t\t\t\t\t$arr = array_values($arr);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n}\n\n/**\n * EOF\n */"
  },
  {
    "path": "classes/multiselectable.php",
    "content": "<?php\n\n/**\n * Implement this interface to state that the field control is Multi Selectable\n */\ninterface VP_MultiSelectable{}\n\n/**\n * EOF\n */"
  },
  {
    "path": "classes/option/control/field/impexp.php",
    "content": "<?php\n\nclass VP_Option_Control_Field_ImpExp extends VP_Control_Field\n{\n\n\tpublic function __construct()\n\t{\n\t\tparent::__construct();\n\t}\n\n\tpublic static function withArray($arr = array(), $class_name = null)\n\t{\n\t\tif(is_null($class_name))\n\t\t\t$instance = new self();\n\t\telse\n\t\t\t$instance = new $class_name;\n\t\t$instance->_basic_make($arr);\n\t\treturn $instance;\n\t}\n\n\tpublic function render()\n\t{\n\t\t$this->_setup_data();\n\t\treturn VP_View::instance()->load('option/impexp', $this->get_data());\n\t}\n\n}\n\n/**\n * EOF\n */"
  },
  {
    "path": "classes/option/control/field/restore.php",
    "content": "<?php\n\nclass VP_Option_Control_Field_Restore extends VP_Control_Field\n{\n\n\tpublic function __construct()\n\t{\n\t\tparent::__construct();\n\t}\n\n\tpublic static function withArray($arr = array(), $class_name = null)\n\t{\n\t\tif(is_null($class_name))\n\t\t\t$instance = new self();\n\t\telse\n\t\t\t$instance = new $class_name;\n\t\t$instance->_basic_make($arr);\n\t\treturn $instance;\n\t}\n\n\tpublic function render()\n\t{\n\t\t$this->_setup_data();\n\t\treturn VP_View::instance()->load('option/restore', $this->get_data());\n\t}\n\n}\n\n/**\n * EOF\n */"
  },
  {
    "path": "classes/option/control/group/menu.php",
    "content": "<?php\n\nclass VP_Option_Control_Group_Menu extends VP_Option_Control_Group\n{\n\n\t/**\n\t * Collection of $_menu\n\t * @var VP_Option_Control_Group\n\t */\t\n\tprivate $_menus;\n\n\t/**\n\t * Collection of controls\n\t * @var VP_Control_Field\n\t */\t\n\tprivate $_controls;\n\n\tprivate $_icon;\n\n\tpublic function __construct()\n\t{\n\t\tparent::__construct();\n\t\t$this->_menus    = array();\n\t\t$this->_controls = array();\n\t}\n\n\tpublic function render($extra = array())\n\t{\n\t\t// Setup data\n\t\t$this->_setup_data();\n\t\t$this->add_data('menu', $this);\n\t\tforeach ($extra as $key => $value)\n\t\t{\n\t\t\t$this->add_data($key, $value);\n\t\t}\n\t\treturn VP_View::instance()->load('option/menu', $this->get_data());\n\t}\n\n\tpublic function add_menu($menu)\n\t{\n\t\t$this->_menus[] = $menu;\n\t}\n\n\t/**\n\t * Getter of $_menus\n\t *\n\t * @return Array Collection of menus object\n\t */\n\tpublic function get_menus() {\n\t\treturn $this->_menus;\n\t}\n\t\n\t/**\n\t * Setter of $_menus\n\t *\n\t * @param Array $_menus Collection of menus object\n\t */\n\tpublic function set_menus($_menus)\n\t{\n\t\t$this->_menus = $_menus;\n\t\treturn $this;\n\t}\n\n\tpublic function add_control($control)\n\t{\n\t\t$this->_controls[] = $control;\n\t}\n\n\t/**\n\t * Getter of controls\n\t *\n\t * @return Array Collection of controls object\n\t */\n\tpublic function get_controls()\n\t{\n\t\treturn $this->_controls;\n\t}\n\t\n\t/**\n\t * Setter of controls\n\t *\n\t * @param Array $_controls Collection of controls object\n\t */\n\tpublic function set_controls($_controls)\n\t{\n\t\t$this->_controls = $_controls;\n\t\treturn $this;\n\t}\n\n\t/**\n\t * Get menu icon\n\t *\n\t * @return String Icon URL\n\t */\n\tpublic function get_icon() {\n\t    return $this->_icon;\n\t}\n\t\n\t/**\n\t * Set menu icon\n\t *\n\t * @param String $_icon Icon URL\n\t */\n\tpublic function set_icon($_icon) {\n\t    $this->_icon = $_icon;\n\t    return $this;\n\t}\n\n}"
  },
  {
    "path": "classes/option/control/group/section.php",
    "content": "<?php\n\nclass VP_Option_Control_Group_Section extends VP_Option_Control_Group\n{\n\n\t/**\n\t * Collection of fields\n\t * @var VP_Control_Field\n\t */\t\n\tprivate $_fields;\n\n\t/**\n\t * dependency pattern string\n\t * @var String\n\t */\n\tprotected $_dependency;\n\n\t/**\n\t * Whether to hide this control in first rendering\n\t */\n\tprotected $_is_hidden;\n\n\tpublic function __construct()\n\t{\n\t\tparent::__construct();\n\t\t$this->_fields = array();\n\t}\n\n\tpublic function render($extra = array())\n\t{\n\t\t// Setup data\n\t\t$this->_setup_data();\n\n\t\tif($this->is_hidden())\n\t\t{\n\t\t\t$this->add_container_extra_classes('vp-hide');\n\t\t}\n\n\t\t$this->add_data('section', $this);\n\t\t$this->add_data('container_extra_classes', implode(' ', $this->get_container_extra_classes()));\n\n\t\tforeach ($extra as $key => $value)\n\t\t{\n\t\t\t$this->add_data($key, $value);\n\t\t}\n\t\treturn VP_View::instance()->load('option/section', $this->get_data());\n\t}\n\n\tpublic function add_field($field)\n\t{\n\t\t$this->_fields[] = $field;\n\t}\n\n\t/**\n\t * Getter of fields\n\t *\n\t * @return Array Collection of fields object\n\t */\n\tpublic function get_fields() {\n\t\treturn $this->_fields;\n\t}\n\t\n\t/**\n\t * Setter of fields\n\t *\n\t * @param Array $_fields Collection of fields object\n\t */\n\tpublic function set_fields($_fields) {\n\t\t$this->_fields = $_fields;\n\t\treturn $this;\n\t}\n\n\t/**\n\t * Getter for $_dependency\n\t *\n\t * @return String dependency pattern in string\n\t */\n\tpublic function get_dependency() {\n\t\treturn $this->_dependency;\n\t}\n\t\n\t/**\n\t * Setter for $_dependency\n\t *\n\t * @param String $_dependency dependency pattern in string\n\t */\n\tpublic function set_dependency($_dependency) {\n\t\t$this->_dependency = $_dependency;\n\t\treturn $this;\n\t}\n\n\t/**\n\t * Get is_hidden status, will set the status if a boolean passed\n\t *\n\t * @return bool is_hidden status\n\t */\n\tpublic function is_hidden($_is_hidden = null) {\n\t\tif(!is_null($_is_hidden))\n\t    \t$this->_is_hidden = (bool) $_is_hidden;\n\t\treturn $this->_is_hidden;\n\t}\n\n}"
  },
  {
    "path": "classes/option/control/group.php",
    "content": "<?php\n\nabstract class VP_Option_Control_Group\n{\n\n\n\tprotected $_name;\n\n\tprotected $_title;\n\n\tprotected $_description;\n\n\tprotected $_data;\n\n\t/**\n\t * Extra Classes for the container\n\t * @var Array\n\t */\n\tprotected $_container_extra_classes;\n\n\n\tpublic function __construct()\n\t{\n\t\t$this->_container_extra_classes = array();\n\t}\n\n\tpublic abstract function render($extra = array());\n\n\tprotected function _setup_data(){}\n\n\t/**\n\t * Getter of $_name\n\t *\n\t * @return String Group unique name\n\t */\n\tpublic function get_name() {\n\t\treturn $this->_name;\n\t}\n\t\n\t/**\n\t * Setter of $_name\n\t *\n\t * @param String $_name Group unique name\n\t */\n\tpublic function set_name($_name) {\n\t\t$this->_name = $_name;\n\t\treturn $this;\n\t}\n\n\t/**\n\t * Getter of title\n\t *\n\t * @return String Group title\n\t */\n\tpublic function get_title() {\n\t\treturn $this->_title;\n\t}\n\t\n\t/**\n\t * Setter of title\n\t *\n\t * @param String $_title Group title\n\t */\n\tpublic function set_title($_title) {\n\t\t$this->_title = $_title;\n\t\treturn $this;\n\t}\n\n\n\t/**\n\t * Getter of $_description\n\t *\n\t * @return String Group description\n\t */\n\tpublic function get_description() {\n\t\treturn $this->_description;\n\t}\n\t\n\t/**\n\t * Setter of $_description\n\t *\n\t * @param String $_description Group description\n\t */\n\tpublic function set_description($_description) {\n\t\t$this->_description = $_description;\n\t\treturn $this;\n\t}\n\n\t/**\n\t * Add value to render data array\n\t * @param Mixed $item Value to be added to render data arary\n\t */\n\tpublic function add_data($key, $value)\n\t{\n\t\t$this->_data[$key] = $value;\n\t}\n\n\t/**\n\t * Get render data\n\t *\n\t * @return Array Render data array\n\t */\n\tpublic function get_data() {\n\t    return $this->_data;\n\t}\n\t\n\t/**\n\t * Set render data\n\t *\n\t * @param Array $_data Render data array\n\t */\n\tpublic function set_data($_data) {\n\t    $this->_data = $_data;\n\t    return $this;\n\t}\n\n\t/**\n\t * Getter of $_container_extra_classes\n\t *\n\t * @return Array of Extra Classes for the container\n\t */\n\tpublic function get_container_extra_classes() {\n\t\treturn $this->_container_extra_classes;\n\t}\n\t\n\t/**\n\t * Setter of $_container_extra_classes\n\t *\n\t * @param Array $_container_extra_classes Extra Classes for the container\n\t */\n\tpublic function set_container_extra_classes($_container_extra_classes) {\n\t\t$this->_container_extra_classes = $_container_extra_classes;\n\t\treturn $this;\n\t}\n\n\tpublic function add_container_extra_classes($class)\n\t{\n\t\tif(is_array($class))\n\t\t{\n\t\t\t$this->_container_extra_classes = array_merge($this->_container_extra_classes, $class);\n\t\t}\n\t\telse if(!in_array($class, $this->_container_extra_classes))\n\t\t{\n\t\t\t$this->_container_extra_classes[] = $class;\n\t\t}\n\t\treturn $this->_container_extra_classes;\n\t}\n\n}"
  },
  {
    "path": "classes/option/control/set.php",
    "content": "<?php\n\nclass VP_Option_Control_Set\n{\n\n\tconst SAVE_SUCCESS   = 1;\n\n\tconst SAVE_NOCHANGES = 2;\n\n\tconst SAVE_FAILED    = 3;\n\n\tprivate $_menus;\n\n\tprivate $_title;\n\n\tprivate $_logo;\n\n\tprivate $_layout;\n\n\tpublic function __construct()\n\t{\n\t\t$this->_menus = array();\n\t}\n\n\tpublic function render()\n\t{\n\t\t// Setup data\n\t\t$data = array('set' => $this);\n\t\treturn VP_View::instance()->load('option/set', $data);\n\t}\n\n\t/**\n\t * Get Option Set Title\n\t *\n\t * @return String Option set title\n\t */\n\tpublic function get_title() {\n\t\treturn $this->_title;\n\t}\n\t\n\t/**\n\t * Set Option Set title\n\t *\n\t * @param String $_title Option set title\n\t */\n\tpublic function set_title($_title) {\n\t\t$this->_title = $_title;\n\t\treturn $this;\n\t}\n\n\t/**\n\t * Set _layout\n\t *\n\t * @return String _layout\n\t */\n\tpublic function get_layout()\n\t{\n\t\treturn $this->_layout;\n\t}\n\t\n\t/**\n\t * Get _layout\n\t *\n\t * @param String $_layout _layout\n\t */\n\tpublic function set_layout($_layout)\n\t{\n\t\t$this->_layout = $_layout;\n\t\treturn $this;\n\t}\n\n\t/**\n\t * Get logo\n\t *\n\t * @return String Logo URL\n\t */\n\tpublic function get_logo() {\n\t\treturn $this->_logo;\n\t}\n\t\n\t/**\n\t * Set logo\n\t *\n\t * @param String $_logo Logo URL\n\t */\n\tpublic function set_logo($_logo) {\n\t\t$this->_logo = $_logo;\n\t\treturn $this;\n\t}\n\n\tpublic function add_menu($menu)\n\t{\n\t\t$this->_menus[] = $menu;\n\t}\n\n\t/**\n\t * Getter of $_menus\n\t *\n\t * @return Array Collection of menus object\n\t */\n\tpublic function get_menus() {\n\t\treturn $this->_menus;\n\t}\n\t\n\t/**\n\t * Setter of $_menus\n\t *\n\t * @param Array $_menus Collection of menus object\n\t */\n\tpublic function set_menus($_menus) {\n\t\t$this->_menus = $_menus;\n\t\treturn $this;\n\t}\n\n\tpublic function get_fields($include_section = false)\n\t{\n\t\tif(!function_exists('loop_controls'))\n\t\t{\n\t\t\tfunction loop_controls($menu, $include_section)\n\t\t\t{\n\t\t\t\t$fields = array();\n\t\t\t\tforeach ( $menu->get_controls() as $control )\n\t\t\t\t{\n\t\t\t\t\tif( get_class($control) === 'VP_Option_Control_Group_Section' )\n\t\t\t\t\t{\n\t\t\t\t\t\tif($include_section)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t$fields[$control->get_name()] = $control;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tforeach ( $control->get_fields() as $field )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif( VP_Util_Reflection::field_type_from_class(get_class($field)) != 'impexp' )\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t$fields[$field->get_name()] = $field;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tif( VP_Util_Reflection::field_type_from_class(get_class($control)) != 'impexp' )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t$fields[$control->get_name()] = $control;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn $fields;\n\t\t\t}\n\t\t}\n\n\t\t$fields = array();\n\n\t\tforeach ( $this->_menus as $menu )\n\t\t{\n\t\t\t$submenus = $menu->get_menus();\n\t\t\tif( !empty($submenus) )\n\t\t\t{\n\t\t\t\tforeach ( $submenus as $submenu )\n\t\t\t\t{\n\t\t\t\t\t$fields = array_merge($fields, loop_controls($submenu, $include_section));\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t$fields = array_merge($fields, loop_controls($menu, $include_section));\n\t\t\t}\n\t\t}\n\t\treturn $fields;\n\t}\n\n\tpublic function get_field_types()\n\t{\n\t\t$fields = $this->get_fields();\n\t\t$types  = array();\n\t\tforeach ($fields as $field)\n\t\t{\n\t\t\t$type = VP_Util_Reflection::field_type_from_class(get_class($field));\n\t\t\tif(!in_array($type, $types))\n\t\t\t\t$types[] = $type;\n\t\t}\n\t\treturn $types;\n\t}\n\n\tpublic function get_field($name)\n\t{\n\t\t$fields = $this->get_fields();\n\t\tif(array_key_exists($name, $fields))\n\t\t{\n\t\t\treturn $fields[$name];\n\t\t}\n\t\treturn null;\n\t}\n\n\tpublic function process_binding()\n\t{\n\t\t\n\t\t$fields = $this->get_fields();\n\n\t\tforeach ($fields as $field)\n\t\t{\n\t\t\t$bind = $field->get_binding();\n\t\t\t$val  = $field->get_value();\n\t\t\tif(!empty($bind) and is_null($val))\n\t\t\t{\n\t\t\t\t$bind   = explode('|', $bind);\n\t\t\t\t$func   = $bind[0];\n\t\t\t\t$params = $bind[1];\n\t\t\t\t$params = preg_split('/[\\s,]+/', $params);\n\t\t\t\t$values = array();\n\t\t\t\tforeach ($params as $param)\n\t\t\t\t{\n\t\t\t\t\tif(array_key_exists($param, $fields))\n\t\t\t\t\t{\n\t\t\t\t\t\t$values[] = $fields[$param]->get_value();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t$result = call_user_func_array($func, $values);\n\n\t\t\t\tif(VP_Util_Reflection::is_multiselectable($field))\n\t\t\t\t{\n\t\t\t\t\t$result = (array) $result;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tif(is_array($result))\n\t\t\t\t\t{\n\t\t\t\t\t\t$result = reset($result);\n\t\t\t\t\t}\n\t\t\t\t\t$result = (String) $result;\n\t\t\t\t}\n\t\t\t\t$field->set_value($result);\n\t\t\t}\n\n\t\t\tif($field instanceof VP_Control_FieldMulti)\n\t\t\t{\n\t\t\t\t$bind = $field->get_items_binding();\n\t\t\t\tif(!empty($bind))\n\t\t\t\t{\n\t\t\t\t\t$bind   = explode('|', $bind);\n\t\t\t\t\t$func   = $bind[0];\n\t\t\t\t\t$params = $bind[1];\n\t\t\t\t\t$params = preg_split('/[\\s,]+/', $params);\n\t\t\t\t\t$values = array();\n\t\t\t\t\tforeach ($params as $param)\n\t\t\t\t\t{\n\t\t\t\t\t\tif(array_key_exists($param, $fields))\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t$values[] = $fields[$param]->get_value();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t$items  = call_user_func_array($func, $values);\n\t\t\t\t\tif(is_array($items) && !empty($items))\n\t\t\t\t\t{\n\t\t\t\t\t\t$field->set_items(array());\n\t\t\t\t\t\t$field->add_items_from_array($items);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic function process_dependencies()\n\t{\n\t\t$fields = $this->get_fields(true);\n\n\t\tforeach ($fields as $field)\n\t\t{\n\t\t\t$dependency = $field->get_dependency();\n\t\t\tif(!empty($dependency))\n\t\t\t{\n\t\t\t\t$dependency = explode('|', $dependency);\n\t\t\t\t$func       = $dependency[0];\n\t\t\t\t$params     = $dependency[1];\n\t\t\t\t$params     = preg_split('/[\\s,]+/', $params);\n\t\t\t\t$values     = array();\n\t\t\t\tforeach ($params as $param)\n\t\t\t\t{\n\t\t\t\t\tif(array_key_exists($param, $fields))\n\t\t\t\t\t{\n\t\t\t\t\t\t$values[] = $fields[$param]->get_value();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t$result  = call_user_func_array($func, $values);\n\t\t\t\tif(!$result)\n\t\t\t\t{\n\t\t\t\t\t$field->add_container_extra_classes('vp-dep-inactive');\n\t\t\t\t\t$field->is_hidden(true);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\n\tpublic function normalize_values($opt_arr)\n\t{\n\t\t$fields = $this->get_fields();\n\n\t\tforeach ($opt_arr as $key => $value)\n\t\t{\n\t\t\tif(array_key_exists($key, $fields))\n\t\t\t{\n\t\t\t\t$is_multi = VP_Util_Reflection::is_multiselectable($fields[$key]);\n\t\t\t\tif( $is_multi and !is_array($value) )\n\t\t\t\t{\n\t\t\t\t\t$opt_arr[$key] = array($value);\n\t\t\t\t}\n\t\t\t\tif( !$is_multi and  is_array($value))\n\t\t\t\t{\n\t\t\t\t\t$opt_arr[$key] = '';\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn $opt_arr;\n\t}\n\n\tpublic function get_defaults()\n\t{\n\t\t$defaults = array();\n\t\t$fields   = $this->get_fields();\n\t\tforeach ( $fields as $field )\n\t\t{\n\t\t\t$defaults[$field->get_name()] = $field->get_default();\n\t\t}\n\t\treturn $defaults;\n\t}\n\n\tpublic function get_values()\n\t{\n\t\t$values = array();\n\t\t$fields = $this->get_fields();\n\t\tforeach ( $fields as $field )\n\t\t{\n\t\t\t$values[$field->get_name()] = $field->get_value();\n\t\t}\n\t\treturn $values;\n\t}\n\n\tpublic function setup($options)\n\t{\n\t\t// populate option to fields' values\n\t\t$this->populate_values($options);\n\n\t\t// process binding\n\t\t$this->process_binding();\n\n\t\t// process dependencies\n\t\t$this->process_dependencies();\n\t}\n\n\tpublic function save($option_key)\n\t{\n\t\t$opt = $this->get_values();\n\n\t\tdo_action('vp_option_set_before_save', $opt);\n\n\t\tif(update_option($option_key, $opt))\n\t\t{\n\t\t\t$result['status']  = true;\n\t\t\t$result['code']    = self::SAVE_SUCCESS;\n\t\t\t$result['message'] = __('Saving successful', 'vp_textdomain');\n\t\t\t$curr_opt = get_option($option_key, array());\n\t\t}\n\t\telse\n\t\t{\n\t\t\t$curr_opt = get_option($option_key, array());\n\t\t\t$changed  = $opt !== $curr_opt;\n\t\t\tif($changed)\n\t\t\t{\n\t\t\t\t$result['status']  = false;\n\t\t\t\t$result['code']    = self::SAVE_FAILED;\n\t\t\t\t$result['message'] = __('Saving failed', 'vp_textdomain');\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t$result['status']  = true;\n\t\t\t\t$result['code']    = self::SAVE_NOCHANGES;\n\t\t\t\t$result['message'] = __('No changes made', 'vp_textdomain');\n\t\t\t}\n\t\t}\n\n\t\tdo_action('vp_option_set_after_save', $curr_opt, $result['status'], $option_key);\n\n\t\treturn $result;\n\t}\n\n\tpublic function populate_values($opt, $force_update = false)\n\t{\n\t\t$fields = $this->get_fields();\n\t\tforeach ( $fields as $field )\n\t\t{\n\t\t\t$is_multi = VP_Util_Reflection::is_multiselectable($field);\n\t\t\tif( array_key_exists($field->get_name(), $opt) )\n\t\t\t{\n\t\t\t\tif( $is_multi and is_array($opt[$field->get_name()]) )\n\t\t\t\t{\n\t\t\t\t\t$field->set_value($opt[$field->get_name()]);\n\t\t\t\t}\n\t\t\t\tif( !$is_multi and !is_array($opt[$field->get_name()]) )\n\t\t\t\t{\n\t\t\t\t\t$field->set_value($opt[$field->get_name()]);\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tif($force_update)\n\t\t\t\t{\n\t\t\t\t\tif($is_multi)\n\t\t\t\t\t{\n\t\t\t\t\t\t$field->set_value(array());\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\t$field->set_value('');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n}\n\n/**\n * EOF\n */"
  },
  {
    "path": "classes/option/depsloader.php",
    "content": "<?php\n\nclass VP_Option_Depsloader\n{\n\n\t/**\n\t * The VP_Option_Set object!\n\t */\n\tprivate $things;\n\n\tpublic function __construct($things)\n\t{\n\t\t$this->things = $things;\n\t}\n\n\tpublic function build()\n\t{\n\n\t\t$set = $this->things;\n\n\t\t$result = array(\n\t\t\t'scripts'              => array(),\n\t\t\t'styles'               => array(),\n\t\t\t'localize_name'        => 'vp_opt',\n\t\t\t'localize_default'     => array(\n\t\t\t\t'nonce', 'impexp_msg'\n\t\t\t),\n\t\t\t'localize'             => array(\n\t\t\t\t'name' => 'vpt_option'\n\t\t\t),\n\t\t\t'use_upload'           => false,\n\t\t\t'use_new_media_upload' => false,\n\t\t\t'main_js'  => array(\n\t\t\t\t'name' => 'vp-option',\n\t\t\t\t'path' => VP_PUBLIC_URL . '/js/option.min.js',\n\t\t\t),\n\t\t\t'main_css' => array(\n\t\t\t\t'name' => 'vp-option',\n\t\t\t\t'path' => VP_PUBLIC_URL . '/css/option.min.css'\n\t\t\t),\n\t\t);\n\n\t\t$result['scripts'] = VP_Util_Config::instance()->load('dependencies', 'scripts.always');\n\t\t$result['styles']  = VP_Util_Config::instance()->load('dependencies', 'styles.always');\n\n\t\t$scripts = VP_Util_Config::instance()->load('dependencies', 'scripts.paths');\n\t\t$styles  = VP_Util_Config::instance()->load('dependencies', 'styles.paths');\n\t\t$rules   = VP_Util_Config::instance()->load('dependencies', 'rules');\n\n\t\t$fields  = $set->get_fields();\n\t\tforeach ($fields as $field)\n\t\t{\n\t\t\t$type = VP_Util_Reflection::field_type_from_class(get_class($field));\n\t\t\tif( array_key_exists($type, $rules) )\n\t\t\t{\n\t\t\t\t$result['scripts'] = array_merge($result['scripts'], $rules[$type]['js']);\n\t\t\t\t$result['styles']  = array_merge($result['styles'], $rules[$type]['css']);\n\t\t\t}\n\t\t\t// check if using upload button\n\t\t\tif( $type == 'upload' )\n\t\t\t{\n\t\t\t\t$result['use_upload'] = true;\n\t\t\t}\n\t\t}\n\t\t$result['scripts'] = array_unique($result['scripts']);\n\t\t$result['styles']  = array_unique($result['styles']);\n\n\t\treturn $result;\n\t}\n\n\tpublic function can_output($hook_suffix = '')\n\t{\n\t\t// if not in option page, don't load\n\t\t$menu_page_slug = VP_Util_Config::instance()->load('option', 'menu_page_slug');\n\t\tif( $hook_suffix == ('appearance_page_' . $menu_page_slug) )\n\t\t\treturn true;\n\t\treturn false;\n\t}\n\n}"
  },
  {
    "path": "classes/option/parser.php",
    "content": "<?php\n\nclass VP_Option_Parser\n{\n\n\tpublic function parse_array_options($arr, $auto_group_naming)\n\t{\n\n\t\t$set = new VP_Option_Control_Set();\n\n\t\tif(empty($arr['title']))\n\t\t\t$arr['title'] = 'Vafpress';\n\t\tif(empty($arr['logo']))\n\t\t\t$arr['logo']  = 'vp-logo.png';\n\n\t\t$set->set_title(isset($arr['title']) ? $arr['title'] : '')\n\t\t    ->set_logo(isset($arr['logo']) ? $arr['logo'] : '');\n\n\t\t$auto_menu_index  = 0;\n\t\t$auto_menu        = \"the_menu_\";\n\n\t\t// Loops trough all the menus\n\t\tif (!empty($arr['menus'])) foreach ($arr['menus'] as $menu)\n\t\t{\n\t\t\t// Create menu object and add to set\n\t\t\t$vp_menu = new VP_Option_Control_Group_Menu();\n\n\t\t\tif($auto_group_naming)\n\t\t\t{\n\t\t\t\tif(isset($menu['name']) and !empty($menu['name']))\n\t\t\t\t{\n\t\t\t\t\t$vp_menu->set_name($menu['name']);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\t$vp_menu->set_name($auto_menu . $auto_menu_index);\n\t\t\t\t\t$auto_menu_index++;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t$vp_menu->set_title(isset($menu['title']) ? $menu['title'] : '')\n\t\t\t        ->set_icon(isset($menu['icon']) ? $menu['icon'] : '');\n\n\t\t\t$set->add_menu($vp_menu);\n\n\t\t\t// Loops through every submenu in each menu\n\t\t\tif (!empty($menu['menus']) and is_array($menu['menus'])) foreach ($menu['menus'] as $submenu)\n\t\t\t{\n\t\t\t\t$vp_submenu = new VP_Option_Control_Group_Menu();\n\n\t\t\t\tif($auto_group_naming)\n\t\t\t\t{\n\t\t\t\t\tif(isset($submenu['name']) and !empty($submenu['name']))\n\t\t\t\t\t{\n\t\t\t\t\t\t$vp_submenu->set_name($submenu['name']);\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\t$vp_submenu->set_name($auto_menu . $auto_menu_index);\n\t\t\t\t\t\t$auto_menu_index++;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t$vp_submenu->set_title(isset($submenu['title']) ? $submenu['title'] : '')\n\t\t\t\t           ->set_icon(isset($submenu['icon']) ? $submenu['icon'] : '');\n\n\t\t\t\t$vp_menu->add_menu($vp_submenu);\n\t\t\t\t\n\t\t\t\t// Loops through every control in each submenu\n\t\t\t\tif (!empty($submenu['controls'])) foreach ($submenu['controls'] as $control)\n\t\t\t\t{\n\t\t\t\t\tif($control['type'] === 'section')\n\t\t\t\t\t\t$control = $this->parse_section($control);\n\t\t\t\t\telse\n\t\t\t\t\t\t$control = $this->parse_field($control);\n\t\t\t\t\t$vp_submenu->add_control($control);\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t// Loops through every control in each submenu\n\t\t\t\tif (!empty($menu['controls']) and is_array($menu['controls'])) foreach ($menu['controls'] as $control)\n\t\t\t\t{\n\t\t\t\t\tif($control['type'] === 'section')\n\t\t\t\t\t\t$control = $this->parse_section($control);\n\t\t\t\t\telse\n\t\t\t\t\t\t$control = $this->parse_field($control);\n\t\t\t\t\t$vp_menu->add_control($control);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn $set;\n\t}\n\n\tprivate function parse_section($section)\n\t{\n\t\t$vp_sec = new VP_Option_Control_Group_Section();\n\t\t$vp_sec->set_name(isset($section['name']) ? $section['name'] : '')\n\t\t       ->set_title(isset($section['title']) ? $section['title'] : '')\n\t\t       ->set_description(isset($section['description']) ? $section['description'] : '');\n\n\t\tif(isset($section['dependency']))\n\t\t{\n\t\t\t$func  = $section['dependency']['function'];\n\t\t\t$field = $section['dependency']['field'];\n\t\t\t$vp_sec->set_dependency($func . '|' . $field);\n\t\t}\n\n\t\t// Loops through every field in each submenu\n\t\tif (!empty($section['fields'])) foreach ($section['fields'] as $field)\n\t\t{\n\t\t\t$vp_field = $this->parse_field($field);\n\t\t\t$vp_sec->add_field($vp_field);\n\t\t}\n\t\treturn $vp_sec;\n\t}\n\n\tprivate function parse_field($field)\n\t{\n\t\t$class    = VP_Util_Reflection::field_class_from_type($field['type']);\n\t\t$vp_field = call_user_func(\"$class::withArray\", $field);\n\t\treturn $vp_field;\n\t}\n\n}\n\n/**\n * EOF\n */"
  },
  {
    "path": "classes/option.php",
    "content": "<?php\n\nclass VP_Option\n{\n\n\tprivate $_option_key;\n\n\tprivate $_page_slug;\n\n\tprivate $_template;\n\n\tprivate $_is_dev_mode;\n\n\tprivate $_use_util_menu;\n\n\tprivate $_use_auto_group_naming;\n\n\tprivate $_role;\n\n\tprivate $_menu_page;\n\n\tprivate $_page_title;\n\n\tprivate $_menu_label;\n\n\tprivate $_layout;\n\n\tprivate $_options_set = NULL;\n\t\n\tprivate $_options = NULL;\n\n\tprivate $_hook_suffix;\n\n\tpublic static $pool;\n\n\tpublic function __construct(array $configs)\n\t{\n\n\t\t// merge configs with default value\n\t\t$configs = array_merge(array(\n\t\t\t'is_dev_mode'           => false,\n\t\t\t'use_auto_group_naming' => true,\n\t\t\t'use_util_menu'         => true,\n\t\t\t'minimum_role'          => 'edit_theme_options',\n\t\t\t'menu_page'             => 'themes.php',\n\t\t\t'layout'                => 'fixed',\n\t\t\t'page_title'            => __( 'Vafpress Options', 'vp_textdomain' ),\n\t\t\t'menu_label'            => __( 'Vafpress Options', 'vp_textdomain' ),\n\t\t\t'priority'              => 10,\n\t\t), $configs);\n\n\t\t// options config filter\n\t\t$configs = apply_filters('vp_option_configuration_array'  , $configs, $configs['option_key']);\n\t\t$configs = apply_filters('vp_option_configuration_array-' . $configs['option_key'], $configs);\n\n\t\t// extract the configs\n\t\textract($configs);\n\n\t\t// check and set required configs\n\t\tif(isset($option_key)) $this->set_option_key($option_key);\n\t\telse throw new Exception(__( 'Option Key is required', 'vp_textdomain' ), 1);\n\t\tif(isset($template)) $this->set_template($template);\n\t\telse throw new Exception(__( 'Template Array/File is required', 'vp_textdomain' ), 1);\n\t\tif(isset($page_slug)) $this->set_page_slug($page_slug);\n\t\telse throw new Exception(__( 'Page Slug is required', 'vp_textdomain' ), 1);\n\n\t\t// swim in the pool\n\t\tself::$pool[$this->get_option_key()] = &$this;\n\t\t\n\t\t// check and set the remaining configs\n\t\tif(isset($menu_page))             $this->set_menu_page($menu_page);\n\t\tif(isset($is_dev_mode))           $this->is_dev_mode($is_dev_mode);\n\t\tif(isset($use_util_menu))         $this->use_util_menu($use_util_menu);\n\t\tif(isset($use_auto_group_naming)) $this->use_auto_group_naming($use_auto_group_naming);\n\t\tif(isset($minimum_role))          $this->set_minimum_role($minimum_role);\n\t\tif(isset($page_title))            $this->set_page_title($page_title);\n\t\tif(isset($layout))                $this->set_layout($layout);\n\t\tif(isset($menu_label))            $this->set_menu_label($menu_label);\n\n\t\t// add first_activation hook to save initial values to db\n\t\tadd_action('vp_option_first_activation', array($this, 'initial_db_setup'));\n\n\t\t// check if option key not existed init data from default values\n\t\t$options = get_option( $this->get_option_key() );\n\t\tif( $options === FALSE )\n\t\t{\n\t\t\tdo_action('vp_option_first_activation');\n\t\t}\n\n\t\t// init options from db and expose to the api\n\t\t$this->init_options_from_db();\n\n\t\t// setup ajax\n\t\tadd_action('wp_ajax_vp_ajax_' . $this->get_option_key() . '_export_option', array($this, 'ajax_export_option'));\n\t\tadd_action('wp_ajax_vp_ajax_' . $this->get_option_key() . '_import_option', array($this, 'ajax_import_option'));\n\t\tadd_action('wp_ajax_vp_ajax_' . $this->get_option_key() . '_save'         , array($this, 'ajax_save'));\n\t\tadd_action('wp_ajax_vp_ajax_' . $this->get_option_key() . '_restore'      , array($this, 'ajax_restore'));\n\n\t\t// register menu page\n\t\tadd_action( 'admin_menu', array($this, 'register_menu_page'), $priority );\n\t}\n\n\tpublic static function get_pool()\n\t{\n\t\treturn self::$pool;\n\t}\n\n\tpublic function init_options_from_db()\n\t{\n\t\t$options = get_option( $this->get_option_key() );\n\t\tif( $options !== FALSE )\n\t\t{\n\t\t\t$this->set_options($options);\n\t\t}\n\t}\n\n\t// register menu page as configured\n\tpublic function register_menu_page()\n\t{\n\t\tif( is_array( $this->get_menu_page() ) )\n\t\t{\n\t\t\t$menu_page = $this->get_menu_page();\n\n\t\t\t// check and set required configs\n\t\t\tif(!isset($menu_page['icon_url'])) $menu_page['icon_url'] = '';\n\t\t\tif(!isset($menu_page['position'])) $menu_page['position'] = null;\n\n\t\t\t$hook_suffix = add_menu_page(\n\t\t\t\t$this->get_page_title(),\n\t\t\t\t$this->get_menu_label(),\n\t\t\t\t$this->get_minimum_role(),\n\t\t\t\t$this->get_page_slug(),\n\t\t\t\tarray($this, 'option_page_display'),\n\t\t\t\t$menu_page['icon_url'],\n\t\t\t\t$menu_page['position']\n\t\t\t);\n\t\t}\n\t\telse\n\t\t{\n\t\t\t$hook_suffix = add_submenu_page(\n\t\t\t\t$this->get_menu_page(),\n\t\t\t\t$this->get_page_title(),\n\t\t\t\t$this->get_menu_label(),\n\t\t\t\t$this->get_minimum_role(),\n\t\t\t\t$this->get_page_slug(),\n\t\t\t\tarray($this, 'option_page_display')\n\t\t\t);\n\t\t}\n\t\t$this->set_hook_suffix($hook_suffix);\n\n\t\t// register option page load\n\t\tadd_action( 'load-' . $this->get_hook_suffix(), array($this, 'setup') );\n\t}\n\n\tpublic function setup()\n\t{\n\t\t$this->init_options_set();\n\t\t$this->init_options();\n\t\t$this->enqueue_scripts_and_styles();\n\t\t// show dev mode notice\n\t\tif( $this->is_dev_mode() )\n\t\t\tadd_action( 'admin_notices', array( $this, 'dev_mode_notice' ) );\n\t}\n\n\tpublic function dev_mode_notice()\n\t{\n\t\tVP_WP_Util::admin_notice(__(\"Development Mode is Active, options' values won't be saved into database.\", 'vp_textdomain'), false);\n\t}\n\n\tpublic function enqueue_scripts_and_styles()\n\t{\t\n\t\t$opt_loader = VP_WP_Loader::instance();\n\t\t$opt_loader->add_types( $this->get_field_types(), 'option' );\n\t\t$opt_loader->add_main_js( 'vp-option' );\n\t\t$opt_loader->add_main_css( 'vp-option' );\n\t\t$opt_loader->add_js_data( 'vp-option', 'custom_local.name', $this->_option_key );\n\t\t$opt_loader->add_js_data( 'vp-option', 'custom_local.SAVE_SUCCESS', VP_Option_Control_Set::SAVE_SUCCESS );\n\t\t$opt_loader->add_js_data( 'vp-option', 'custom_local.SAVE_NOCHANGES', VP_Option_Control_Set::SAVE_NOCHANGES );\n\t\t$opt_loader->add_js_data( 'vp-option', 'custom_local.SAVE_FAILED', VP_Option_Control_Set::SAVE_FAILED );\n\t}\n\n\tfunction save_and_reinit()\n\t{\n\t\t// do saving\n\t\t$result = $this->get_options_set()->save($this->get_option_key());\n\n\t\t// re-init $opt\n\t\t$this->init_options_from_db();\n\n\t\t// get the new $opt\n\t\t$opt = $this->get_options_set()->get_values();\n\n\t\t// save and re-init action hook\n\t\tdo_action('vp_option_save_and_reinit', $opt, $result['status'], $this->get_option_key());\n\n\t\t// option key specific save and re-init action hook\n\t\tdo_action('vp_option_save_and_reinit-' . $this->get_option_key(), $opt, $result['status']);\n\n\t\treturn $result;\n\t}\n\n\tfunction ajax_save()\n\t{\n\t\t$result = $this->vp_verify_nonce();\n\t\t\n\t\tif($result['status'])\n\t\t{\n\t\t\t$this->init_options_set();\n\t\t\t$this->init_options();\n\n\t\t\t$option  = $_POST['option'];\n\t\t\t$nonce   = $_POST['nonce'];\n\n\t\t\t$option  = VP_Util_Array::unite( $option, 'name', 'value' );\n\t\t\t$option  = $this->get_options_set()->normalize_values($option);\n\n\t\t\t// stripslashes added by WP in $_GET / $_POST\n\t\t\t$option  = stripslashes_deep($option);\n\n\t\t\t// get old options from set\n\t\t\t$old_opt = $this->get_options_set()->get_values();\n\n\t\t\t$this->get_options_set()->populate_values($option, true);\n\n\t\t\t// get back options from set\n\t\t\t$opt = $this->get_options_set()->get_values();\n\n\t\t\t// before ajax save action hook\n\t\t\tdo_action('vp_option_before_ajax_save', $opt);\n\n\t\t\t// save and re-init options\n\t\t\t$result = $this->save_and_reinit();\n\n\t\t\t// after ajax save action hook\n\t\t\tdo_action('vp_option_after_ajax_save', $opt, $old_opt, $result['status'], $this->get_option_key());\n\n\t\t\t// option key specific after ajax save action hook\n\t\t\tdo_action('vp_option_after_ajax_save-' . $this->get_option_key(), $opt, $old_opt, $result['status']);\n\t\t}\n\n\t\tif (ob_get_length()) ob_clean();\n\t\theader('Content-type: application/json');\n\t\techo json_encode($result);\n\t\tdie();\n\t}\n\n\tfunction ajax_restore()\n\t{\n\t\t$result = $this->vp_verify_nonce();\n\t\t\n\t\tif( $result['status'] )\n\t\t{\n\t\t\t$this->init_options_set();\n\t\t\t$set     = $this->get_options_set();\n\t\t\t$options = $set->get_defaults();\n\n\t\t\t// get old options from set\n\t\t\t$old_opt = $this->get_options_set()->get_values();\n\n\t\t\t// set options so that default value can be accessed in binding done in `setup`\n\t\t\t$this->set_options($options);\n\n\t\t\t// setup and process values\n\t\t\t$set->setup($options);\n\n\t\t\t// before ajax save action hook\n\t\t\tdo_action('vp_option_before_ajax_restore', $options);\n\n\t\t\t// save and re-init options\n\t\t\t$result  = $this->save_and_reinit();\n\n\t\t\t$options = $this->get_options_set()->get_values();\n\n\t\t\t// after ajax restore action hook\n\t\t\tdo_action('vp_option_after_ajax_restore', $options, $old_opt, $result['status'], $this->get_option_key());\n\n\t\t\t// after ajax restore action hook\n\t\t\tdo_action('vp_option_after_ajax_restore-' . $this->get_option_key(), $options, $old_opt, $result['status']);\n\t\t}\n\n\t\tif (ob_get_length()) ob_clean();\n\t\theader('Content-type: application/json');\n\t\techo json_encode($result);\n\t\tdie();\n\t}\n\n\tfunction ajax_import_option()\n\t{\n\t\tglobal $vp_set, $vp_config;\n\n\t\t$options = null;\n\t\t$old_opt = null;\n\n\t\t$result = $this->vp_verify_nonce();\n\t\t\n\t\tif($result['status'])\n\t\t{\n\t\t\t$this->init_options_set();\n\t\t\t$this->init_options();\n\n\t\t\t$option = $_POST['option'];\n\n\t\t\tif(empty($option))\n\t\t\t{\n\t\t\t\t$result['status']  = false;\n\t\t\t\t$result['message'] = __(\"Can not be empty\", 'vp_textdomain');\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t$option = json_decode(stripslashes($option), true);\n\n\t\t\t\tif( is_array($option) )\n\t\t\t\t{\n\t\t\t\t\t$set = $this->get_options_set();\n\t\t\t\t\t\n\t\t\t\t\t// get old options from set\n\t\t\t\t\t$old_opt = $this->get_options_set()->get_values();\n\n\t\t\t\t\t// populate new values\n\t\t\t\t\t$set->populate_values($option, false);\n\n\t\t\t\t\t// save and re-init options\n\t\t\t\t\t$result  = $this->save_and_reinit();\n\n\t\t\t\t\t// get new options\n\t\t\t\t\t$options = $this->get_options_set()->get_values();\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\t$result['status']  = false;\n\t\t\t\t\t$result['message'] = __(\"Invalid data\", 'vp_textdomain');\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// after ajax import action hook\n\t\tdo_action('vp_option_after_ajax_import', $options, $old_opt, $result['status'], $this->get_option_key());\n\n\t\t// after ajax import action hook\n\t\tdo_action('vp_option_after_ajax_import-' . $this->get_option_key(), $options, $old_opt, $result['status']);\n\n\t\tif (ob_get_length()) ob_clean();\n\t\theader('Content-type: application/json');\n\t\techo json_encode($result);\n\t\tdie();\n\t}\n\n\tfunction ajax_export_option()\n\t{\n\t\tglobal $wpdb;\n\n\t\t$sr_options = null;\n\t\t$db_options = null;\n\n\t\t$result = $this->vp_verify_nonce();\n\n\t\tif($result['status'])\n\t\t{\n\t\t\t$db_options = get_option($this->get_option_key());\n\t\t\t$sr_options = json_encode($db_options);\n\n\t\t\t$result = array(\n\t\t\t\t'status' => true,\n\t\t\t\t'message'=> __(\"Successful\", 'vp_textdomain'),\n\t\t\t\t'option' => $sr_options,\n\t\t\t);\n\t\t}\n\n\t\t// after ajax export action hook\n\t\tdo_action('vp_option_after_ajax_export', $db_options, $sr_options, $result['status'], $this->get_option_key());\n\n\t\t// after ajax export action hook\n\t\tdo_action('vp_option_after_ajax_export-' . $this->get_option_key(), $db_options, $sr_options, $result['status']);\n\n\n\t\tif (ob_get_length()) ob_clean();\n\t\theader('Content-type: application/json');\n\t\techo json_encode($result);\n\t\tdie();\n\t}\n\n\tfunction vp_verify_nonce()\n\t{\n\t\t$nonce  = $_POST['nonce'];\n\t\t$verify = check_ajax_referer('vafpress', 'nonce', false);\n\t\tif($verify)\n\t\t{\n\t\t\t$result['status']  = true;\n\t\t\t$result['message'] = __(\"Successful\", 'vp_textdomain');\t\n\t\t}\n\t\telse\n\t\t{\n\t\t\t$result['status']  = false;\n\t\t\t$result['message'] = __(\"Unverified Access\", 'vp_textdomain');\n\t\t}\n\t\treturn $result;\n\t}\n\n\tfunction initial_db_setup()\n\t{\n\t\t// init set and options\n\t\t$this->init_options();\n\t\t$set = $this->get_options_set();\n\n\t\t// get baked values from options set\n\t\t$opt = $set->get_values();\n\n\t\t// before db options db action hook\n\t\tdo_action('vp_option_before_db_init', $opt);\n\n\t\t// save to db\n\t\t$result = $this->save_and_reinit();\n\n\t\t// after db options db action hook\n\t\tdo_action('vp_option_after_db_init', $opt, $result['status'], $this->get_option_key());\n\t\tdo_action('vp_option_after_db_init-' . $this->get_option_key(), $opt, $result['status']);\n\t}\n\n\tpublic function init_options()\n\t{\n\t\t$this->init_options_set();\n\t\t$set = $this->get_options_set();\n\n\t\t// try load option from DB\n\t\t$db_options = get_option($this->get_option_key());\n\t\t$default    = $set->get_defaults();\n\t\tif (!empty($db_options))\n\t\t{\n\t\t\t// unify, preserve option from DB but appends anything new from default\n\t\t\t$options = $db_options;\n\t\t\t$options = $options + $default;\n\t\t}\n\t\telse\n\t\t{\n\t\t\t$options = $set->get_defaults();\n\t\t}\n\n\t\t// If dev mode, always use default, no db interaction\n\t\tif($this->is_dev_mode())\n\t\t\t$options = $set->get_defaults();\n\n\t\t// set options so that default value can be accessed in binding done in `setup`\n\t\t$this->set_options($options);\n\n\t\t// setup and process values\n\t\t$set->setup($options);\n\t\t\n\t}\n\n\tpublic function init_options_set()\n\t{\n\t\tif(!is_null($this->get_options_set()))\n\t\t\treturn;\n\n\t\tif( is_string($this->get_template()) and is_file($this->get_template()) )\n\t\t\t$template = include $this->get_template();\n\t\telse if(is_array($this->get_template()))\n\t\t\t$template = $this->get_template();\n\t\telse\n\t\t\tthrow new Exception(__( 'Invalid template supplied', 'vp_textdomain' ), 1);\n\n\t\t$parser = new VP_Option_Parser();\n\t\t$set    = $parser->parse_array_options($template, $this->use_auto_group_naming());\n\t\t$set->set_layout($this->get_layout());\n\n\t\t// assign set object\n\t\t$this->set_options_set($set);\n\n\t\tif( $this->use_util_menu() )\n\t\t{\n\t\t\t// setup utility menu\n\t\t\t$util_menu = new VP_Option_Control_Group_Menu();\n\t\t\t$util_menu->set_title(__('Utility', 'vp_textdomain'));\n\t\t\t$util_menu->set_name('menu_util');\n\t\t\t$util_menu->set_icon('font-awesome:fa-ambulance');\n\n\t\t\t// setup restore default section\n\t\t\t$restore_section = new VP_Option_Control_Group_Section();\n\t\t\t$restore_section->set_title(__('Restore Default', 'vp_textdomain'));\n\t\t\t$restore_section->set_name('section_restore');\n\n\t\t\t// setup restore button\n\t\t\t$restore_button = new VP_Option_Control_Field_Restore();\n\t\t\t$restore_section->add_field($restore_button);\n\n\t\t\t// setup exim section\n\t\t\t$exim_section = new VP_Option_Control_Group_Section();\n\t\t\t$exim_section->set_title(__('Export/Import', 'vp_textdomain'));\n\t\t\t$exim_section->set_name('section_exim');\n\n\t\t\t// setup exim field\n\t\t\t$exim_field = new VP_Option_Control_Field_ImpExp();\n\t\t\t$exim_section->add_field($exim_field);\n\n\t\t\t// add exim section\n\t\t\t$util_menu->add_control($exim_section);\n\n\t\t\t$util_menu->add_control($restore_section);\n\t\t\t$set->add_menu($util_menu);\n\t\t}\n\t}\n\n\tpublic function option_page_display()\n\t{\n\t\techo $this->get_options_set()->render();\n\t}\n\n\tpublic function get_field_types()\n\t{\n\t\t// $this->init_options_set();\n\t\treturn $this->get_options_set()->get_field_types();\n\t}\n\n\t// @todo return `vp_option` like function\n\tpublic function create_get_option_helper()\n\t{\n\n\t}\n\n\t//////////////////////////////\n\t// GETTER AND SETTER CHUNKS //\n\t//////////////////////////////\n\n\t/**\n\t * Get _hook_suffix\n\t *\n\t * @return String _hook_suffix\n\t */\n\tpublic function get_hook_suffix()\n\t{\n\t\treturn $this->_hook_suffix;\n\t}\n\n\t/**\n\t * Set _hook_suffix\n\t *\n\t * @param String $_hook_suffix _hook_suffix\n\t */\n\tpublic function set_hook_suffix($_hook_suffix)\n\t{\n\t\t$this->_hook_suffix = $_hook_suffix;\n\t\treturn $this;\n\t}\n\n\t/**\n\t * Get _template\n\t *\n\t * @return String _template\n\t */\n\tpublic function get_template()\n\t{\n\t\treturn $this->_template;\n\t}\n\n\t/**\n\t * Set _template\n\t *\n\t * @param String $_template _template\n\t */\n\tpublic function set_template($_template)\n\t{\n\t\t$this->_template = $_template;\n\t\treturn $this;\n\t}\n\n\t/**\n\t * Get _options\n\t *\n\t * @return String _options\n\t */\n\tpublic function get_options()\n\t{\n\t\treturn $this->_options;\n\t}\n\t\n\t/**\n\t * Set _options\n\t *\n\t * @param String $_options _options\n\t */\n\tpublic function set_options($_options)\n\t{\n\t\t$this->_options = $_options;\n\t\treturn $this;\n\t}\n\n\t/**\n\t * Get _options_set\n\t *\n\t * @return String _options_set\n\t */\n\tpublic function get_options_set()\n\t{\n\t\treturn $this->_options_set;\n\t}\n\t\n\t/**\n\t * Set _options_set\n\t *\n\t * @param String $_options_set _options_set\n\t */\n\tpublic function set_options_set($_options_set)\n\t{\n\t\t$this->_options_set = $_options_set;\n\t\treturn $this;\n\t}\n\n\t/**\n\t * Get _menu_page\n\t *\n\t * @return String _menu_page\n\t */\n\tpublic function get_menu_page()\n\t{\n\t\treturn $this->_menu_page;\n\t}\n\t\n\t/**\n\t * Set _menu_page\n\t *\n\t * @param String $_menu_page _menu_page\n\t */\n\tpublic function set_menu_page($_menu_page)\n\t{\n\t\t$this->_menu_page = $_menu_page;\n\t\treturn $this;\n\t}\n\n\t/**\n\t * Set _layout\n\t *\n\t * @return String _layout\n\t */\n\tpublic function get_layout()\n\t{\n\t\treturn $this->_layout;\n\t}\n\t\n\t/**\n\t * Get _layout\n\t *\n\t * @param String $_layout _layout\n\t */\n\tpublic function set_layout($_layout)\n\t{\n\t\t$this->_layout = $_layout;\n\t\treturn $this;\n\t}\n\n\t/**\n\t * Get _menu_page_slug\n\t *\n\t * @return String _menu_page_slug\n\t */\n\tpublic function get_page_slug()\n\t{\n\t\treturn $this->_page_slug;\n\t}\n\t\n\t/**\n\t * Set _page_slug\n\t *\n\t * @param String $_page_slug _page_slug\n\t */\n\tpublic function set_page_slug($_page_slug)\n\t{\n\t\t$this->_page_slug = $_page_slug;\n\t\treturn $this;\n\t}\n\n\t/**\n\t * Get _menu_label\n\t *\n\t * @return String _menu_label\n\t */\n\tpublic function get_menu_label()\n\t{\n\t\treturn $this->_menu_label;\n\t}\n\t\n\t/**\n\t * Set _menu_label\n\t *\n\t * @param String $_menu_label _menu_label\n\t */\n\tpublic function set_menu_label($_menu_label)\n\t{\n\t\t$this->_menu_label = $_menu_label;\n\t\treturn $this;\n\t}\n\n\t/**\n\t * Get _page_title value\n\t *\n\t * @return String _page_title\n\t */\n\tpublic function get_page_title()\n\t{\n\t\treturn $this->_page_title;\n\t}\n\t\n\t/**\n\t * Set _page_title\n\t *\n\t * @param String $_page_title _page_title\n\t */\n\tpublic function set_page_title($_page_title)\n\t{\n\t\t$this->_page_title = $_page_title;\n\t\treturn $this;\n\t}\n\n\t/**\n\t * Get _minimum_role value\n\t *\n\t * @return String $_minimum_role\n\t */\n\tpublic function get_minimum_role()\n\t{\n\t\treturn $this->_minimum_role;\n\t}\n\t\n\t/**\n\t * Set _minimum_role value\n\t *\n\t * @param String $_minimum_role _minimum_role\n\t */\n\tpublic function set_minimum_role($_minimum_role)\n\t{\n\t\t$this->_minimum_role = $_minimum_role;\n\t\treturn $this;\n\t}\n\n\t/**\n\t * Get _option_key value\n\t *\n\t * @return String $_option_key\n\t */\n\tpublic function get_option_key()\n\t{\n\t\treturn $this->_option_key;\n\t}\n\t\n\t/**\n\t * Set _option_key value\n\t *\n\t * @param String $_option_key $_option_key\n\t */\n\tpublic function set_option_key($_option_key)\n\t{\n\t\t$this->_option_key = $_option_key;\n\t\treturn $this;\n\t}\n\n\t/**\n\t * Get/Set whether to use auto group naming or not\n\t *\n\t * @return bool $_use_auto_group_naming\n\t */\n\tpublic function use_auto_group_naming($_use_auto_group_naming = NULL)\n\t{\n\t\tif(is_null($_use_auto_group_naming))\n\t\t\treturn $this->_use_auto_group_naming;\n\t\t$this->_use_auto_group_naming = $_use_auto_group_naming;\n\t}\n\n\t/**\n\t * Get/Set whether to use export import menu or not\n\t *\n\t * @return bool $_use_util_menu\n\t */\n\tpublic function use_util_menu($_use_util_menu = NULL)\n\t{\n\t\tif(is_null($_use_util_menu))\n\t\t\treturn $this->_use_util_menu;\n\t\t$this->_use_util_menu = $_use_util_menu;\n\t}\n\n\t/**\n\t * Get/Set whether it's development mode or not\n\t *\n\t * @return bool $_dev_mode\n\t */\n\tpublic function is_dev_mode($_dev_mode = NULL)\n\t{\n\t\tif(is_null($_dev_mode))\n\t\t\treturn $this->_dev_mode;\n\t\t$this->_dev_mode = $_dev_mode;\n\t}\n\n}\n\n/**\n * EOF\n */"
  },
  {
    "path": "classes/security.php",
    "content": "<?php\n\nclass VP_Security\n{\n\n\t/**\n\t * Singleton instance of the class\n\t * @var VP_Security\n\t */\n\tprivate static $_instance;\n\n\tprivate $_whitelist = array();\n\n\tpublic static function instance()\n\t{\n\t\tif (is_null(self::$_instance))\n\t\t\tself::$_instance = new self();\n\t\t\n\t\treturn self::$_instance;\n\t}\n\n\tpublic function whitelist_function($name)\n\t{\n\t\tif( ! in_array($name, $this->_whitelist) )\n\t\t{\n\t\t\t$this->_whitelist[] = $name;\n\t\t\treturn $name;\n\t\t}\n\t\treturn false;\n\t}\n\n\tpublic function is_function_whitelisted($name)\n\t{\n\t\tif( in_array($name, $this->_whitelist) )\n\t\t\treturn true;\n\t\treturn false;\n\t}\n\n}\n\n/**\n * EOF\n */"
  },
  {
    "path": "classes/shortcodegenerator.php",
    "content": "<?php\n\nclass VP_ShortcodeGenerator\n{\n\n\tpublic static $pool = array();\n\n\tpublic $name;\n\n\tpublic $template;\n\n\tpublic $modal_title = '';\n\n\tpublic $button_title = '';\n\n\tpublic $main_image;\n\n\tpublic $sprite_image;\n\n\tpublic $types;\n\n\tpublic $include_pages;\n\n\tpublic function __construct($arr)\n\t{\n\t\t$this->main_image     = VP_PUBLIC_URL . '/img/vp_shortcode_icon.png';\n\t\t$this->sprite_image   = VP_PUBLIC_URL . '/img/vp_shortcode_icon_sprite.png';\n\t\t$this->types          = array( 'post', 'page' );\n\t\t$this->included_pages = array();\n\n\t\tif (is_array($arr))\n\t\t{\n\t\t\tforeach ($arr as $n => $v)\n\t\t\t{\n\t\t\t\t$this->$n = $v;\n\t\t\t}\n\t\t\tif (empty($this->name))     die('Unique name required');\n\t\t\tif (empty($this->template)) die('Template array / path required');\n\t\t}\n\n\t\tif( is_string($this->template) and is_file($this->template) )\n\t\t\t$this->template = include $this->template;\n\n\t\tif(!empty($this->template))\n\t\t{\n\t\t\t$this->normalize();\n\t\t\tadd_action( 'current_screen', array($this, 'init_mce_plugin') );\n\t\t}\n\n\t\tself::$pool[$this->name] = $this;\n\t}\n\n\tfunction init_mce_plugin()\n\t{\n\t\tif( $this->can_output() )\n\t\t{\n\t\t\t// print modal dialog dom\n\t\t\tadd_action( 'admin_footer', array($this, 'print_modal') );\n\t\t\t// populate scripts and styles dependencies\n\t\t\t$loader = VP_WP_Loader::instance();\n\t\t\t$loader->add_types( $this->get_field_types(), 'shortcodegenerator' );\n\t\t}\n\t}\n\n\tfunction normalize()\n\t{\n\t\tif(is_array($this->template)) foreach ($this->template as &$shortcode)\n\t\t{\n\t\t\tforeach ($shortcode['elements'] as &$elements)\n\t\t\t{\n\t\t\t\tif(isset($elements['attributes'])) foreach ($elements['attributes'] as &$f)\n\t\t\t\t{\n\t\t\t\t\tif( $f['type'] === 'codeeditor' )\n\t\t\t\t\t{\n\t\t\t\t\t\t$f['type'] = 'textarea';\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\t\n\t\t}\n\t}\n\n\tfunction get_field_types()\n\t{\n\t\t$field_types = array();\n\t\tif(is_array($this->template)) foreach ($this->template as $shortcode)\n\t\t{\n\t\t\tforeach ($shortcode['elements'] as $elements)\n\t\t\t{\n\t\t\t\tif(isset($elements['attributes'])) foreach ($elements['attributes'] as $f)\n\t\t\t\t{\n\t\t\t\t\tif( ! in_array($f['type'], $field_types) )\n\t\t\t\t\t{\n\t\t\t\t\t\t$field_types[] = $f['type'];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\t\n\t\t}\n\t\treturn $field_types;\n\t}\n\n\tpublic static function get_pool()\n\t{\n\t\treturn self::$pool;\n\t}\n\n\tpublic static function pool_supports_editor()\n\t{\n\t\tforeach (self::$pool as $sg)\n\t\t{\n\t\t\tif( $sg->supports_editor() )\n\t\t\t{\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n\n\tpublic function supports_editor()\n\t{\n\t\t$post_type  = VP_Metabox::_get_current_post_type();\n\t\t$has_editor = post_type_supports( $post_type, 'editor' );\n\t\treturn $has_editor;\n\t}\n\n\tpublic static function pool_can_output()\n\t{\n\t\tforeach (self::$pool as $sg)\n\t\t{\n\t\t\tif( $sg->can_output() )\n\t\t\t{\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n\n\tpublic function can_output()\n\t{\n\t\t$screen = '';\n\t\t$can    = true;\n\t\tif( function_exists('get_current_screen') )\n\t\t{\n\t\t\t$screen = get_current_screen();\n\t\t\tif( !is_null($screen) )\n\t\t\t\t$screen = $screen->id;\n\t\t}\n\n\t\t// if in post / page\n\t\tif( VP_Metabox::_is_post_or_page() )\n\t\t{\n\t\t\t// then consider the types\n\t\t\tif( !in_array(\"*\", $this->types) ) // if wildcard exists, then always shows\n\t\t\t\t$can &= in_array(VP_Metabox::_get_current_post_type(), $this->types);\n\t\t\telse\n\t\t\t\t$can &= true;\n\t\t}\n\t\telse\n\t\t{\n\t\t\t// if not, only consider the screen id\n\t\t\tif( !empty($screen) )\n\t\t\t{\n\t\t\t\t$can &= in_array($screen, $this->included_pages);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tif( !is_admin() )\n\t\t\t\t{\n\t\t\t\t\t$can &= false;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn $can;\n\t}\n\n\tpublic function print_modal()\n\t{\n\t\t$modal_id = $this->name . '_modal';\n\t\t?>\n\t\t<div id=\"<?php echo $modal_id; ?>\" class=\"vp-sc-dialog reveal-modal xlarge\">\n\t\t\t<h1><?php echo $this->modal_title; ?></h1>\n\t\t\t<div class=\"vp-sc-scroll-container\">\n\t\t\t\t<div class=\"vp-sc-wrapper\">\n\t\t\t\t\t<ul class=\"vp-sc-menu\">\n\t\t\t\t\t<?php foreach ($this->template as $title => $menu): ?>\n\t\t\t\t\t\t<?php if(reset($this->template) == $menu): ?>\n\t\t\t\t\t\t<li class=\"current\"><a href=\"#<?php echo str_replace(' ', '_', $title); ?>\"><?php echo $title ?></li></a>\n\t\t\t\t\t\t<?php else: ?>\n\t\t\t\t\t\t<li><a href=\"#<?php echo str_replace(' ', '_', $title); ?>\"><?php echo $title ?></li></a>\n\t\t\t\t\t\t<?php endif; ?>\n\t\t\t\t\t<?php endforeach; ?>\n\t\t\t\t\t</ul>\n\t\t\t\t\t<div class=\"vp-sc-main\">\n\t\t\t\t\t\t<?php foreach ($this->template as $title => $menu): ?>\n\t\t\t\t\t\t\t<?php if (reset($this->template) == $menu) : ?>\n\t\t\t\t\t\t\t<ul class=\"current vp-sc-sub-menu-list vp-sc-sub-menu-<?php echo str_replace(' ', '_', $title); ?>\">\n\t\t\t\t\t\t\t<?php else : ?>\n\t\t\t\t\t\t\t<ul class=\"vp-hide vp-sc-sub-menu-list vp-sc-sub-menu-<?php echo str_replace(' ', '_', $title); ?>\">\n\t\t\t\t\t\t\t<?php endif; ?>\n\t\t\t\t\t\t\t<?php foreach ($menu['elements'] as $name => $element): ?>\n\t\t\t\t\t\t\t\t<li class=\"vp-sc-element postbox<?php if(isset($element['attributes'])) echo ' has-options'; ?><?php if(isset($element['active']) && $element['active'] == true) echo ' active'; ?>\">\n\t\t\t\t\t\t\t\t\t<h3 class=\"hndle vp-sc-element-heading\">\n\t\t\t\t\t\t\t\t\t\t<a href=\"#\">\n\t\t\t\t\t\t\t\t\t\t\t<?php echo $element['title']; ?>\n\t\t\t\t\t\t\t\t\t\t\t<?php if(isset($element['attributes'])) echo '<i class=\"fa fa-arrow-down\"></i>'; ?>\n\t\t\t\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t\t\t</h3>\n\t\t\t\t\t\t\t\t\t<div class=\"hidden vp-sc-code\"><?php echo htmlentities($element['code']); ?></div>\n\t\t\t\t\t\t\t\t\t<?php if(isset($element['attributes']) and !empty($element['attributes'])): ?>\n\t\t\t\t\t\t\t\t\t<form class=\"vp-sc-element-form <?php if(!isset($element['active']) || isset($element['active']) && $element['active'] == false):?>vp-hide<?php endif; ?> inside\">\n\t\t\t\t\t\t\t\t\t\t<?php echo $this->print_form($element['attributes']); ?>\n\t\t\t\t\t\t\t\t\t</form>\n\t\t\t\t\t\t\t\t\t<?php endif; ?>\n\t\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t\t<?php endforeach; ?>\n\t\t\t\t\t\t\t</ul>\n\t\t\t\t\t\t<?php endforeach; ?>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<a class=\"close-reveal-modal\">&#215;</a>\n\t\t\t</div>\n\t\t</div>\n\t\t<?php\n\t}\n\n\tfunction print_form($attributes)\n\t{\n\t\t?>\n\t\t<div class=\"vp-sc-fields\">\n\t\t<?php\n\t\tforeach ($attributes as $attr)\n\t\t{\n\t\t\t// create the object\n\t\t\t$make           = VP_Util_Reflection::field_class_from_type($attr['type']);\n\t\t\t// prefix name\n\t\t\t$attr['name']   = '_' . $attr['name'];\n\t\t\t$field          = call_user_func(\"$make::withArray\", $attr);\n\t\t\t$default        = $field->get_default();\n\t\t\tif(!is_null($default))\n\t\t\t\t$field->set_value($default);\n\t\t\t?>\n\n\t\t\t<?php if($attr['type'] !== 'notebox'): ?>\n\t\t\t\t<div class=\"vp-sc-field vp-<?php echo $attr['type']; ?>\" data-vp-type=\"vp-<?php echo $attr['type']; ?>\">\n\t\t\t\t\t<div class=\"label\"><label><?php echo $attr['label']; ?></label></div>\n\t\t\t\t\t<div class=\"field\"><div class=\"input\"><?php echo $field->render(true); ?></div></div>\n\t\t\t\t</div>\n\t\t\t<?php else: ?>\n\t\t\t\t<?php $status = isset($attr['status']) ? $attr['status'] : 'normal'; ?>\n\t\t\t\t<div class=\"vp-sc-field vp-<?php echo $attr['type']; ?> note-<?php echo $status; ?>\" data-vp-type=\"vp-<?php echo $attr['type']; ?>\">\n\t\t\t\t\t<?php echo $field->render(true); ?>\n\t\t\t\t</div>\n\t\t\t<?php endif; ?>\n\n\t\t\t<?php\n\t\t}\n\t\t?>\n\t\t</div>\n\t\t<div class=\"vp-sc-action\">\n\t\t\t<button class=\"vp-sc-insert button\"><?php _e('Insert', 'vp_textdomain'); ?></button>\n\t\t\t<button class=\"vp-sc-cancel button\"><?php _e('Cancel', 'vp_textdomain') ?></button>\n\t\t</div>\n\t\t<?php\n\t}\n\n\tpublic static function build_localize()\n\t{\n\t\t$localize = array();\n\t\tforeach (self::$pool as $sg)\n\t\t{\n\t\t\t$localize[] = array(\n\t\t\t\t'name'         => $sg->name,\n\t\t\t\t'modal_title'  => $sg->modal_title,\n\t\t\t\t'button_title' => $sg->button_title,\n\t\t\t\t'main_image'   => $sg->main_image,\n\t\t\t\t'sprite_image' => $sg->sprite_image,\n\t\t\t);\n\t\t}\n\t\treturn $localize;\n\t}\n\n\tpublic static function init_buttons()\n\t{\n\t\tif( VP_Metabox::_is_post_or_page() && !current_user_can( 'edit_posts' ) &&\n\t\t\t!current_user_can( 'edit_pages' ) && get_user_option( 'rich_editing' ) == 'true')\n\t\t\treturn;\n\n\t\tadd_filter( 'mce_external_plugins' , array(__CLASS__, 'add_buttons') );\n\t\tadd_filter( 'mce_buttons'          , array(__CLASS__, 'register_buttons') );\n\t\tadd_filter( 'wp_fullscreen_buttons', array(__CLASS__, 'fullscreen_buttons') );\n\t\tadd_filter( 'admin_print_styles'   , array(__CLASS__, 'print_styles') );\n\t}\n\n\tpublic static function print_styles($buttons)\n\t{\n\t\t?>\n\t\t\t<style type=\"text/css\">\n\t\t\t\t<?php foreach (self::$pool as $sg): ?>\n\t\t\t\t#qt_content_<?php echo $sg->name; ?>{\n\t\t\t\t\tbackground: url('<?php echo $sg->sprite_image; ?>') 2px -21px no-repeat !important;\n\t\t\t\t\ttext-indent: -999px;\n\t\t\t\t}\n\t\t\t\tspan.mce_<?php echo $sg->name; ?>{\n\t\t\t\t\tbackground: url('<?php echo $sg->sprite_image; ?>') 0 0 no-repeat !important;\n\t\t\t\t}\n\t\t\t\t<?php endforeach; ?>\n\t\t\t</style>\n\t\t<?php\n\t}\n\n\tpublic static function register_buttons($buttons)\n\t{\n\t\tforeach (self::$pool as $sg)\n\t\t{\n\t\t\tif( $sg->can_output() )\n\t\t\t\t$vp_buttons[] = $sg->name;\n\t\t}\n\t\t$buttons = array_merge($buttons, $vp_buttons);\n\t\treturn $buttons;\n\t}\n\n\tpublic static function add_buttons($plugin_array)\n\t{\n\t\t$plugin_array['vp_sc_button'] = VP_PUBLIC_URL .'/js/shortcodes.js';\n\t\tforeach (self::$pool as $sg)\n\t\t{\n\t\t\tif( $sg->can_output() )\n\t\t\t\t$plugin_array[$sg->name] = VP_PUBLIC_URL .'/js/dummy.js';\n\t\t}\n\t\treturn $plugin_array;\n\t}\n\n\tpublic static function fullscreen_buttons($buttons)\n\t{\n\t\tforeach (self::$pool as $sg)\n\t\t{\n\t\t\tif( $sg->can_output() )\n\t\t\t{\n\t\t\t\t// add a separator\n\t\t\t\t$buttons[] = 'separator';\n\t\t\t\t// format: title, onclick, show in both editors\n\t\t\t\t$buttons[$sg->name] = array(\n\t\t\t\t\t// Title of the button\n\t\t\t\t\t'title'   => $sg->button_title,\n\t\t\t\t\t// Command to execute\n\t\t\t\t\t'onclick' => \"tinyMCE.execCommand('{$sg->name}_cmd');\",\n\t\t\t\t\t// Show on visual AND html mode\n\t\t\t\t\t'both'    => true\n\t\t\t\t);\t\n\t\t\t}\n\t\t}\n\t\treturn $buttons;\n\t}\n\n\tpublic function get_shortcode_tags() {\n\t\t$shortcodes = $this->template;\n\t\t$tags = array();\n\t\tforeach ($shortcodes as $menu) {\n\t\t\tforeach ($menu['elements'] as $sc) {\n\t\t\t\t$code = $sc['code'];\n\t\t\t\tpreg_match('/\\[(\\w+).*\\]/', $code, $matches);\n\t\t\t\t$tags[] = $matches[1];\n\t\t\t}\n\t\t}\n\t\treturn $tags;\n\t}\n\n}\n\n/**\n * EOF\n */\n"
  },
  {
    "path": "classes/site/googlewebfont.php",
    "content": "<?php\n\n/**\n * Singleton class to manage Google Web Fonts embedding,\n * add the fonts with the weight and style\n * \n */\nclass VP_Site_GoogleWebFont\n{\n\tprivate $_fonts = array();\n\n\tprivate static $_instance = null;\n\n\tpublic static function instance()\n\t{\n\t\tif(self::$_instance == null)\n\t\t{\n\t\t\tself::$_instance = new self();\n\t\t}\n\t\treturn self::$_instance;\n\t}\n\n\tpublic function add($name, $weights = 'normal', $styles = 'normal', $subsets = null)\n\t{\n\t\t\n\t\tif(empty($name))\n\t\t\treturn;\n\n\t\t$weights = (array) $weights;\n\t\t$styles  = (array) $styles;\n\t\t$subsets = !empty($subsets) ? (array) $subsets : null;\n\t\t$name    = str_replace(' ', '+', $name);\n\n\t\tif(!isset($this->_fonts[$name])) {\n\t\t\t$this->_fonts[$name]            = array();\n\t\t\t$this->_fonts[$name]['atts']    = array();\n\t\t\t$this->_fonts[$name]['subsets'] = array('latin');\n\t\t}\n\n\t\tforeach ($weights as $weight)\n\t\t{\n\t\t\tforeach ($styles as $style)\n\t\t\t{\n\t\t\t\t// set it to empty if style is equal to normal\n\t\t\t\tif($style === 'normal')\n\t\t\t\t\t$style = '';\n\n\t\t\t\tif($style != '')\n\t\t\t\t\tif($weight === 'normal') $weight = '';\n\n\t\t\t\t// skip if both are empty\n\t\t\t\tif($style === '' and $weight === '')\n\t\t\t\t\tcontinue;\n\n\t\t\t\t$couple = $weight . $style;\n\n\t\t\t\tif(!in_array($couple, $this->_fonts[$name]['atts']))\n\t\t\t\t\t$this->_fonts[$name]['atts'][] = $couple;\n\t\t\t}\n\t\t}\n\n\t\tif(!empty($subsets))\n\t\t{\n\t\t\t$this->_fonts[$name]['subsets'] = array_merge($this->_fonts[$name]['subsets'], $subsets);\n\t\t\t$this->_fonts[$name]['subsets'] = array_unique($this->_fonts[$name]['subsets']);\n\t\t}\n\n\t}\n\n\tpublic function register()\n\t{\n\t\t$links = $this->get_font_links();\n\t\tforeach ($links as $name => $link)\n\t\t{\n\t\t\twp_register_style( $name, $link);\n\t\t}\n\t}\n\n\tpublic function enqueue()\n\t{\n\t\t$names = $this->get_names();\n\t\tforeach ($names as $name)\n\t\t{\n\t\t\twp_enqueue_style( $name );\n\t\t}\n\t}\n\n\tpublic function register_and_enqueue()\n\t{\n\t\t$this->register();\n\t\t$this->enqueue();\n\t}\n\n\tpublic function get_font_links()\n\t{\n\t\t$links = array();\n\t\tforeach ($this->_fonts as $name => $font)\n\t\t{\n\t\t\t$atts  = $font['atts'];\n\t\t\t$param = implode(',', $atts);\n\t\t\t$link  = \"http://fonts.googleapis.com/css?family=$name\" . ($param !== '' ? \":$param\" : '');\n\t\t\tif(!empty($font['subsets']))\n\t\t\t{\n\t\t\t\t$subsets = implode(',', $font['subsets']);\n\t\t\t\t$link   .= '&subset=' . $subsets;\n\n\t\t\t}\n\t\t\t$links[$name] = $link;\n\t\t}\n\t\treturn $links;\n\t}\n\n\tpublic function get_fonts()\n\t{\n\t\treturn $this->_fonts;\n\t}\n\n\tpublic function get_names()\n\t{\n\t\treturn array_keys($this->_fonts);\n\t}\n\n}\n\n/**\n * EOF\n */"
  },
  {
    "path": "classes/util/array.php",
    "content": "<?php\n\nclass VP_Util_Array\n{\n\n\tpublic static function first($array)\n\t{\n\t\tif( !empty($array) and !is_null($array) )\n\t\t{\n\t\t\treturn reset($array);\n\t\t}\n\t\treturn null;\n\t}\n\n\tpublic static function deep_values($array, $the_key)\n\t{\n\t\t$result = array();\n\t\tforeach ($array as $key => $value)\n\t\t{\n\t\t\tif (is_object($value))\n\t\t\t{\n\t\t\t\t$result[] = $value->$the_key;\n\t\t\t}\n\t\t\telseif (is_array($value))\n\t\t\t{\n\t\t\t\t$result[] = $value[$the_key];\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t$result[] = $value;\n\t\t\t}\n\t\t}\n\t\treturn $result;\n\t}\n\n\t/**\n\t * Combine array with the same $left to single array item\n\t * from\n\t * array( [0] => array( \"name\" => \"a\", \"value\" => \"1\" ), \n\t * \t\t  [1] => array( \"name\" => \"a\", \"value\" => \"2\" ),\n\t * \t\t  [0] => array( \"name\" => \"b\", \"value\" => \"3\" ))\n\t * to\n\t * array( \"a\" => array( \"1\", \"2\" ), \n\t * \t\t  \"b\" => 3)\n\t * @param  Array $array Array to unite\n\t * @param  Mixed $left  Left side array key\n\t * @param  Mixed $right Right side array key\n\t * @return Array        United Array\n\t */\n\tpublic static function unite($array, $left, $right)\n\t{\n\t\t$result = array();\n\t\tif(is_array($array))\n\t\t{\n\t\t\tforeach ($array as $item)\n\t\t\t{\n\t\t\t\tif(isset($result[$item[$left]]))\n\t\t\t\t{\n\t\t\t\t\tif(is_array($result[$item[$left]]))\n\t\t\t\t\t\t$result[$item[$left]][] = $item[$right];\n\t\t\t\t\telse\n\t\t\t\t\t\t$result[$item[$left]]   = array($result[$item[$left]], $item[$right]);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\t$result[$item[$left]] = $item[$right];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn $result;\n\t}\n\n\tpublic static function array_merge_recursive_all($paArray1, $paArray2)\n\t{\n\t\tif (!is_array($paArray1) or !is_array($paArray2)) { return $paArray2; }\n\t\tforeach ($paArray2 AS $sKey2 => $sValue2)\n\t\t{\n\t\t\t$paArray1[$sKey2] = self::array_merge_recursive_all(@$paArray1[$sKey2], $sValue2);\n\t\t}\n\t\treturn $paArray1;\n\t}\n\n\tpublic static function array_replace_recursive($array, $array1)\n\t{\n\t\tif (!function_exists('array_replace_recursive'))\n\t\t{\n\t\t\tif(!function_exists('recurse'))\n\t\t\t{\n\t\t\t\tfunction recurse($array, $array1)\n\t\t\t\t{\n\t\t\t\t\tforeach ($array1 as $key => $value)\n\t\t\t\t\t{\n\t\t\t\t\t\t// create new key in $array, if it is empty or not an array\n\t\t\t\t\t\tif (!isset($array[$key]) || (isset($array[$key]) && !is_array($array[$key])))\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t$array[$key] = array();\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// overwrite the value in the base array\n\t\t\t\t\t\tif (is_array($value))\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t$value = recurse($array[$key], $value);\n\t\t\t\t\t\t}\n\t\t\t\t\t\t$array[$key] = $value;\n\t\t\t\t\t}\n\t\t\t\t\treturn $array;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// handle the arguments, merge one by one\n\t\t\t$args  = func_get_args();\n\t\t\t$array = $args[0];\n\t\t\tif (!is_array($array))\n\t\t\t{\n\t\t\t\treturn $array;\n\t\t\t}\n\t\t\tfor ($i = 1; $i < count($args); $i++)\n\t\t\t{\n\t\t\t\tif (is_array($args[$i]))\n\t\t\t\t{\n\t\t\t\t\t$array = recurse($array, $args[$i]);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn $array;\n\t\t}\n\t\telse\n\t\t{\n\t\t\treturn array_replace_recursive($array, $array1);\n\t\t}\n\t}\n\n\n}\n\n/**\n * EOF\n */"
  },
  {
    "path": "classes/util/config.php",
    "content": "<?php\n\n/**\n * Config files loader\n */\n\nclass VP_Util_Config\n{\n\n\tprivate static $_instance;\n\n\tprivate $_configs;\n\n\tprivate function __construct()\n\t{\n\t\t$this->_configs = array();\n\t}\n\n\tpublic static function instance()\n\t{\n\t\tif (is_null(self::$_instance))\n\t\t{\n\t\t\tself::$_instance = new self();\n\t\t}\n\t\treturn self::$_instance;\n\t}\n\n\n\tpublic function load($config_name, $key = '')\n\t{\n\t\t// get the config, try to get in memory cache\n\t\tif (array_key_exists($config_name, $this->_configs))\n\t\t{\n\t\t\t$config = $this->_configs[$config_name];\n\t\t}\n\t\telse\n\t\t{\n\t\t\tif(is_file(VP_CONFIG_DIR . '/'. $config_name . '.php'))\n\t\t\t{\n\t\t\t\t$config     = require VP_CONFIG_DIR . '/'. $config_name . '.php';\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthrow new Exception(\"$config_name file not found.\\n\", 1);\n\t\t\t}\n\t\t\t// cache 'em\n\t\t\t$this->_configs[$config_name] = $config;\n\t\t}\n\n\t\t// if key supplied, get the specific index of config array\n\t\t$temp = $config;\n\t\tif($key !== '')\n\t\t{\n\t\t\t$keys = explode('.', $key);\n\t\t\tforeach ($keys as $key)\n\t\t\t{\n\t\t\t\t$temp = $temp[$key];\n\t\t\t}\n\t\t}\n\t\treturn $temp;\n\t}\n\n}"
  },
  {
    "path": "classes/util/profiler.php",
    "content": "<?php\n\nclass VP_Util_Profiler\n{\n\n\tpublic static function show_memtime()\n\t{\n\t\t$time_elapsed = microtime(true) - VP_START_TIME;\n\t\t$mem_usage    = memory_get_peak_usage() - VP_START_MEM;\n\t\t$time_elapsed = round($time_elapsed, 4);\n\t\t$mem_usage    = round($mem_usage / pow(1024, 2), 3);\n\t\techo \"Time Elapsed: \" . $time_elapsed . ' s' . \"<br/>\";\n\t\techo \"Mem Usage   : \" . $mem_usage . ' mb' . \"<br/>\";\n\t}\n\n}"
  },
  {
    "path": "classes/util/reflection.php",
    "content": "<?php\n\nclass VP_Util_Reflection\n{\n\n\tpublic static function is_multiselectable($object)\n\t{\n\t\tif(is_object($object))\n\t\t{\n\t\t\tif($object instanceof VP_MultiSelectable)\n\t\t\t\treturn true;\n\t\t}\n\t\telseif(is_string($object))\n\t\t{\n\t\t\t$class = self::field_class_from_type($object);\n\t\t\tif(function_exists('class_implements'))\n\t\t\t{\n\t\t\t\tif(class_exists($class))\n\t\t\t\t{\n\t\t\t\t\t$interfaces = class_implements($class);\n\t\t\t\t\tif(isset($interfaces['VP_MultiSelectable']))\n\t\t\t\t\t\treturn true;\t\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t$dummy = new $class;\n\t\t\t\tif($dummy instanceof VP_MultiSelectable)\n\t\t\t\t\treturn true;\n\t\t\t\tunset($dummy);\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n\n\n\tpublic static function field_type_from_class($class)\n\t{\n\t\t$prefix = apply_filters('vp_field_type_from_class_prefix', array('VP_Control_Field_', 'VP_Option_Control_Field_'));\n\t\treturn strtolower(str_replace($prefix, '', $class));\n\t}\n\n\tpublic static function field_class_from_type($type)\n\t{\n\t\t// default prefix\n\t\t$prefix = 'VP_Control_Field_';\n\n\t\t// special case\n\t\tif($type === 'impexp')\n\t\t\t$prefix = 'VP_Option_Control_Field_';\n\n\t\t$prefix = apply_filters( 'vp_field_class_from_type_prefix', $prefix, $type );\n\t\t\t\n\t\t$class = $prefix . $type;\n\t\treturn $class;\n\t}\n\n}"
  },
  {
    "path": "classes/util/res.php",
    "content": "<?php\n\nclass VP_Util_Res\n{\n\n\tpublic static function is_font_awesome($icon)\n\t{\n\t\tif (strpos($icon, 'font-awesome:') === 0)\n\t\t{\n\t\t\treturn trim(str_replace('font-awesome:', '', $icon));\n\t\t}\n\t\treturn false;\n\t}\n\n\tpublic static function get_preview_from_url($url)\n\t{\n\t\t$preview = '';\n\t\t$images  = array('jpg', 'JPG', 'jpeg', 'bmp',  'gif',  'png', 'ico');\n\t\t\n\t\tif(filter_var($url, FILTER_VALIDATE_URL) !== FALSE)\n\t\t{\n\t\t\t// check for extension, if it has extension then use it\n\t\t\t$info = pathinfo($url);\n\t\t\tif(isset($info['extension']))\n\t\t\t{\n\t\t\t\tif(in_array($info['extension'], $images))\n\t\t\t\t{\n\t\t\t\t\t$preview = $url;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\t$type = wp_ext2type( $info['extension'] );\n\t\t\t\t\tif(is_null($type))\n\t\t\t\t\t\t$type = 'default';\n\t\t\t\t\t$preview = includes_url() . 'images/crystal/' . $type . '.png';\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t// if no extension, try to discover from mime\n\t\t\t\t$mime = wp_remote_head( $url );\n\t\t\t\tif(!is_wp_error( $mime ))\n\t\t\t\t{\n\t\t\t\t\t$mime = $mime['headers']['content-type'];\n\t\t\t\t\tif(strpos($mime, 'image') === 0)\n\t\t\t\t\t\t$preview = $url;\n\t\t\t\t\telse\n\t\t\t\t\t\t$preview = wp_mime_type_icon( $mime );\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\t$preview = includes_url() . 'images/crystal/' . 'default' . '.png';\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn $preview;\n\t}\n\n\tpublic static function img($url)\n\t{\n\t\t// empty parameter\n\t\tif (empty($url)) {\n\t\t\treturn '';\n\t\t}\n\n\t\t// if already absolute, then just return\n\t\tif (parse_url($url, PHP_URL_SCHEME))\n\t\t{\n\t\t\treturn $url;\n\t\t}\n\t\telse\n\t\t{\n\t\t\t// check if got beginning slash\n\t\t\tif ($url[0] == '/' or $url[0] == '\\\\')\n\t\t\t{\n\t\t\t\treturn VP_IMAGE_URL . $url;\n\t\t\t}\n\t\t\treturn VP_IMAGE_URL . '/' . $url;\n\t\t}\n\t}\n\n\tpublic static function img_out($img, $default)\n\t{\n\t\tif (empty($img))\n\t\t\techo self::img($default);\n\t\telse\n\t\t\techo self::img($img);\n\t}\n\n}"
  },
  {
    "path": "classes/util/text.php",
    "content": "<?php\n\nclass VP_Util_Text\n{\n\n\tpublic static function parse_md($text)\n\t{\n\t\tif(!class_exists('Parsedown'))\n\t\t{\n\t\t\t$path = VP_FileSystem::instance()->resolve_path('includes', 'parsedown');\n\t\t\trequire $path;\n\t\t}\n\t\treturn Parsedown::instance()->parse($text);\n\t}\n\n\tpublic static function make_opt($optArray)\n\t{\n\t\t$optString = \"\";\n\t\tforeach ($optArray as $key => $value)\n\t\t{\n\t\t\t$optString .= \"(\" . $key . \":\" . $value . \")\";\n\t\t}\n\t\treturn $optString;\n\t}\n\n\tpublic static function print_if_exists($value, $format)\n\t{\n\t\tif (!empty($value))\n\t\t{\n\t\t\tif (is_array($value))\n\t\t\t{\n\t\t\t\t$value = implode($value, ', ');\n\t\t\t}\n\t\t\tcall_user_func('printf', $format, $value);\n\t\t}\t\n\t}\n\n\tpublic static function return_if_exists($value, $format)\n\t{\n\t\t$result = '';\n\t\tif (!empty($value))\n\t\t{\n\t\t\tif (is_array($value))\n\t\t\t{\n\t\t\t\t$value = implode($value, ', ');\n\t\t\t}\n\t\t\t$result = call_user_func('sprintf', $format, $value);\n\t\t}\n\t\treturn $result;\n\t}\n\n\tpublic static function out($string, $default)\n\t{\n\t\tif( empty($string) )\n\t\t\techo $default;\n\t\telse\n\t\t\techo $string;\n\t}\n\n\tpublic static function prefix(&$item, $key, $prefix)\n\t{\n\t\t$item = $prefix . $item;\n\t}\n\n\tpublic static function prefix_array($array, $prefix)\n\t{\n\t\tarray_walk( $array, 'VP_Util_Text::prefix', $prefix);\n\t\treturn $array;\n\t}\n\n\tpublic static function starts_with($haystack, $needle)\n\t{\n\t\treturn !strncmp($haystack, $needle, strlen($needle));\n\t}\n\n\tpublic static function ends_with($haystack, $needle)\n\t{\n\t\t$length = strlen($needle);\n\t\tif ($length == 0)\n\t\t{\n\t\t\treturn true;\n\t\t}\n\t\treturn (substr($haystack, -$length) === $needle);\n\t}\n\n\tpublic static function flanked_by($haystack, $left, $right = '')\n\t{\n\t\tif( $right == '' )\n\t\t\t$right = $left;\n\t\treturn (self::starts_with($haystack, $left) and self::ends_with($haystack, $right));\n\t}\n\n}"
  },
  {
    "path": "classes/view.php",
    "content": "<?php\n\n/**\n * A Singleton class for loading view template\n */\nclass VP_View\n{\n\n\t/**\n\t * Singleton instance of the class\n\t * @var Option_View\n\t */\n\tprivate static $_instance;\n\n\tprivate $_views;\n\n\tprivate function __construct()\n\t{\n\t\t$this->_views    = array();\n\t}\n\n\tpublic static function instance()\n\t{\n\t\tif (is_null(self::$_instance))\n\t\t{\n\t\t\tself::$_instance = new self();\n\t\t}\n\t\treturn self::$_instance;\n\t}\n\n\t/**\n\t * Load view file\n\t * @param  String $field_view_file Name of the view file\n\t * @param  Array $data Array of data to be binded on the view\n\t * @return String The result view\n\t */\n\tpublic function load($field_view_file, $data = array())\n\t{\n\t\tif (array_key_exists('field_view_file', $data))\n\t\t{\n\t\t\tthrow new Exception(\"Sorry 'field_view_file' variable name can't be used.\");\n\t\t}\n\n\t\t$view_file = VP_FileSystem::instance()->resolve_path('views', $field_view_file);\n\n\t\tif($view_file === false)\n\t\t{\n\t\t\tthrow new Exception(\"View file not found.\");\n\t\t}\n\t\n\t\textract($data);\n\t\tob_start();\n\t\tinclude $view_file;\n\t\treturn ob_get_clean();\n\t}\n\n}\n\n/**\n * EOF\n */"
  },
  {
    "path": "classes/wp/admin.php",
    "content": "<?php\n\nclass VP_WP_Admin\n{\n\n\t/**\n\t * [taken from WPAlchemy Class by Dimas Begunoff]\n\t * Used to check if creating or editing a post or page\n\t *\n\t * @static\n\t * @access\tprivate\n\t * @return\tstring \"post\" or \"page\"\n\t */\n\tpublic static function is_post_or_page()\n\t{\n\t\t$post_type = self::get_current_post_type();\n\n\t\tif (isset($post_type))\n\t\t{\n\t\t\tif ('page' == $post_type)\n\t\t\t{\n\t\t\t\treturn 'page';\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\treturn 'post';\n\t\t\t}\n\t\t}\n\n\t\treturn NULL;\n\t}\n\n\t/**\n\t * [taken from WPAlchemy Class by Dimas Begunoff]\n\t * Used to check for the current post type, works when creating or editing a\n\t * new post, page or custom post type.\n\t *\n\t * @static\n\t * @return\tstring [custom_post_type], page or post\n\t */\n\tpublic static function get_current_post_type()\n\t{\n\t\t\n\t\tif(!class_exists('WPAlchemy_MetaBox'))\n\t\t{\n\t\t\trequire_once VP_FileSystem::instance()->resolve_path('includes', 'wpalchemy/MetaBox');\n\t\t}\n\n\t\t$uri = isset($_SERVER['REQUEST_URI']) ? $_SERVER['REQUEST_URI'] : NULL ;\n\n\t\tif ( isset( $uri ) )\n\t\t{\n\t\t\t$uri_parts = parse_url($uri);\n\n\t\t\t$file = basename($uri_parts['path']);\n\n\t\t\tif ($uri AND in_array($file, array('post.php', 'post-new.php')))\n\t\t\t{\n\t\t\t\t$post_id = WPAlchemy_MetaBox::_get_post_id();\n\n\t\t\t\t$post_type = isset($_GET['post_type']) ? $_GET['post_type'] : NULL ;\n\n\t\t\t\t$post_type = $post_id ? get_post_type($post_id) : $post_type ;\n\n\t\t\t\tif (isset($post_type))\n\t\t\t\t{\n\t\t\t\t\treturn $post_type;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\t// because of the 'post.php' and 'post-new.php' checks above, we can default to 'post'\n\t\t\t\t\treturn 'post';\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn NULL;\n\t}\n\n}"
  },
  {
    "path": "classes/wp/enqueuer.php",
    "content": "<?php\n\n/**\n * For singleton accessor, use VP_WP_MassEnqueuer class instead.\n */\nclass VP_WP_Enqueuer\n{\n\n\tprivate $_loaders = array();\n\n\tprivate $_id;\n\n\tpublic function __construct()\n\t{\n\t\t$this->_id = spl_object_hash($this);\n\t\t$loader    = new VP_WP_Loader();\n\t\tadd_action('vp_loader_register_' . $this->_id, array($loader, 'register'), 10, 2);\n\t}\n\n\tpublic function add_loader($loader)\n\t{\n\t\t$this->_loaders[] = $loader;\n\t}\n\n\tpublic function register()\n\t{\n\t\tadd_action('admin_enqueue_scripts', array($this, 'register_caller'));\n\t}\n\n\tpublic function register_caller($hook_suffix)\n\t{\n\t\tdo_action('vp_loader_register_' . $this->_id, $this->_loaders, $hook_suffix);\n\t}\n\n}"
  },
  {
    "path": "classes/wp/loader.php",
    "content": "<?php\n\nclass VP_WP_Loader\n{\n\n\tprivate static $_instance;\n\n\tprivate $_js_data = array();\n\n\tprivate $_css_data = array();\n\n\tprivate $_localize = array();\n\n\tprivate $_scripts;\n\n\tprivate $_styles;\n\n\tprivate $_dependencies;\n\n\tprivate $_use_media_upload = false;\n\n\tprivate $_use_wp_35_media_upload = false;\n\n\tprivate $_types;\n\n\tpublic static function instance()\n\t{\n\t\tif (is_null(self::$_instance))\n\t\t{\n\t\t\tself::$_instance = new self();\n\t\t}\n\t\treturn self::$_instance;\n\t}\n\n\tprivate function __construct()\n\t{\n\t\t$this->_dependencies = apply_filters( 'vp_dependencies_array', VP_Util_Config::instance()->load('dependencies') );\n\t\t$this->_types        = array(\n\t\t\t'option'             => array(),\n\t\t\t'metabox'            => array(),\n\t\t\t'shortcodegenerator' => array(),\n\t\t);\n\t}\n\n\tpublic function build()\n\t{\n\n\t\t// get scripts and styles dependencies configs\n\t\t$req_scripts = $this->_dependencies['scripts']['always'];\n\t\t$req_styles  = $this->_dependencies['styles']['always'];\n\t\t$scripts     = $this->_dependencies['scripts']['paths'];\n\t\t$styles      = $this->_dependencies['styles']['paths'];\n\t\t$rules       = $this->_dependencies['rules'];\n\t\t$types       = $this->get_flat_types();\n\n\t\t// for all types build required scripts and styles array\n\t\tforeach ($types as $type)\n\t\t{\n\t\t\tif( array_key_exists($type, $rules) )\n\t\t\t{\n\t\t\t\t$req_scripts = array_merge($req_scripts, $rules[$type]['js']);\n\t\t\t\t$req_styles  = array_merge($req_styles, $rules[$type]['css']);\n\t\t\t}\n\t\t}\n\n\t\t// also determine whether to use media upload and the WP35 version or not\n\t\tif( in_array('upload', $types) )\n\t\t{\n\t\t\tglobal $wp_version;\n\t\t\t$this->_use_media_upload = true;\n\t\t\tif (!version_compare($wp_version, '3.5', '<'))\n\t\t\t{\n\t\t\t\t$this->_use_wp_35_media_upload = true;\n\t\t\t\twp_enqueue_media();\n\t\t\t}\n\t\t}\n\n\t\t// build localize data\n\t\t$this->build_localize_data();\n\n\t\t// register all depended js\n\t\tforeach ($req_scripts as $script)\n\t\t{\n\t\t\t$this->js_unit_register($script);\n\t\t}\n\n\t\t// register and add shared-js at the end of dependencies\n\t\t$this->js_unit_register('shared', $req_scripts);\n\n\t\t// register all styles\n\t\tforeach ($styles as $name => $style) \n\t\t{\n\t\t\tif(in_array($name, $req_styles) and ! wp_style_is($name, 'registered'))\n\t\t\t\twp_register_style($name, $style['path'], $style['deps']);\n\t\t}\n\n\t\t// register all mains\n\t\tforeach ($this->_js_data as $name => $js)\n\t\t{\n\t\t\t// build main js localize\n\t\t\t$localize = array();\n\t\t\tforeach ($js['local_data'] as $datum)\n\t\t\t{\n\t\t\t\tif(array_key_exists($datum, $this->_localize))\n\t\t\t\t{\n\t\t\t\t\t$localize[$datum] = $this->_localize[$datum];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif( isset($js['custom_local']) )\n\t\t\t{\n\t\t\t\t$localize = array_merge( $localize, $js['custom_local'] );\n\t\t\t}\n\n\t\t\t$deps   = array();\n\t\t\tif( isset($js['deps']) ) $deps = $js['deps'];\n\t\t\t$deps[] = 'shared';\n\n\t\t\tforeach ($deps as $dep)\n\t\t\t{\n\t\t\t\t$this->js_unit_register($dep);\n\t\t\t}\n\n\t\t\t// register, enqueue and localized scripts\n\t\t\twp_register_script($name, $js['path'], $deps, '', true);\n\t\t\twp_localize_script($name, $js['local_name'], $localize);\n\t\t\twp_enqueue_script($name);\n\t\t}\n\n\t\tforeach ($this->_css_data as $name => $css)\n\t\t{\n\t\t\tforeach ($css['deps'] as $dep)\n\t\t\t{\n\t\t\t\t$this->css_unit_register($dep);\n\t\t\t}\n\t\t\t$req_styles = array_merge($req_styles, $css['deps']);\n\t\t\twp_register_style($name, $css['path'], $req_styles);\n\t\t\twp_enqueue_style($name);\n\t\t}\n\n\t\tdo_action( 'vp_after_dependencies_loader_build' );\n\n\t}\n\n\tpublic function add_localize_data($key, $value)\n\t{\n\t\t$this->_localize[$key] = $value;\n\t}\n\n\tprivate function build_localize_data()\n\t{\n\t\t$messages = VP_Util_Config::instance()->load('messages');\n\t\t$localize = array(\n\t\t\t'use_upload'               => $this->_use_media_upload,\n\t\t\t'use_new_media_upload'     => $this->_use_wp_35_media_upload,\n\t\t\t'public_url'               => VP_PUBLIC_URL,\n\t\t\t'wp_include_url'           => includes_url(),\n\t\t\t'nonce'                    => wp_create_nonce( 'vafpress' ),\n\t\t\t'val_msg'                  => $messages['validation'],\n\t\t\t'util_msg'                 => $messages['util'],\n\t\t\t'ctrl_msg'                 => $messages['control'],\n\t\t\t// validatable data\n\t\t\t'alphabet_validatable'     => apply_filters( 'vp_alphabet_validatable'    , array( 'vp-textbox', 'vp-textarea' ) ),\n\t\t\t'alphanumeric_validatable' => apply_filters( 'vp_alphanumeric_validatable', array( 'vp-textbox', 'vp-textarea' ) ),\n\t\t\t'numeric_validatable'      => apply_filters( 'vp_numeric_validatable'     , array( 'vp-textbox', 'vp-textarea' ) ),\n\t\t\t'email_validatable'        => apply_filters( 'vp_email_validatable'       , array( 'vp-textbox', 'vp-textarea' ) ),\n\t\t\t'url_validatable'          => apply_filters( 'vp_url_validatable'         , array( 'vp-textbox', 'vp-textarea' ) ),\n\t\t\t'maxlength_validatable'    => apply_filters( 'vp_maxlength_validatable'   , array( 'vp-toggle', 'vp-radiobutton', 'vp-radioimage', 'vp-select' ) ),\n\t\t\t'minlength_validatable'    => apply_filters( 'vp_minlength_validatable'   , array( 'vp-toggle', 'vp-radiobutton', 'vp-radioimage', 'vp-select' ) ),\n\t\t);\n\t\t$this->_localize = array_merge($this->_localize, $localize);\n\t}\n\n\tprivate function js_unit_register($name, $extra_deps = null)\n\t{\n\t\tglobal $wp_scripts;\n\n\t\t$scripts = $this->_dependencies['scripts']['paths'];\n\n\t\tif( isset($scripts[$name]) )\n\t\t{\n\n\t\t\t$registered = wp_script_is($name, 'registered');\n\t\t\t$is_older   = false;\n\t\t\t$script     = $scripts[$name];\n\t\t\t$override   = isset($script['override']) ? $script['override'] : false;\n\t\t\tif( $registered )\n\t\t\t{\n\t\t\t\t$is_older = version_compare($script['ver'], $wp_scripts->registered[$name]->ver) == 1;\n\t\t\t}\n\t\t\tif( !$registered or ($is_older and $override) )\n\t\t\t{\n\t\t\t\tif( !is_null($extra_deps) )\n\t\t\t\t{\n\t\t\t\t\t$script['deps'] = array_unique( array_merge( $script['deps'], $extra_deps ) );\n\t\t\t\t}\n\t\t\t\tif( !empty($script['deps']) )\n\t\t\t\t{\n\t\t\t\t\tforeach ($script['deps'] as $dep)\n\t\t\t\t\t{\n\t\t\t\t\t\t$this->js_unit_register($dep);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif( $is_older )\n\t\t\t\t{\n\t\t\t\t\twp_deregister_script($name);\n\t\t\t\t}\n\n\t\t\t\twp_register_script($name, $script['path'], $script['deps'], $script['ver'], true);\n\n\t\t\t\tif(isset($script['localize']))\n\t\t\t\t{\n\t\t\t\t\t$localize = array();\n\t\t\t\t\tforeach ($script['localize']['keys'] as $key)\n\t\t\t\t\t{\n\t\t\t\t\t\tif(array_key_exists($key, $this->_localize))\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t$localize[$key] = $this->_localize[$key];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\twp_localize_script($name, $script['localize']['name'], $localize);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate function css_unit_register($name, $extra_deps = null)\n\t{\n\t\t$styles = $this->_dependencies['styles']['paths'];\n\n\t\tif( isset($styles[$name]) )\n\t\t{\n\t\t\t$style = $styles[$name];\n\n\t\t\tif( !is_null($extra_deps) )\n\t\t\t{\n\t\t\t\t$style['deps'] = array_unique( array_merge( $style['deps'], $extra_deps ) );\n\t\t\t}\n\t\t\tif( !empty($style['deps']) )\n\t\t\t{\n\t\t\t\tforeach ($style['deps'] as $dep)\n\t\t\t\t{\n\t\t\t\t\t$this->css_unit_register($dep);\n\t\t\t\t}\n\t\t\t}\n\t\t\twp_register_style($name, $style['path'], $style['deps'], isset($style['ver']) ? $style['ver'] : false);\n\t\t}\n\t}\n\n\t// how to setup the localization data?\n\tpublic function add_js_data($js_name, $key, $data)\n\t{\n\t\t$this->add_data($js_name, $key, $data, 'js');\n\t}\n\n\tpublic function add_css_data($css_name, $key, $data)\n\t{\n\t\t$this->add_data($css_name, $key, $data, 'css');\n\t}\n\n\tpublic function add_data($name, $key, $data, $type)\n\t{\n\n\t\t$array_data = array();\n\n\t\tif( $type === 'js' )\n\t\t\t$array_data = array('local_data');\n\n\t\t$var_name = '_' . $type . '_data';\n\n\t\tif( in_array($key, $array_data) )\n\t\t{\n\t\t\tif( !isset($this->{$var_name}[$name][$key]) || !is_array($this->{$var_name}[$name][$key]) )\n\t\t\t\t$this->{$var_name}[$name][$key] = array();\n\t\t\t\n\t\t\t$this->{$var_name}[$name][$key] = array_unique(\n\t\t\t\tarray_merge(\n\t\t\t\t\t$this->{$var_name}[$name][$key],\n\t\t\t\t\t(array) $data\n\t\t\t\t)\n\t\t\t);\n\t\t}\n\t\telse\n\t\t{\n\t\t\t$keys = explode('.', $key);\n\t\t\t$arr  = &$this->{$var_name}[$name];\n\t\t\tforeach ($keys as $key)\n\t\t\t{\n\t\t\t\t$arr = &$arr[$key];\n\t\t\t}\n\t\t\t$arr = $data;\n\t\t}\n\n\t}\n\n\t// how to setup the main js and css data?\n\tpublic function add_main_css($css)\n\t{\n\n\t\tif( is_string($css) )\n\t\t{\n\t\t\t$css_name = $css;\n\t\t\t$deps     = $this->_dependencies['styles']['paths'];\n\t\t\t$css      = $deps[$css_name];\n\t\t}\n\t\telse\n\t\t{\n\t\t\t$css_name = $css['name'];\n\t\t}\n\n\t\tif( isset($css['deps']) )\n\t\t\t$this->add_css_data($css_name, 'deps', $css['deps']);\n\n\t\tif( isset($css['path']) )\n\t\t\t$this->add_css_data($css_name, 'path', $css['path']);\n\t}\n\n\tpublic function add_main_js($js)\n\t{\n\n\t\tif( is_string($js) )\n\t\t{\n\t\t\t$js_name = $js;\n\t\t\t$deps    = $this->_dependencies['scripts']['paths'];\n\t\t\t$js      = $deps[$js_name];\n\t\t}\n\t\telse\n\t\t{\n\t\t\t$js_name = $js['name'];\n\t\t}\n\n\t\tif( isset($js['localize']) and is_array($js['localize']) )\n\t\t{\n\t\t\tif( isset($js['localize']['name']) )\n\t\t\t\t$this->add_js_data($js_name, 'local_name', $js['localize']['name']);\n\t\t\t\n\t\t\tif( isset($js['localize']['keys']) and is_array($js['localize']['keys']) )\n\t\t\t\t$this->add_js_data($js_name, 'local_data', $js['localize']['keys']);\n\t\t}\n\n\t\tif( isset($js['path']) )\n\t\t\t$this->add_js_data($js_name, 'path', $js['path']);\n\n\t\tif( isset($js['deps']) )\n\t\t\t$this->add_js_data($js_name, 'deps', $js['deps']);\n\t}\n\n\t// option class added their types to this\n\tpublic function add_types($types, $key)\n\t{\n\t\t$types = (array) $types;\n\t\t$this->_types[$key] = array_unique( array_merge( $this->_types[$key], $types ) );\n\t}\n\n\tpublic function get_types($key = null)\n\t{\n\t\tif( is_null($key) )\n\t\t\treturn $this->_types;\n\t\telse\n\t\t\treturn $this->_types[$key];\n\t}\n\n\tpublic function get_flat_types()\n\t{\n\t\t$flat_types = array();\n\t\tforeach ($this->_types as $types)\n\t\t{\n\t\t\t$flat_types = array_unique( array_merge( $flat_types, $types ) );\n\t\t}\n\t\treturn $flat_types;\n\t}\n\n}\n\n/**\n * EOF\n */"
  },
  {
    "path": "classes/wp/massenqueuer.php",
    "content": "<?php\n\n/**\n * For singleton accessor, use VP_WP_MassEnqueuer class instead.\n */\nclass VP_WP_MassEnqueuer\n{\n\tprivate static $_instance = null;\n\n\tpublic static function instance()\n\t{\n\t\tif(self::$_instance == null)\n\t\t{\n\t\t\tself::$_instance = new VP_WP_Enqueuer();\n\t\t}\n\t\treturn self::$_instance;\n\t}\n\n}"
  },
  {
    "path": "classes/wp/user.php",
    "content": "<?php\n\nclass VP_WP_User\n{\n\n\tpublic static function get_users()\n\t{\n\t\tglobal $wpdb;\n\t\tif(function_exists('get_users'))\n\t\t{\n\t\t\t$wp_users = get_users();\n\t\t\t$result   = array();\n\t\t\tforeach ($wp_users as $user)\n\t\t\t{\n\t\t\t\tif( property_exists( $user, 'data' ) )\n\t\t\t\t\t$user = $user->data;\n\t\t\t\t$result[] = array('id' => $user->ID, 'display_name' => $user->display_name);\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\t$wp_user_search = $wpdb->get_results(\"SELECT ID, display_name FROM $wpdb->users ORDER BY ID\");\n\t\t\tforeach ( $wp_user_search as $userid )\n\t\t\t{\n\t\t\t\t$user_id       = (int) $userid->ID;\n\t\t\t\t$display_name  = stripslashes($userid->display_name);\n\t\t\t\t$result[] = array('id' => $user_id, 'display_name' => $display_name);\n\t\t\t}\n\t\t}\n\t\treturn $result;\n\t}\n\n\tpublic static function get_editable_roles()\n\t{\n\t\tglobal $wp_roles;\n\t\tif(!isset($wp_roles))\n\t\t{\n\t\t\t$wp_roles = new WP_Roles();\n\t\t}\n\t\t$all_roles      = $wp_roles->roles;\n\t\t$editable_roles = apply_filters('editable_roles', $all_roles);\n\t\treturn $editable_roles;\n\t}\n\n}"
  },
  {
    "path": "classes/wp/util.php",
    "content": "<?php\n\nclass VP_WP_Util\n{\n\n\tpublic static function kses_html($html)\n\t{\n\t\tif( function_exists('wp_kses_allowed_html') ) {\n\t\t\t$allowed_post_html = wp_kses_allowed_html( 'post' );\n\t\t}\n\t\telse {\n\t\t\tglobal $allowedposttags;\n\t\t\t$allowed_post_html = $allowedposttags;\n\t\t}\n\t\t$allow = array_merge($allowed_post_html, array(\n\t\t\t'link' => array(\n\t\t\t\t'href' => true,\n\t\t\t\t'rel'  => true,\n\t\t\t\t'type' => true,\n\t\t\t),\n\t\t\t'style' => array(\n\t\t\t\t'type' => true,\n\t\t\t),\n\t\t));\n\t\treturn wp_kses($html, $allow);\n\t}\n\n\tpublic static function admin_notice($message, $is_error = false)\n\t{\n\t\tif ($is_error)\n\t\t\techo '<div class=\"error\">';\n\t\telse\n\t\t\techo '<div class=\"updated\">';\n\n\t\techo \"<p><strong>$message</strong></p></div>\";\n\t}\n\n}"
  },
  {
    "path": "config/dependencies.php",
    "content": "<?php\n\nreturn array(\n\n\t////////////////////////////////////////////////\n\t// Scripts and Styles Dependencies Definition //\n\t////////////////////////////////////////////////\n\n\t/**\n\t * jQuery UI Theme\n\t */\n\t'jqui_theme' => ($jqui_theme = 'smoothness'),\n\n\t/**\n\t * Scripts.\n\t */\n\t'scripts' => array(\n\t\t'always' => array('jquery', 'scrollspy', 'tipsy', 'jquery-typing'),\n\t\t'paths' => array(\n\t\t\t'jquery' => array(\n\t\t\t\t'path'     => '',\n\t\t\t\t'deps'     => array(),\n\t\t\t\t'ver'      => '1.8.3',\n\t\t\t\t'override' => false,\n\t\t\t),\n\t\t\t'bootstrap-colorpicker' => array(\n\t\t\t\t'path'     => VP_PUBLIC_URL . '/js/vendor/bootstrap-colorpicker.js',\n\t\t\t\t'deps'     => array('jquery'),\n\t\t\t\t'ver'      => false,\n\t\t\t),\n\t\t\t'tipsy' => array(\n\t\t\t\t'path'     => VP_PUBLIC_URL . '/js/vendor/jquery.tipsy.js',\n\t\t\t\t'deps'     => array('jquery'),\n\t\t\t\t'ver'      => '1.0.0a'\n\t\t\t),\n\t\t\t'scrollspy' => array(\n\t\t\t\t'path'     => VP_PUBLIC_URL . '/js/vendor/jquery-scrollspy.js',\n\t\t\t\t'deps'     => array('jquery'),\n\t\t\t\t'ver'      => false,\n\t\t\t),\n\t\t\t'jquery-ui-core' => array(\n\t\t\t\t'path'     => '',\n\t\t\t\t'deps'     => array(),\n\t\t\t\t'ver'      => '1.9.2',\n\t\t\t),\n\t\t\t'jquery-ui-widget' => array(\n\t\t\t\t'path'     => '',\n\t\t\t\t'deps'     => array(),\n\t\t\t\t'ver'      => '1.9.2',\n\t\t\t),\n\t\t\t'jquery-ui-mouse' => array(\n\t\t\t\t'path'     => '',\n\t\t\t\t'deps'     => array('jquery-ui-widget'),\n\t\t\t\t'ver'      => '1.9.2',\n\t\t\t),\n\t\t\t'jquery-ui-slider' => array(\n\t\t\t\t'path'     => '',\n\t\t\t\t'deps'     => array('jquery', 'jquery-ui-core', 'jquery-ui-widget', 'jquery-ui-mouse'),\n\t\t\t\t'ver'      => '1.9.2',\n\t\t\t),\n\t\t\t'jquery-ui-datepicker' => array(\n\t\t\t\t'path'     => '',\n\t\t\t\t'deps'     => array('jquery', 'jquery-ui-core', 'jquery-ui-widget'),\n\t\t\t\t'ver'      => '1.9.2',\n\t\t\t),\n\t\t\t'jquery-typing' => array(\n\t\t\t\t'path'     => VP_PUBLIC_URL . '/js/vendor/jquery.typing-0.2.0.min.js',\n\t\t\t\t'deps'     => array('jquery'),\n\t\t\t\t'ver'      => '0.2',\n\t\t\t),\n\t\t\t'ace-editor' => array(\n\t\t\t\t'path'     => VP_PUBLIC_URL . '/js/vendor/ace/ace.js',\n\t\t\t\t'deps'     => array(),\n\t\t\t\t'ver'      => '1.0.0',\n\t\t\t),\n\t\t\t'select2' => array(\n\t\t\t\t'path'     => VP_PUBLIC_URL . '/js/vendor/select2.min.js',\n\t\t\t\t'deps'     => array('jquery'),\n\t\t\t\t'ver'      => '3.3.2',\n\t\t\t\t'override' => true,\n\t\t\t),\n\t\t\t'select2-sortable' => array(\n\t\t\t\t'path'     => VP_PUBLIC_URL . '/js/vendor/select2.sortable.js',\n\t\t\t\t'deps'     => array('jquery', 'jquery-ui-sortable', 'select2'),\n\t\t\t\t'ver'      => '1.0.0',\n\t\t\t\t'override' => true,\n\t\t\t),\n\t\t\t'reveal' => array(\n\t\t\t\t'path'     => VP_PUBLIC_URL . '/js/vendor/jquery.reveal.js',\n\t\t\t\t'deps'     => array('jquery'),\n\t\t\t\t'ver'      => '1.0.0',\n\t\t\t),\n\t\t\t'kia-metabox' => array(\n\t\t\t\t'path'     => VP_PUBLIC_URL . '/js/kia-metabox.js',\n\t\t\t\t'deps'     => array('jquery', 'editor'),\n\t\t\t\t'ver'      => '1.0',\n\t\t\t\t'override' => true,\n\t\t\t),\n\t\t\t'shared' => array(\n\t\t\t\t'path'     => VP_PUBLIC_URL . '/js/shared.min.js',\n\t\t\t\t'deps'     => array(),\n\t\t\t\t'ver'      => '1.1',\n\t\t\t\t'localize' => array(\n\t\t\t\t\t'name' => 'vp_wp',\n\t\t\t\t\t'keys' => array(\n\t\t\t\t\t\t'use_upload', 'use_new_media_upload', 'public_url', 'wp_include_url', 'val_msg', 'ctrl_msg',\n\t\t\t\t\t\t'alphabet_validatable', 'alphanumeric_validatable', 'numeric_validatable', 'email_validatable',\n\t\t\t\t\t\t'url_validatable', 'maxlength_validatable', 'minlength_validatable'\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t),\n\t\t\t'vp-option' => array(\n\t\t\t\t'path'     => VP_PUBLIC_URL . '/js/option.min.js',\n\t\t\t\t'deps'     => array(),\n\t\t\t\t'ver'      => '2.0',\n\t\t\t\t'localize' => array(\n\t\t\t\t\t'name' => 'vp_opt',\n\t\t\t\t\t'keys' => array(\n\t\t\t\t\t\t'util_msg', 'nonce'\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t),\n\t\t\t'vp-metabox' => array(\n\t\t\t\t'path'     => VP_PUBLIC_URL . '/js/metabox.min.js',\n\t\t\t\t'deps'     => array(),\n\t\t\t\t'ver'      => '2.0',\n\t\t\t\t'localize' => array(\n\t\t\t\t\t'name' => 'vp_mb',\n\t\t\t\t\t'keys' => array(\n\t\t\t\t\t\t'use_upload', 'use_new_media_upload'\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t),\n\t\t\t'vp-shortcode-qt' => array(\n\t\t\t\t'path'     => VP_PUBLIC_URL . '/js/shortcode-quicktags.js',\n\t\t\t\t'deps'     => array('reveal'),\n\t\t\t\t'ver'      => '1.0.0',\n\t\t\t),\n\t\t\t'vp-shortcode' => array(\n\t\t\t\t'path'     => VP_PUBLIC_URL . '/js/shortcode-menu.js',\n\t\t\t\t'deps'     => array('reveal', 'vp-shortcode-qt'),\n\t\t\t\t'ver'      => '2.0',\n\t\t\t\t'localize' => array(\n\t\t\t\t\t'name' => 'vp_ext_sc',\n\t\t\t\t\t'keys' => array(\n\t\t\t\t\t\t'use_upload', 'use_new_media_upload', 'public_url'\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t),\n\t\t),\n\t),\n\n\t/**\n\t * Styles.\n\t */\n\t'styles' => array(\n\t\t'always' => array('tipsy', 'font-awesome'),\n\t\t'paths' => array(\n\t\t\t'bootstrap-colorpicker' => array(\n\t\t\t\t'path' => VP_PUBLIC_URL . '/css/vendor/bootstrap-colorpicker.css',\n\t\t\t\t'deps' => array(),\n\t\t\t),\n\t\t\t'tipsy' => array(\n\t\t\t\t'path' => VP_PUBLIC_URL . '/css/vendor/tipsy.css',\n\t\t\t\t'deps' => array(),\n\t\t\t),\n\t\t\t'jqui' => array(\n\t\t\t\t'path' => VP_PUBLIC_URL . '/css/vendor/jqueryui/themes/' . $jqui_theme . '/jquery-ui-1.9.2.custom.min.css',\n\t\t\t\t'deps' => array(),\n\t\t\t),\n\t\t\t'font-awesome' => array(\n\t\t\t\t'path' => VP_PUBLIC_URL . '/css/vendor/font-awesome.min.css',\n\t\t\t\t'deps' => array(),\n\t\t\t),\n\t\t\t'select2' => array(\n\t\t\t\t'path' => VP_PUBLIC_URL . '/css/vendor/select2.css',\n\t\t\t\t'deps' => array(),\n\t\t\t),\n\t\t\t'reveal' => array(\n\t\t\t\t'path' => VP_PUBLIC_URL . '/css/vendor/reveal.css',\n\t\t\t\t'deps' => array(),\n\t\t\t),\n\t\t\t'vp-option' => array(\n\t\t\t\t'path' => VP_PUBLIC_URL . '/css/option.min.css',\n\t\t\t\t'deps' => array(),\n\t\t\t),\n\t\t\t'vp-metabox' => array(\n\t\t\t\t'path' => VP_PUBLIC_URL . '/css/metabox.min.css',\n\t\t\t\t'deps' => array(),\n\t\t\t),\n\t\t\t'vp-shortcode' => array(\n\t\t\t\t'path' => VP_PUBLIC_URL . '/css/shortcode.min.css',\n\t\t\t\t'deps' => array('reveal'),\n\t\t\t),\n\t\t),\n\t),\n\n\t/**\n\t * Rules for dynamic loading of dependencies, load only what needed.\n\t */\n\t'rules'   => array(\n\t\t'color'       => array( 'js' => array('bootstrap-colorpicker'), 'css' => array('bootstrap-colorpicker') ),\n\t\t'select'      => array( 'js' => array('select2'), 'css' => array('select2') ),\n\t\t'multiselect' => array( 'js' => array('select2'), 'css' => array('select2') ),\n\t\t'slider'      => array( 'js' => array('jquery-ui-slider'), 'css' => array('jqui') ),\n\t\t'date'        => array( 'js' => array('jquery-ui-datepicker'), 'css' => array('jqui') ),\n\t\t'codeeditor'  => array( 'js' => array('ace-editor'), 'css' => array() ),\n\t\t'sorter'      => array( 'js' => array('select2-sortable'), 'css' => array('select2', 'jqui') ),\n\t\t'fontawesome' => array( 'js' => array('select2'), 'css' => array('select2') ),\n\t\t'wpeditor'    => array( 'js' => array('kia-metabox'), 'css' => array() ),\n\t)\n\n);\n\n/**\n * EOF\n */"
  },
  {
    "path": "config/messages.php",
    "content": "<?php\n\nreturn array(\n\n\t////////////////////////////////////////\n\t// Localized JS Message Configuration //\n\t////////////////////////////////////////\n\n\t/**\n\t * Validation Messages\n\t */\n\t'validation' => array(\n\t\t'alphabet'     => __('Value needs to be Alphabet', 'vp_textdomain'),\n\t\t'alphanumeric' => __('Value needs to be Alphanumeric', 'vp_textdomain'),\n\t\t'numeric'      => __('Value needs to be Numeric', 'vp_textdomain'),\n\t\t'email'        => __('Value needs to be Valid Email', 'vp_textdomain'),\n\t\t'url'          => __('Value needs to be Valid URL', 'vp_textdomain'),\n\t\t'maxlength'    => __('Length needs to be less than {0} characters', 'vp_textdomain'),\n\t\t'minlength'    => __('Length needs to be more than {0} characters', 'vp_textdomain'),\n\t\t'maxselected'  => __('Select no more than {0} items', 'vp_textdomain'),\n\t\t'minselected'  => __('Select at least {0} items', 'vp_textdomain'),\n\t\t'required'     => __('This is required', 'vp_textdomain'),\n\t),\n\n\t/**\n\t * Import / Export Messages\n\t */\n\t'util' => array(\n\t\t'import_success'    => __('Import succeed, option page will be refreshed..', 'vp_textdomain'),\n\t\t'import_failed'     => __('Import failed', 'vp_textdomain'),\n\t\t'export_success'    => __('Export succeed, copy the JSON formatted options', 'vp_textdomain'),\n\t\t'export_failed'     => __('Export failed', 'vp_textdomain'),\n\t\t'restore_success'   => __('Restoration succeed, option page will be refreshed..', 'vp_textdomain'),\n\t\t'restore_nochanges' => __('Options identical to default', 'vp_textdomain'),\n\t\t'restore_failed'    => __('Restoration failed', 'vp_textdomain'),\n\t),\n\n\t/**\n\t * Control Fields String\n\t */\n\t'control' => array(\n\t\t// select2 select box\n\t\t'select2_placeholder' => __('Select option(s)', 'vp_textdomain'),\n\t\t// fontawesome chooser\n\t\t'fac_placeholder'     => __('Select an Icon', 'vp_textdomain'),\n\t),\n\n);\n\n/**\n * EOF\n */"
  },
  {
    "path": "constant.php",
    "content": "<?php\n\n/*\n|--------------------------------------------------------------------------\n| Vafpress Framework Constants\n|--------------------------------------------------------------------------\n*/\n\ndefined('VP_VERSION')     or define('VP_VERSION'    , '2.0-beta');\ndefined('VP_NAMESPACE')   or define('VP_NAMESPACE'  , 'VP_');\ndefined('VP_DIR')         or define('VP_DIR'        , untrailingslashit(dirname(__FILE__)));\ndefined('VP_DIR_NAME')    or define('VP_DIR_NAME'   , basename(VP_DIR));\ndefined('VP_IMAGE_DIR')   or define('VP_IMAGE_DIR'  , VP_DIR . '/public/img');\ndefined('VP_CONFIG_DIR')  or define('VP_CONFIG_DIR' , VP_DIR . '/config');\ndefined('VP_DATA_DIR')    or define('VP_DATA_DIR'   , VP_DIR . '/data');\ndefined('VP_CLASSES_DIR') or define('VP_CLASSES_DIR', VP_DIR . '/classes');\ndefined('VP_VIEWS_DIR')   or define('VP_VIEWS_DIR'  , VP_DIR . '/views');\ndefined('VP_INCLUDE_DIR') or define('VP_INCLUDE_DIR', VP_DIR . '/includes');\n\n// get and normalize framework dirname\n$dirname        = str_replace('\\\\' ,'/', dirname(__FILE__)); // standardize slash\n$dirname        = preg_replace('|/+|', '/', $dirname);       // normalize duplicate slash\n\n// get and normalize WP content directory\n$wp_content_dir = str_replace( '\\\\', '/', WP_CONTENT_DIR );  // standardize slash\n\n// build relative url\n$relative_url   = str_replace($wp_content_dir, \"\", $dirname);\n\n// finally framework base url\n$vp_url         = content_url() . $relative_url;\n\ndefined('VP_URL')         or define('VP_URL'        , untrailingslashit($vp_url));\ndefined('VP_PUBLIC_URL')  or define('VP_PUBLIC_URL' , VP_URL        . '/public');\ndefined('VP_IMAGE_URL')   or define('VP_IMAGE_URL'  , VP_PUBLIC_URL . '/img');\ndefined('VP_INCLUDE_URL') or define('VP_INCLUDE_URL', VP_URL        . '/includes');\n\n// Get the start time and memory usage for profiling\ndefined('VP_START_TIME')  or define('VP_START_TIME', microtime(true));\ndefined('VP_START_MEM')   or define('VP_START_MEM',  memory_get_usage());\n\n/**\n * EOF\n */"
  },
  {
    "path": "credits.txt",
    "content": "Metabox Support:\n\n- WPAlchemy MetaBox PHP Class\n  by Dimas Begunoff\n  http://www.farinspace.com/wpalchemy-metabox/\n\n- Multiple WYSIWYG\n  by Kathy (helgatheviking)\n  http://www.kathyisawesome.com/426/multiple-wordpress-wysiwyg-visual-editors/\n\nIcons:\n\n- FontAwesome\n  by Dave Gandy\n  http://fortawesome.github.com/Font-Awesome/"
  },
  {
    "path": "data/gwf.json",
    "content": "{\"ABeeZee\":{\"weights\":[\"normal\"],\"styles\":[\"normal\",\"italic\"],\"subsets\":[\"latin\"]},\"Abel\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Abril Fatface\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Aclonica\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Acme\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Actor\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Adamina\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Advent Pro\":{\"weights\":[\"normal\",\"100\",\"200\",\"300\",\"500\",\"600\",\"700\"],\"styles\":[\"normal\"],\"subsets\":[\"greek\",\"latin-ext\",\"latin\"]},\"Aguafina Script\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Akronim\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Aladin\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Aldrich\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Alef\":{\"weights\":[\"normal\",\"700\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Alegreya\":{\"weights\":[\"normal\",\"700\",\"900\"],\"styles\":[\"normal\",\"italic\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Alegreya SC\":{\"weights\":[\"normal\",\"700\",\"900\"],\"styles\":[\"normal\",\"italic\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Alegreya Sans\":{\"weights\":[\"normal\",\"100\",\"300\",\"500\",\"700\",\"800\",\"900\"],\"styles\":[\"normal\",\"italic\"],\"subsets\":[\"latin-ext\",\"vietnamese\",\"latin\"]},\"Alegreya Sans SC\":{\"weights\":[\"normal\",\"100\",\"300\",\"500\",\"700\",\"800\",\"900\"],\"styles\":[\"normal\",\"italic\"],\"subsets\":[\"latin-ext\",\"vietnamese\",\"latin\"]},\"Alex Brush\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Alfa Slab One\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Alice\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Alike\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Alike Angular\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Allan\":{\"weights\":[\"normal\",\"700\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Allerta\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Allerta Stencil\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Allura\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Almendra\":{\"weights\":[\"normal\",\"700\"],\"styles\":[\"normal\",\"italic\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Almendra Display\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Almendra SC\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Amarante\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Amaranth\":{\"weights\":[\"normal\",\"700\"],\"styles\":[\"normal\",\"italic\"],\"subsets\":[\"latin\"]},\"Amatic SC\":{\"weights\":[\"normal\",\"700\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Amethysta\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Anaheim\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Andada\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Andika\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"cyrillic\",\"latin\",\"cyrillic-ext\"]},\"Angkor\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"khmer\"]},\"Annie Use Your Telescope\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Anonymous Pro\":{\"weights\":[\"normal\",\"700\"],\"styles\":[\"normal\",\"italic\"],\"subsets\":[\"greek\",\"greek-ext\",\"latin-ext\",\"cyrillic\",\"latin\",\"cyrillic-ext\"]},\"Antic\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Antic Didone\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Antic Slab\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Anton\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Arapey\":{\"weights\":[\"normal\"],\"styles\":[\"normal\",\"italic\"],\"subsets\":[\"latin\"]},\"Arbutus\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Arbutus Slab\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Architects Daughter\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Archivo Black\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Archivo Narrow\":{\"weights\":[\"normal\",\"700\"],\"styles\":[\"normal\",\"italic\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Arimo\":{\"weights\":[\"normal\",\"700\"],\"styles\":[\"normal\",\"italic\"],\"subsets\":[\"greek\",\"greek-ext\",\"latin-ext\",\"cyrillic\",\"vietnamese\",\"latin\",\"cyrillic-ext\"]},\"Arizonia\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Armata\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Artifika\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Arvo\":{\"weights\":[\"normal\",\"700\"],\"styles\":[\"normal\",\"italic\"],\"subsets\":[\"latin\"]},\"Asap\":{\"weights\":[\"normal\",\"700\"],\"styles\":[\"normal\",\"italic\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Asset\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Astloch\":{\"weights\":[\"normal\",\"700\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Asul\":{\"weights\":[\"normal\",\"700\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Atomic Age\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Aubrey\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Audiowide\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Autour One\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Average\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Average Sans\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Averia Gruesa Libre\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Averia Libre\":{\"weights\":[\"normal\",\"300\",\"700\"],\"styles\":[\"normal\",\"italic\"],\"subsets\":[\"latin\"]},\"Averia Sans Libre\":{\"weights\":[\"normal\",\"300\",\"700\"],\"styles\":[\"normal\",\"italic\"],\"subsets\":[\"latin\"]},\"Averia Serif Libre\":{\"weights\":[\"normal\",\"300\",\"700\"],\"styles\":[\"normal\",\"italic\"],\"subsets\":[\"latin\"]},\"Bad Script\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"cyrillic\",\"latin\"]},\"Balthazar\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Bangers\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Basic\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Battambang\":{\"weights\":[\"normal\",\"700\"],\"styles\":[\"normal\"],\"subsets\":[\"khmer\"]},\"Baumans\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Bayon\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"khmer\"]},\"Belgrano\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Belleza\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"BenchNine\":{\"weights\":[\"normal\",\"300\",\"700\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Bentham\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Berkshire Swash\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Bevan\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Bigelow Rules\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Bigshot One\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Bilbo\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Bilbo Swash Caps\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Bitter\":{\"weights\":[\"normal\",\"700\"],\"styles\":[\"normal\",\"italic\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Black Ops One\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Bokor\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"khmer\"]},\"Bonbon\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Boogaloo\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Bowlby One\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Bowlby One SC\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Brawler\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Bree Serif\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Bubblegum Sans\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Bubbler One\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Buda\":{\"weights\":[\"normal\",\"300\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Buenard\":{\"weights\":[\"normal\",\"700\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Butcherman\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Butterfly Kids\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Cabin\":{\"weights\":[\"normal\",\"500\",\"600\",\"700\"],\"styles\":[\"normal\",\"italic\"],\"subsets\":[\"latin\"]},\"Cabin Condensed\":{\"weights\":[\"normal\",\"500\",\"600\",\"700\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Cabin Sketch\":{\"weights\":[\"normal\",\"700\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Caesar Dressing\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Cagliostro\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Calligraffitti\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Cambo\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Candal\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Cantarell\":{\"weights\":[\"normal\",\"700\"],\"styles\":[\"normal\",\"italic\"],\"subsets\":[\"latin\"]},\"Cantata One\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Cantora One\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Capriola\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Cardo\":{\"weights\":[\"normal\",\"700\"],\"styles\":[\"normal\",\"italic\"],\"subsets\":[\"greek\",\"greek-ext\",\"latin-ext\",\"latin\"]},\"Carme\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Carrois Gothic\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Carrois Gothic SC\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Carter One\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Caudex\":{\"weights\":[\"normal\",\"700\"],\"styles\":[\"normal\",\"italic\"],\"subsets\":[\"greek\",\"greek-ext\",\"latin-ext\",\"latin\"]},\"Cedarville Cursive\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Ceviche One\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Changa One\":{\"weights\":[\"normal\"],\"styles\":[\"normal\",\"italic\"],\"subsets\":[\"latin\"]},\"Chango\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Chau Philomene One\":{\"weights\":[\"normal\"],\"styles\":[\"normal\",\"italic\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Chela One\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Chelsea Market\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Chenla\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"khmer\"]},\"Cherry Cream Soda\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Cherry Swash\":{\"weights\":[\"normal\",\"700\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Chewy\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Chicle\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Chivo\":{\"weights\":[\"normal\",\"900\"],\"styles\":[\"normal\",\"italic\"],\"subsets\":[\"latin\"]},\"Cinzel\":{\"weights\":[\"normal\",\"700\",\"900\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Cinzel Decorative\":{\"weights\":[\"normal\",\"700\",\"900\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Clicker Script\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Coda\":{\"weights\":[\"normal\",\"800\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Coda Caption\":{\"weights\":[\"normal\",\"800\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Codystar\":{\"weights\":[\"normal\",\"300\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Combo\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Comfortaa\":{\"weights\":[\"normal\",\"300\",\"700\"],\"styles\":[\"normal\"],\"subsets\":[\"greek\",\"latin-ext\",\"cyrillic\",\"latin\",\"cyrillic-ext\"]},\"Coming Soon\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Concert One\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Condiment\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Content\":{\"weights\":[\"normal\",\"700\"],\"styles\":[\"normal\"],\"subsets\":[\"khmer\"]},\"Contrail One\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Convergence\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Cookie\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Copse\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Corben\":{\"weights\":[\"normal\",\"700\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Courgette\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Cousine\":{\"weights\":[\"normal\",\"700\"],\"styles\":[\"normal\",\"italic\"],\"subsets\":[\"greek\",\"greek-ext\",\"latin-ext\",\"cyrillic\",\"vietnamese\",\"latin\",\"cyrillic-ext\"]},\"Coustard\":{\"weights\":[\"normal\",\"900\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Covered By Your Grace\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Crafty Girls\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Creepster\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Crete Round\":{\"weights\":[\"normal\"],\"styles\":[\"normal\",\"italic\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Crimson Text\":{\"weights\":[\"normal\",\"600\",\"700\"],\"styles\":[\"normal\",\"italic\"],\"subsets\":[\"latin\"]},\"Croissant One\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Crushed\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Cuprum\":{\"weights\":[\"normal\",\"700\"],\"styles\":[\"normal\",\"italic\"],\"subsets\":[\"latin-ext\",\"cyrillic\",\"latin\"]},\"Cutive\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Cutive Mono\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Damion\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Dancing Script\":{\"weights\":[\"normal\",\"700\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Dangrek\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"khmer\"]},\"Dawning of a New Day\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Days One\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Delius\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Delius Swash Caps\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Delius Unicase\":{\"weights\":[\"normal\",\"700\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Della Respira\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Denk One\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Devonshire\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Didact Gothic\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"greek\",\"greek-ext\",\"latin-ext\",\"cyrillic\",\"latin\",\"cyrillic-ext\"]},\"Diplomata\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Diplomata SC\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Domine\":{\"weights\":[\"normal\",\"700\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Donegal One\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Doppio One\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Dorsa\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Dosis\":{\"weights\":[\"normal\",\"200\",\"300\",\"500\",\"600\",\"700\",\"800\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Dr Sugiyama\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Droid Sans\":{\"weights\":[\"normal\",\"700\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Droid Sans Mono\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Droid Serif\":{\"weights\":[\"normal\",\"700\"],\"styles\":[\"normal\",\"italic\"],\"subsets\":[\"latin\"]},\"Duru Sans\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Dynalight\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"EB Garamond\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"cyrillic\",\"vietnamese\",\"latin\",\"cyrillic-ext\"]},\"Eagle Lake\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Eater\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Economica\":{\"weights\":[\"normal\",\"700\"],\"styles\":[\"normal\",\"italic\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Electrolize\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Elsie\":{\"weights\":[\"normal\",\"900\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Elsie Swash Caps\":{\"weights\":[\"normal\",\"900\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Emblema One\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Emilys Candy\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Engagement\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Englebert\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Enriqueta\":{\"weights\":[\"normal\",\"700\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Erica One\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Esteban\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Euphoria Script\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Ewert\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Exo\":{\"weights\":[\"normal\",\"100\",\"200\",\"300\",\"500\",\"600\",\"700\",\"800\",\"900\"],\"styles\":[\"normal\",\"italic\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Exo 2\":{\"weights\":[\"normal\",\"100\",\"200\",\"300\",\"500\",\"600\",\"700\",\"800\",\"900\"],\"styles\":[\"normal\",\"italic\"],\"subsets\":[\"latin-ext\",\"cyrillic\",\"latin\"]},\"Expletus Sans\":{\"weights\":[\"normal\",\"500\",\"600\",\"700\"],\"styles\":[\"normal\",\"italic\"],\"subsets\":[\"latin\"]},\"Fanwood Text\":{\"weights\":[\"normal\"],\"styles\":[\"normal\",\"italic\"],\"subsets\":[\"latin\"]},\"Fascinate\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Fascinate Inline\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Faster One\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Fasthand\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"khmer\"]},\"Fauna One\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Federant\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Federo\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Felipa\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Fenix\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Finger Paint\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Fjalla One\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Fjord One\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Flamenco\":{\"weights\":[\"normal\",\"300\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Flavors\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Fondamento\":{\"weights\":[\"normal\"],\"styles\":[\"normal\",\"italic\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Fontdiner Swanky\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Forum\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"cyrillic\",\"latin\",\"cyrillic-ext\"]},\"Francois One\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Freckle Face\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Fredericka the Great\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Fredoka One\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Freehand\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"khmer\"]},\"Fresca\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Frijole\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Fruktur\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Fugaz One\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"GFS Didot\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"greek\"]},\"GFS Neohellenic\":{\"weights\":[\"normal\",\"700\"],\"styles\":[\"normal\",\"italic\"],\"subsets\":[\"greek\"]},\"Gabriela\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Gafata\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Galdeano\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Galindo\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Gentium Basic\":{\"weights\":[\"normal\",\"700\"],\"styles\":[\"normal\",\"italic\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Gentium Book Basic\":{\"weights\":[\"normal\",\"700\"],\"styles\":[\"normal\",\"italic\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Geo\":{\"weights\":[\"normal\"],\"styles\":[\"normal\",\"italic\"],\"subsets\":[\"latin\"]},\"Geostar\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Geostar Fill\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Germania One\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Gilda Display\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Give You Glory\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Glass Antiqua\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Glegoo\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Gloria Hallelujah\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Goblin One\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Gochi Hand\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Gorditas\":{\"weights\":[\"normal\",\"700\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Goudy Bookletter 1911\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Graduate\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Grand Hotel\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Gravitas One\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Great Vibes\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Griffy\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Gruppo\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Gudea\":{\"weights\":[\"normal\",\"700\"],\"styles\":[\"normal\",\"italic\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Habibi\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Hammersmith One\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Hanalei\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Hanalei Fill\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Handlee\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Hanuman\":{\"weights\":[\"normal\",\"700\"],\"styles\":[\"normal\"],\"subsets\":[\"khmer\"]},\"Happy Monkey\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Headland One\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Henny Penny\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Herr Von Muellerhoff\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Holtwood One SC\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Homemade Apple\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Homenaje\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"IM Fell DW Pica\":{\"weights\":[\"normal\"],\"styles\":[\"normal\",\"italic\"],\"subsets\":[\"latin\"]},\"IM Fell DW Pica SC\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"IM Fell Double Pica\":{\"weights\":[\"normal\"],\"styles\":[\"normal\",\"italic\"],\"subsets\":[\"latin\"]},\"IM Fell Double Pica SC\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"IM Fell English\":{\"weights\":[\"normal\"],\"styles\":[\"normal\",\"italic\"],\"subsets\":[\"latin\"]},\"IM Fell English SC\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"IM Fell French Canon\":{\"weights\":[\"normal\"],\"styles\":[\"normal\",\"italic\"],\"subsets\":[\"latin\"]},\"IM Fell French Canon SC\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"IM Fell Great Primer\":{\"weights\":[\"normal\"],\"styles\":[\"normal\",\"italic\"],\"subsets\":[\"latin\"]},\"IM Fell Great Primer SC\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Iceberg\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Iceland\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Imprima\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Inconsolata\":{\"weights\":[\"normal\",\"700\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Inder\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Indie Flower\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Inika\":{\"weights\":[\"normal\",\"700\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Irish Grover\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Istok Web\":{\"weights\":[\"normal\",\"700\"],\"styles\":[\"normal\",\"italic\"],\"subsets\":[\"latin-ext\",\"cyrillic\",\"latin\",\"cyrillic-ext\"]},\"Italiana\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Italianno\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Jacques Francois\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Jacques Francois Shadow\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Jim Nightshade\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Jockey One\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Jolly Lodger\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Josefin Sans\":{\"weights\":[\"normal\",\"100\",\"300\",\"600\",\"700\"],\"styles\":[\"normal\",\"italic\"],\"subsets\":[\"latin\"]},\"Josefin Slab\":{\"weights\":[\"normal\",\"100\",\"300\",\"600\",\"700\"],\"styles\":[\"normal\",\"italic\"],\"subsets\":[\"latin\"]},\"Joti One\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Judson\":{\"weights\":[\"normal\",\"700\"],\"styles\":[\"normal\",\"italic\"],\"subsets\":[\"latin\"]},\"Julee\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Julius Sans One\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Junge\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Jura\":{\"weights\":[\"normal\",\"300\",\"500\",\"600\"],\"styles\":[\"normal\"],\"subsets\":[\"greek\",\"greek-ext\",\"latin-ext\",\"cyrillic\",\"latin\",\"cyrillic-ext\"]},\"Just Another Hand\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Just Me Again Down Here\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Kameron\":{\"weights\":[\"normal\",\"700\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Kantumruy\":{\"weights\":[\"normal\",\"300\",\"700\"],\"styles\":[\"normal\"],\"subsets\":[\"khmer\"]},\"Karla\":{\"weights\":[\"normal\",\"700\"],\"styles\":[\"normal\",\"italic\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Kaushan Script\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Kavoon\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Kdam Thmor\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"khmer\"]},\"Keania One\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Kelly Slab\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"cyrillic\",\"latin\"]},\"Kenia\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Khmer\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"khmer\"]},\"Kite One\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Knewave\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Kotta One\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Koulen\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"khmer\"]},\"Kranky\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Kreon\":{\"weights\":[\"normal\",\"300\",\"700\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Kristi\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Krona One\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"La Belle Aurore\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Lancelot\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Lato\":{\"weights\":[\"normal\",\"100\",\"300\",\"700\",\"900\"],\"styles\":[\"normal\",\"italic\"],\"subsets\":[\"latin\"]},\"League Script\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Leckerli One\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Ledger\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"cyrillic\",\"latin\"]},\"Lekton\":{\"weights\":[\"normal\",\"700\"],\"styles\":[\"normal\",\"italic\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Lemon\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Libre Baskerville\":{\"weights\":[\"normal\",\"700\"],\"styles\":[\"normal\",\"italic\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Life Savers\":{\"weights\":[\"normal\",\"700\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Lilita One\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Lily Script One\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Limelight\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Linden Hill\":{\"weights\":[\"normal\"],\"styles\":[\"normal\",\"italic\"],\"subsets\":[\"latin\"]},\"Lobster\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"cyrillic\",\"latin\",\"cyrillic-ext\"]},\"Lobster Two\":{\"weights\":[\"normal\",\"700\"],\"styles\":[\"normal\",\"italic\"],\"subsets\":[\"latin\"]},\"Londrina Outline\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Londrina Shadow\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Londrina Sketch\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Londrina Solid\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Lora\":{\"weights\":[\"normal\",\"700\"],\"styles\":[\"normal\",\"italic\"],\"subsets\":[\"latin-ext\",\"cyrillic\",\"latin\"]},\"Love Ya Like A Sister\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Loved by the King\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Lovers Quarrel\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Luckiest Guy\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Lusitana\":{\"weights\":[\"normal\",\"700\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Lustria\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Macondo\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Macondo Swash Caps\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Magra\":{\"weights\":[\"normal\",\"700\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Maiden Orange\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Mako\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Marcellus\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Marcellus SC\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Marck Script\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"cyrillic\",\"latin\"]},\"Margarine\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Marko One\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Marmelad\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"cyrillic\",\"latin\"]},\"Marvel\":{\"weights\":[\"normal\",\"700\"],\"styles\":[\"normal\",\"italic\"],\"subsets\":[\"latin\"]},\"Mate\":{\"weights\":[\"normal\"],\"styles\":[\"normal\",\"italic\"],\"subsets\":[\"latin\"]},\"Mate SC\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Maven Pro\":{\"weights\":[\"normal\",\"500\",\"700\",\"900\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"McLaren\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Meddon\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"MedievalSharp\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Medula One\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Megrim\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Meie Script\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Merienda\":{\"weights\":[\"normal\",\"700\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Merienda One\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Merriweather\":{\"weights\":[\"normal\",\"300\",\"700\",\"900\"],\"styles\":[\"normal\",\"italic\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Merriweather Sans\":{\"weights\":[\"normal\",\"300\",\"700\",\"800\"],\"styles\":[\"normal\",\"italic\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Metal\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"khmer\"]},\"Metal Mania\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Metamorphous\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Metrophobic\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Michroma\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Milonga\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Miltonian\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Miltonian Tattoo\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Miniver\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Miss Fajardose\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Modern Antiqua\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Molengo\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Molle\":{\"weights\":[\"normal\"],\"styles\":[\"normal\",\"italic\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Monda\":{\"weights\":[\"normal\",\"700\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Monofett\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Monoton\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Monsieur La Doulaise\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Montaga\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Montez\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Montserrat\":{\"weights\":[\"normal\",\"700\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Montserrat Alternates\":{\"weights\":[\"normal\",\"700\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Montserrat Subrayada\":{\"weights\":[\"normal\",\"700\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Moul\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"khmer\"]},\"Moulpali\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"khmer\"]},\"Mountains of Christmas\":{\"weights\":[\"normal\",\"700\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Mouse Memoirs\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Mr Bedfort\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Mr Dafoe\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Mr De Haviland\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Mrs Saint Delafield\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Mrs Sheppards\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Muli\":{\"weights\":[\"normal\",\"300\"],\"styles\":[\"normal\",\"italic\"],\"subsets\":[\"latin\"]},\"Mystery Quest\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Neucha\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"cyrillic\",\"latin\"]},\"Neuton\":{\"weights\":[\"normal\",\"200\",\"300\",\"700\",\"800\"],\"styles\":[\"normal\",\"italic\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"New Rocker\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"News Cycle\":{\"weights\":[\"normal\",\"700\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Niconne\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Nixie One\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Nobile\":{\"weights\":[\"normal\",\"700\"],\"styles\":[\"normal\",\"italic\"],\"subsets\":[\"latin\"]},\"Nokora\":{\"weights\":[\"normal\",\"700\"],\"styles\":[\"normal\"],\"subsets\":[\"khmer\"]},\"Norican\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Nosifer\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Nothing You Could Do\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Noticia Text\":{\"weights\":[\"normal\",\"700\"],\"styles\":[\"normal\",\"italic\"],\"subsets\":[\"latin-ext\",\"vietnamese\",\"latin\"]},\"Noto Sans\":{\"weights\":[\"normal\",\"700\"],\"styles\":[\"normal\",\"italic\"],\"subsets\":[\"greek\",\"greek-ext\",\"latin-ext\",\"cyrillic\",\"vietnamese\",\"latin\",\"cyrillic-ext\"]},\"Noto Serif\":{\"weights\":[\"normal\",\"700\"],\"styles\":[\"normal\",\"italic\"],\"subsets\":[\"greek\",\"greek-ext\",\"latin-ext\",\"cyrillic\",\"vietnamese\",\"latin\",\"cyrillic-ext\"]},\"Nova Cut\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Nova Flat\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Nova Mono\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"greek\",\"latin\"]},\"Nova Oval\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Nova Round\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Nova Script\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Nova Slim\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Nova Square\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Numans\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Nunito\":{\"weights\":[\"normal\",\"300\",\"700\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Odor Mean Chey\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"khmer\"]},\"Offside\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Old Standard TT\":{\"weights\":[\"normal\",\"700\"],\"styles\":[\"normal\",\"italic\"],\"subsets\":[\"latin\"]},\"Oldenburg\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Oleo Script\":{\"weights\":[\"normal\",\"700\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Oleo Script Swash Caps\":{\"weights\":[\"normal\",\"700\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Open Sans\":{\"weights\":[\"normal\",\"300\",\"600\",\"700\",\"800\"],\"styles\":[\"normal\",\"italic\"],\"subsets\":[\"greek\",\"greek-ext\",\"latin-ext\",\"cyrillic\",\"vietnamese\",\"latin\",\"cyrillic-ext\"]},\"Open Sans Condensed\":{\"weights\":[\"normal\",\"300\",\"700\"],\"styles\":[\"normal\"],\"subsets\":[\"greek\",\"greek-ext\",\"latin-ext\",\"cyrillic\",\"vietnamese\",\"latin\",\"cyrillic-ext\"]},\"Oranienbaum\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"cyrillic\",\"latin\",\"cyrillic-ext\"]},\"Orbitron\":{\"weights\":[\"normal\",\"500\",\"700\",\"900\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Oregano\":{\"weights\":[\"normal\"],\"styles\":[\"normal\",\"italic\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Orienta\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Original Surfer\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Oswald\":{\"weights\":[\"normal\",\"300\",\"700\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Over the Rainbow\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Overlock\":{\"weights\":[\"normal\",\"700\",\"900\"],\"styles\":[\"normal\",\"italic\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Overlock SC\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Ovo\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Oxygen\":{\"weights\":[\"normal\",\"300\",\"700\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Oxygen Mono\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"PT Mono\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"cyrillic\",\"latin\",\"cyrillic-ext\"]},\"PT Sans\":{\"weights\":[\"normal\",\"700\"],\"styles\":[\"normal\",\"italic\"],\"subsets\":[\"latin-ext\",\"cyrillic\",\"latin\",\"cyrillic-ext\"]},\"PT Sans Caption\":{\"weights\":[\"normal\",\"700\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"cyrillic\",\"latin\",\"cyrillic-ext\"]},\"PT Sans Narrow\":{\"weights\":[\"normal\",\"700\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"cyrillic\",\"latin\",\"cyrillic-ext\"]},\"PT Serif\":{\"weights\":[\"normal\",\"700\"],\"styles\":[\"normal\",\"italic\"],\"subsets\":[\"latin-ext\",\"cyrillic\",\"latin\",\"cyrillic-ext\"]},\"PT Serif Caption\":{\"weights\":[\"normal\"],\"styles\":[\"normal\",\"italic\"],\"subsets\":[\"latin-ext\",\"cyrillic\",\"latin\",\"cyrillic-ext\"]},\"Pacifico\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Paprika\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Parisienne\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Passero One\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Passion One\":{\"weights\":[\"normal\",\"700\",\"900\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Pathway Gothic One\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Patrick Hand\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"vietnamese\",\"latin\"]},\"Patrick Hand SC\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"vietnamese\",\"latin\"]},\"Patua One\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Paytone One\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Peralta\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Permanent Marker\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Petit Formal Script\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Petrona\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Philosopher\":{\"weights\":[\"normal\",\"700\"],\"styles\":[\"normal\",\"italic\"],\"subsets\":[\"cyrillic\",\"latin\"]},\"Piedra\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Pinyon Script\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Pirata One\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Plaster\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Play\":{\"weights\":[\"normal\",\"700\"],\"styles\":[\"normal\"],\"subsets\":[\"greek\",\"greek-ext\",\"latin-ext\",\"cyrillic\",\"latin\",\"cyrillic-ext\"]},\"Playball\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Playfair Display\":{\"weights\":[\"normal\",\"700\",\"900\"],\"styles\":[\"normal\",\"italic\"],\"subsets\":[\"latin-ext\",\"cyrillic\",\"latin\"]},\"Playfair Display SC\":{\"weights\":[\"normal\",\"700\",\"900\"],\"styles\":[\"normal\",\"italic\"],\"subsets\":[\"latin-ext\",\"cyrillic\",\"latin\"]},\"Podkova\":{\"weights\":[\"normal\",\"700\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Poiret One\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"cyrillic\",\"latin\"]},\"Poller One\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Poly\":{\"weights\":[\"normal\"],\"styles\":[\"normal\",\"italic\"],\"subsets\":[\"latin\"]},\"Pompiere\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Pontano Sans\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Port Lligat Sans\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Port Lligat Slab\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Prata\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Preahvihear\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"khmer\"]},\"Press Start 2P\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"greek\",\"latin-ext\",\"cyrillic\",\"latin\"]},\"Princess Sofia\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Prociono\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Prosto One\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"cyrillic\",\"latin\"]},\"Puritan\":{\"weights\":[\"normal\",\"700\"],\"styles\":[\"normal\",\"italic\"],\"subsets\":[\"latin\"]},\"Purple Purse\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Quando\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Quantico\":{\"weights\":[\"normal\",\"700\"],\"styles\":[\"normal\",\"italic\"],\"subsets\":[\"latin\"]},\"Quattrocento\":{\"weights\":[\"normal\",\"700\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Quattrocento Sans\":{\"weights\":[\"normal\",\"700\"],\"styles\":[\"normal\",\"italic\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Questrial\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Quicksand\":{\"weights\":[\"normal\",\"300\",\"700\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Quintessential\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Qwigley\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Racing Sans One\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Radley\":{\"weights\":[\"normal\"],\"styles\":[\"normal\",\"italic\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Raleway\":{\"weights\":[\"normal\",\"100\",\"200\",\"300\",\"500\",\"600\",\"700\",\"800\",\"900\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Raleway Dots\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Rambla\":{\"weights\":[\"normal\",\"700\"],\"styles\":[\"normal\",\"italic\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Rammetto One\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Ranchers\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Rancho\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Rationale\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Redressed\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Reenie Beanie\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Revalia\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Ribeye\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Ribeye Marrow\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Righteous\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Risque\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Roboto\":{\"weights\":[\"normal\",\"100\",\"300\",\"500\",\"700\",\"900\"],\"styles\":[\"normal\",\"italic\"],\"subsets\":[\"greek\",\"greek-ext\",\"latin-ext\",\"cyrillic\",\"vietnamese\",\"latin\",\"cyrillic-ext\"]},\"Roboto Condensed\":{\"weights\":[\"normal\",\"300\",\"700\"],\"styles\":[\"normal\",\"italic\"],\"subsets\":[\"greek\",\"greek-ext\",\"latin-ext\",\"cyrillic\",\"vietnamese\",\"latin\",\"cyrillic-ext\"]},\"Roboto Slab\":{\"weights\":[\"normal\",\"100\",\"300\",\"700\"],\"styles\":[\"normal\"],\"subsets\":[\"greek\",\"greek-ext\",\"latin-ext\",\"cyrillic\",\"vietnamese\",\"latin\",\"cyrillic-ext\"]},\"Rochester\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Rock Salt\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Rokkitt\":{\"weights\":[\"normal\",\"700\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Romanesco\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Ropa Sans\":{\"weights\":[\"normal\"],\"styles\":[\"normal\",\"italic\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Rosario\":{\"weights\":[\"normal\",\"700\"],\"styles\":[\"normal\",\"italic\"],\"subsets\":[\"latin\"]},\"Rosarivo\":{\"weights\":[\"normal\"],\"styles\":[\"normal\",\"italic\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Rouge Script\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Ruda\":{\"weights\":[\"normal\",\"700\",\"900\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Rufina\":{\"weights\":[\"normal\",\"700\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Ruge Boogie\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Ruluko\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Rum Raisin\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Ruslan Display\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"cyrillic\",\"latin\",\"cyrillic-ext\"]},\"Russo One\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"cyrillic\",\"latin\"]},\"Ruthie\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Rye\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Sacramento\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Sail\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Salsa\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Sanchez\":{\"weights\":[\"normal\"],\"styles\":[\"normal\",\"italic\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Sancreek\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Sansita One\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Sarina\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Satisfy\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Scada\":{\"weights\":[\"normal\",\"700\"],\"styles\":[\"normal\",\"italic\"],\"subsets\":[\"latin-ext\",\"cyrillic\",\"latin\"]},\"Schoolbell\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Seaweed Script\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Sevillana\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Seymour One\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"cyrillic\",\"latin\"]},\"Shadows Into Light\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Shadows Into Light Two\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Shanti\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Share\":{\"weights\":[\"normal\",\"700\"],\"styles\":[\"normal\",\"italic\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Share Tech\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Share Tech Mono\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Shojumaru\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Short Stack\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Siemreap\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"khmer\"]},\"Sigmar One\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Signika\":{\"weights\":[\"normal\",\"300\",\"600\",\"700\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Signika Negative\":{\"weights\":[\"normal\",\"300\",\"600\",\"700\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Simonetta\":{\"weights\":[\"normal\",\"900\"],\"styles\":[\"normal\",\"italic\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Sintony\":{\"weights\":[\"normal\",\"700\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Sirin Stencil\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Six Caps\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Skranji\":{\"weights\":[\"normal\",\"700\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Slackey\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Smokum\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Smythe\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Sniglet\":{\"weights\":[\"normal\",\"800\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Snippet\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Snowburst One\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Sofadi One\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Sofia\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Sonsie One\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Sorts Mill Goudy\":{\"weights\":[\"normal\"],\"styles\":[\"normal\",\"italic\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Source Code Pro\":{\"weights\":[\"normal\",\"200\",\"300\",\"500\",\"600\",\"700\",\"900\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Source Sans Pro\":{\"weights\":[\"normal\",\"200\",\"300\",\"600\",\"700\",\"900\"],\"styles\":[\"normal\",\"italic\"],\"subsets\":[\"latin-ext\",\"vietnamese\",\"latin\"]},\"Special Elite\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Spicy Rice\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Spinnaker\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Spirax\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Squada One\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Stalemate\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Stalinist One\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"cyrillic\",\"latin\"]},\"Stardos Stencil\":{\"weights\":[\"normal\",\"700\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Stint Ultra Condensed\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Stint Ultra Expanded\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Stoke\":{\"weights\":[\"normal\",\"300\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Strait\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Sue Ellen Francisco\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Sunshiney\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Supermercado One\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Suwannaphum\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"khmer\"]},\"Swanky and Moo Moo\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Syncopate\":{\"weights\":[\"normal\",\"700\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Tangerine\":{\"weights\":[\"normal\",\"700\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Taprom\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"khmer\"]},\"Tauri\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Telex\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Tenor Sans\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"cyrillic\",\"latin\",\"cyrillic-ext\"]},\"Text Me One\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"The Girl Next Door\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Tienne\":{\"weights\":[\"normal\",\"700\",\"900\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Tinos\":{\"weights\":[\"normal\",\"700\"],\"styles\":[\"normal\",\"italic\"],\"subsets\":[\"greek\",\"greek-ext\",\"latin-ext\",\"cyrillic\",\"vietnamese\",\"latin\",\"cyrillic-ext\"]},\"Titan One\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Titillium Web\":{\"weights\":[\"normal\",\"200\",\"300\",\"600\",\"700\",\"900\"],\"styles\":[\"normal\",\"italic\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Trade Winds\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Trocchi\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Trochut\":{\"weights\":[\"normal\",\"700\"],\"styles\":[\"normal\",\"italic\"],\"subsets\":[\"latin\"]},\"Trykker\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Tulpen One\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Ubuntu\":{\"weights\":[\"normal\",\"300\",\"500\",\"700\"],\"styles\":[\"normal\",\"italic\"],\"subsets\":[\"greek\",\"greek-ext\",\"latin-ext\",\"cyrillic\",\"latin\",\"cyrillic-ext\"]},\"Ubuntu Condensed\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"greek\",\"greek-ext\",\"latin-ext\",\"cyrillic\",\"latin\",\"cyrillic-ext\"]},\"Ubuntu Mono\":{\"weights\":[\"normal\",\"700\"],\"styles\":[\"normal\",\"italic\"],\"subsets\":[\"greek\",\"greek-ext\",\"latin-ext\",\"cyrillic\",\"latin\",\"cyrillic-ext\"]},\"Ultra\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Uncial Antiqua\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Underdog\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"cyrillic\",\"latin\"]},\"Unica One\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"UnifrakturCook\":{\"weights\":[\"normal\",\"700\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"UnifrakturMaguntia\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Unkempt\":{\"weights\":[\"normal\",\"700\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Unlock\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Unna\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"VT323\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Vampiro One\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Varela\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Varela Round\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Vast Shadow\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Vibur\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Vidaloka\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Viga\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Voces\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Volkhov\":{\"weights\":[\"normal\",\"700\"],\"styles\":[\"normal\",\"italic\"],\"subsets\":[\"latin\"]},\"Vollkorn\":{\"weights\":[\"normal\",\"700\"],\"styles\":[\"normal\",\"italic\"],\"subsets\":[\"latin\"]},\"Voltaire\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Waiting for the Sunrise\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Wallpoet\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Walter Turncoat\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Warnes\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Wellfleet\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Wendy One\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Wire One\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Yanone Kaffeesatz\":{\"weights\":[\"normal\",\"200\",\"300\",\"700\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"latin\"]},\"Yellowtail\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Yeseva One\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin-ext\",\"cyrillic\",\"latin\"]},\"Yesteryear\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]},\"Zeyada\":{\"weights\":[\"normal\"],\"styles\":[\"normal\"],\"subsets\":[\"latin\"]}}"
  },
  {
    "path": "data/sources.php",
    "content": "<?php\n\n/**\n * Here is the place to put your own defined function that serve as\n * datasource to field with multiple options.\n */\n\nfunction vp_get_categories()\n{\n\t$wp_cat = get_categories(array('hide_empty' => 0 ));\n\n\t$result = array();\n\tforeach ($wp_cat as $cat)\n\t{\n\t\t$result[] = array('value' => $cat->cat_ID, 'label' => $cat->name);\n\t}\n\treturn $result;\n}\n\nfunction vp_get_users()\n{\n\t$wp_users = VP_WP_User::get_users();\n\n\t$result = array();\n\tforeach ($wp_users as $user)\n\t{\n\t\t$result[] = array('value' => $user['id'], 'label' => $user['display_name']);\n\t}\n\treturn $result;\n}\n\nfunction vp_get_posts()\n{\n\t$wp_posts = get_posts(array(\n\t\t'posts_per_page' => -1,\n\t));\n\n\t$result = array();\n\tforeach ($wp_posts as $post)\n\t{\n\t\t$result[] = array('value' => $post->ID, 'label' => $post->post_title);\n\t}\n\treturn $result;\n}\n\nfunction vp_get_pages()\n{\n\t$wp_pages = get_pages();\n\n\t$result = array();\n\tforeach ($wp_pages as $page)\n\t{\n\t\t$result[] = array('value' => $page->ID, 'label' => $page->post_title);\n\t}\n\treturn $result;\n}\n\nfunction vp_get_tags()\n{\n\t$wp_tags = get_tags(array('hide_empty' => 0));\n\t$result = array();\n\tforeach ($wp_tags as $tag)\n\t{\n\t\t$result[] = array('value' => $tag->term_id, 'label' => $tag->name);\n\t}\n\treturn $result;\n}\n\nfunction vp_get_roles()\n{\n\t$result         = array();\n\t$editable_roles = VP_WP_User::get_editable_roles();\n\n\tforeach ($editable_roles as $key => $role)\n\t{\n\t\t$result[] = array('value' => $key, 'label' => $role['name']);\n\t}\n\n\treturn $result;\n}\n\nfunction vp_get_gwf_family()\n{\n\t$fonts = file_get_contents(dirname(__FILE__) . '/gwf.json');\n\t$fonts = json_decode($fonts);\n\n\t$fonts = array_keys(get_object_vars($fonts));\n\n\tforeach ($fonts as $font)\n\t{\n\t\t$result[] = array('value' => $font, 'label' => $font);\n\t}\n\n\treturn $result;\n}\n\nVP_Security::instance()->whitelist_function('vp_get_gwf_weight');\n\nfunction vp_get_gwf_weight($face)\n{\n\tif(empty($face))\n\t\treturn array();\n\t\n\t$fonts   = file_get_contents(dirname(__FILE__) . '/gwf.json');\n\t$fonts   = json_decode($fonts);\n\tif( !property_exists($fonts, $face) )\n\t\treturn null;\n\t$weights = $fonts->{$face}->weights;\n\n\tforeach ($weights as $weight)\n\t{\n\t\t$result[] = array('value' => $weight, 'label' => $weight);\n\t}\n\n\treturn $result;\n}\n\nVP_Security::instance()->whitelist_function('vp_get_gwf_style');\n\nfunction vp_get_gwf_style($face)\n{\n\tif(empty($face))\n\t\treturn array();\n\t\n\t$fonts   = file_get_contents(dirname(__FILE__) . '/gwf.json');\n\t$fonts   = json_decode($fonts);\n\tif( !property_exists($fonts, $face) )\n\t\treturn null;\n\t$styles = $fonts->{$face}->styles;\n\n\tforeach ($styles as $style)\n\t{\n\t\t$result[] = array('value' => $style, 'label' => $style);\n\t}\n\n\treturn $result;\n}\n\nVP_Security::instance()->whitelist_function('vp_get_gwf_subset');\n\nfunction vp_get_gwf_subset($face)\n{\n\tif(empty($face))\n\t\treturn array();\n\t\n\t$fonts   = file_get_contents(dirname(__FILE__) . '/gwf.json');\n\t$fonts   = json_decode($fonts);\n\tif( !property_exists($fonts, $face) )\n\t\treturn null;\n\t$subsets = $fonts->{$face}->subsets;\n\n\tforeach ($subsets as $subset)\n\t{\n\t\t$result[] = array('value' => $subset, 'label' => $subset);\n\t}\n\n\treturn $result;\n}\n\nfunction vp_get_social_medias() {\n\t$socmeds = array(\n\t\tarray('value' => 'blogger', 'label' => 'Blogger'),\n\t\tarray('value' => 'delicious', 'label' => 'Delicious'),\n\t\tarray('value' => 'deviantart', 'label' => 'DeviantArt'),\n\t\tarray('value' => 'digg', 'label' => 'Digg'),\n\t\tarray('value' => 'dribbble', 'label' => 'Dribbble'),\n\t\tarray('value' => 'email', 'label' => 'Email'),\n\t\tarray('value' => 'facebook', 'label' => 'Facebook'),\n\t\tarray('value' => 'flickr', 'label' => 'Flickr'),\n\t\tarray('value' => 'forrst', 'label' => 'Forrst'),\n\t\tarray('value' => 'foursquare', 'label' => 'Foursquare'),\n\t\tarray('value' => 'github', 'label' => 'Github'),\n\t\tarray('value' => 'googleplus', 'label' => 'Google+'),\n\t\tarray('value' => 'instagram', 'label' => 'Instagram'),\n\t\tarray('value' => 'lastfm', 'label' => 'Last.FM'),\n\t\tarray('value' => 'linkedin', 'label' => 'LinkedIn'),\n\t\tarray('value' => 'myspace', 'label' => 'MySpace'),\n\t\tarray('value' => 'pinterest', 'label' => 'Pinterest'),\n\t\tarray('value' => 'reddit', 'label' => 'Reddit'),\n\t\tarray('value' => 'rss', 'label' => 'RSS'),\n\t\tarray('value' => 'soundcloud', 'label' => 'SoundCloud'),\n\t\tarray('value' => 'stumbleupon', 'label' => 'StumbleUpon'),\n\t\tarray('value' => 'tumblr', 'label' => 'Tumblr'),\n\t\tarray('value' => 'twitter', 'label' => 'Twitter'),\n\t\tarray('value' => 'vimeo', 'label' => 'Vimeo'),\n\t\tarray('value' => 'wordpress', 'label' => 'WordPress'),\n\t\tarray('value' => 'yahoo', 'label' => 'Yahoo!'),\n\t\tarray('value' => 'youtube', 'label' => 'Youtube'),\n\t);\n\n\treturn $socmeds;\n}\n\nfunction vp_get_fontawesome_icons()\n{\n\t// scrape list of icons from fontawesome css\n\tif( false === ( $icons  = get_transient( 'vp_fontawesome_icons' ) ) )\n\t{\n\t\t$pattern = '/\\.(fa-(?:\\w+(?:-)?)+):before\\s*{\\s*content/';\n\t\t$subject = file_get_contents(VP_DIR . '/public/css/vendor/font-awesome.min.css');\n\n\t\tpreg_match_all($pattern, $subject, $matches, PREG_SET_ORDER);\n\n\t\t$icons = array();\n\n\t\tforeach($matches as $match)\n\t\t{\n\t\t    $icons[] = array('value' => $match[1], 'label' => $match[1]);\n\t\t}\n\t\tset_transient( 'vp_fontawesome_icons', $icons, 60 * 60 * 24 );\n\t}\n\n\treturn $icons;\n}\n\nVP_Security::instance()->whitelist_function('vp_dep_boolean');\n\nfunction vp_dep_boolean($value)\n{\n\t$args   = func_get_args();\n\t$result = true;\n\n\tforeach ($args as $val)\n\t{\n\t\t$result = ($result and !empty($val));\n\t}\n\treturn $result;\n}\n\n/**\n * EOF\n */"
  },
  {
    "path": "includes/parsedown.php",
    "content": "<?php\n\n#\n#\n# Parsedown\n# http://parsedown.org\n#\n# (c) Emanuil Rusev\n# http://erusev.com\n#\n# For the full license information, view the LICENSE file that was distributed\n# with this source code.\n# https://github.com/erusev/parsedown/blob/master/LICENSE.txt (MIT)\n#\n\nclass Parsedown\n{\n    #\n    # Philosophy\n    #\n\n    # Markdown is intended to be easy-to-read by humans - those of us who read\n    # line by line, left to right, top to bottom. In order to take advantage of\n    # this, Parsedown tries to read in a similar way. It breaks texts into\n    # lines, it iterates through them and it looks at how they start and relate\n    # to each other.\n\n    #\n    # Setters\n    #\n\n    # Enables GFM line breaks.\n\n    function setBreaksEnabled($breaksEnabled)\n    {\n        $this->breaksEnabled = $breaksEnabled;\n\n        return $this;\n    }\n\n    /**\n     * For backwards compatibility before PSR-2 naming.\n     *\n     * @deprecated Use setBreaksEnabled instead.\n     */\n    function set_breaks_enabled($breaks_enabled)\n    {\n        return $this->setBreaksEnabled($breaks_enabled);\n    }\n\n    private $breaksEnabled = false;\n\n    #\n    # Methods\n    #\n\n    function parse($text)\n    {\n        # standardize line breaks\n        $text = str_replace(\"\\r\\n\", \"\\n\", $text);\n        $text = str_replace(\"\\r\", \"\\n\", $text);\n\n        # replace tabs with spaces\n        $text = str_replace(\"\\t\", '    ', $text);\n\n        # remove surrounding line breaks\n        $text = trim($text, \"\\n\");\n\n        # split text into lines\n        $lines = explode(\"\\n\", $text);\n\n        # iterate through lines to identify blocks\n        $blocks = $this->findBlocks($lines);\n\n        # iterate through blocks to build markup\n        $markup = $this->compile($blocks);\n\n        # trim line breaks\n        $markup = trim($markup, \"\\n\");\n\n        return $markup;\n    }\n\n    #\n    # Private\n\n    private function findBlocks(array $lines, $blockContext = null)\n    {\n        $block = null;\n\n        $context = null;\n        $contextData = null;\n\n        foreach ($lines as $line)\n        {\n            $indentedLine = $line;\n\n            $indentation = 0;\n\n            while(isset($line[$indentation]) and $line[$indentation] === ' ')\n            {\n                $indentation++;\n            }\n\n            if ($indentation > 0)\n            {\n                $line = ltrim($line);\n            }\n\n            # ~\n\n            switch ($context)\n            {\n                case null:\n\n                    $contextData = null;\n\n                    if ($line === '')\n                    {\n                        continue 2;\n                    }\n\n                    break;\n\n                # ~~~ javascript\n                # var message = 'Hello!';\n\n                case 'fenced code':\n\n                    if ($line === '')\n                    {\n                        $block['content'][0]['content'] .= \"\\n\";\n\n                        continue 2;\n                    }\n\n                    if (preg_match('/^[ ]*'.$contextData['marker'].'{3,}[ ]*$/', $line))\n                    {\n                        $context = null;\n                    }\n                    else\n                    {\n                        if ($block['content'][0]['content'])\n                        {\n                            $block['content'][0]['content'] .= \"\\n\";\n                        }\n\n                        $string = htmlspecialchars($indentedLine, ENT_NOQUOTES, 'UTF-8');\n\n                        $block['content'][0]['content'] .= $string;\n                    }\n\n                    continue 2;\n\n                case 'markup':\n\n                    if (stripos($line, $contextData['start']) !== false) # opening tag\n                    {\n                        $contextData['depth']++;\n                    }\n\n                    if (stripos($line, $contextData['end']) !== false) # closing tag\n                    {\n                        if ($contextData['depth'] > 0)\n                        {\n                            $contextData['depth']--;\n                        }\n                        else\n                        {\n                            $context = null;\n                        }\n                    }\n\n                    $block['content'] .= \"\\n\".$indentedLine;\n\n                    continue 2;\n\n                case 'li':\n\n                    if ($line === '')\n                    {\n                        $contextData['interrupted'] = true;\n\n                        continue 2;\n                    }\n\n                    if ($contextData['indentation'] === $indentation and preg_match('/^'.$contextData['marker'].'[ ]+(.*)/', $line, $matches))\n                    {\n                        if (isset($contextData['interrupted']))\n                        {\n                            $nestedBlock['content'] []= '';\n\n                            unset($contextData['interrupted']);\n                        }\n\n                        unset($nestedBlock);\n\n                        $nestedBlock = array(\n                            'name' => 'li',\n                            'content type' => 'lines',\n                            'content' => array(\n                                $matches[1],\n                            ),\n                        );\n\n                        $block['content'] []= & $nestedBlock;\n\n                        continue 2;\n                    }\n\n                    if (empty($contextData['interrupted']))\n                    {\n                        $value = $line;\n\n                        if ($indentation > $contextData['baseline'])\n                        {\n                            $value = str_repeat(' ', $indentation - $contextData['baseline']) . $value;\n                        }\n\n                        $nestedBlock['content'] []= $value;\n\n                        continue 2;\n                    }\n\n                    if ($indentation > 0)\n                    {\n                        $nestedBlock['content'] []= '';\n\n                        $value = $line;\n\n                        if ($indentation > $contextData['baseline'])\n                        {\n                            $value = str_repeat(' ', $indentation - $contextData['baseline']) . $value;\n                        }\n\n                        $nestedBlock['content'] []= $value;\n\n                        unset($contextData['interrupted']);\n\n                        continue 2;\n                    }\n\n                    $context = null;\n\n                    break;\n\n                case 'quote':\n\n                    if ($line === '')\n                    {\n                        $contextData['interrupted'] = true;\n\n                        continue 2;\n                    }\n\n                    if (preg_match('/^>[ ]?(.*)/', $line, $matches))\n                    {\n                        $block['content'] []= $matches[1];\n\n                        continue 2;\n                    }\n\n                    if (empty($contextData['interrupted']))\n                    {\n                        $block['content'] []= $line;\n\n                        continue 2;\n                    }\n\n                    $context = null;\n\n                    break;\n\n                case 'code':\n\n                    if ($line === '')\n                    {\n                        $contextData['interrupted'] = true;\n\n                        continue 2;\n                    }\n\n                    if ($indentation >= 4)\n                    {\n                        if (isset($contextData['interrupted']))\n                        {\n                            $block['content'][0]['content'] .= \"\\n\";\n\n                            unset($contextData['interrupted']);\n                        }\n\n                        $block['content'][0]['content'] .= \"\\n\";\n\n                        $string = htmlspecialchars($line, ENT_NOQUOTES, 'UTF-8');\n                        $string = str_repeat(' ', $indentation - 4) . $string;\n\n                        $block['content'][0]['content'] .= $string;\n\n                        continue 2;\n                    }\n\n                    $context = null;\n\n                    break;\n\n                case 'table':\n\n                    if ($line === '')\n                    {\n                        $context = null;\n\n                        continue 2;\n                    }\n\n                    if (strpos($line, '|') !== false)\n                    {\n                        $nestedBlocks = array();\n\n                        $substring = preg_replace('/^[|][ ]*/', '', $line);\n                        $substring = preg_replace('/[|]?[ ]*$/', '', $substring);\n\n                        $parts = explode('|', $substring);\n\n                        foreach ($parts as $index => $part)\n                        {\n                            $substring = trim($part);\n\n                            $nestedBlock = array(\n                                'name' => 'td',\n                                'content type' => 'line',\n                                'content' => $substring,\n                            );\n\n                            if (isset($contextData['alignments'][$index]))\n                            {\n                                $nestedBlock['attributes'] = array(\n                                    'align' => $contextData['alignments'][$index],\n                                );\n                            }\n\n                            $nestedBlocks []= $nestedBlock;\n                        }\n\n                        $nestedBlock = array(\n                            'name' => 'tr',\n                            'content type' => 'blocks',\n                            'content' => $nestedBlocks,\n                        );\n\n                        $block['content'][1]['content'] []= $nestedBlock;\n\n                        continue 2;\n                    }\n\n                    $context = null;\n\n                    break;\n\n                case 'paragraph':\n\n                    if ($line === '')\n                    {\n                        $block['name'] = 'p'; # dense li\n\n                        $context = null;\n\n                        continue 2;\n                    }\n\n                    if ($line[0] === '=' and chop($line, '=') === '')\n                    {\n                        $block['name'] = 'h1';\n\n                        $context = null;\n\n                        continue 2;\n                    }\n\n                    if ($line[0] === '-' and chop($line, '-') === '')\n                    {\n                        $block['name'] = 'h2';\n\n                        $context = null;\n\n                        continue 2;\n                    }\n\n                    if (strpos($line, '|') !== false and strpos($block['content'], '|') !== false and chop($line, ' -:|') === '')\n                    {\n                        $values = array();\n\n                        $substring = trim($line, ' |');\n\n                        $parts = explode('|', $substring);\n\n                        foreach ($parts as $part)\n                        {\n                            $substring = trim($part);\n\n                            $value = null;\n\n                            if ($substring[0] === ':')\n                            {\n                                $value = 'left';\n                            }\n\n                            if (substr($substring, -1) === ':')\n                            {\n                                $value = $value === 'left' ? 'center' : 'right';\n                            }\n\n                            $values []= $value;\n                        }\n\n                        # ~\n\n                        $nestedBlocks = array();\n\n                        $substring = preg_replace('/^[|][ ]*/', '', $block['content']);\n                        $substring = preg_replace('/[|]?[ ]*$/', '', $substring);\n\n                        $parts = explode('|', $substring);\n\n                        foreach ($parts as $index => $part)\n                        {\n                            $substring = trim($part);\n\n                            $nestedBlock = array(\n                                'name' => 'th',\n                                'content type' => 'line',\n                                'content' => $substring,\n                            );\n\n                            if (isset($values[$index]))\n                            {\n                                $value = $values[$index];\n\n                                $nestedBlock['attributes'] = array(\n                                    'align' => $value,\n                                );\n                            }\n\n                            $nestedBlocks []= $nestedBlock;\n                        }\n\n                        # ~\n\n                        $block = array(\n                            'name' => 'table',\n                            'content type' => 'blocks',\n                            'content' => array(),\n                        );\n\n                        $block['content'] []= array(\n                            'name' => 'thead',\n                            'content type' => 'blocks',\n                            'content' => array(),\n                        );\n\n                        $block['content'] []= array(\n                            'name' => 'tbody',\n                            'content type' => 'blocks',\n                            'content' => array(),\n                        );\n\n                        $block['content'][0]['content'] []= array(\n                            'name' => 'tr',\n                            'content type' => 'blocks',\n                            'content' => array(),\n                        );\n\n                        $block['content'][0]['content'][0]['content'] = $nestedBlocks;\n\n                        # ~\n\n                        $context = 'table';\n\n                        $contextData = array(\n                            'alignments' => $values,\n                        );\n\n                        # ~\n\n                        continue 2;\n                    }\n\n                    break;\n\n                default:\n\n                    throw new Exception('Unrecognized context - '.$context);\n            }\n\n            if ($indentation >= 4)\n            {\n                $blocks []= $block;\n\n                $string = htmlspecialchars($line, ENT_NOQUOTES, 'UTF-8');\n                $string = str_repeat(' ', $indentation - 4) . $string;\n\n                $block = array(\n                    'name' => 'pre',\n                    'content type' => 'blocks',\n                    'content' => array(\n                        array(\n                            'name' => 'code',\n                            'content type' => null,\n                            'content' => $string,\n                        ),\n                    ),\n                );\n\n                $context = 'code';\n\n                continue;\n            }\n\n            switch ($line[0])\n            {\n                case '#':\n\n                    if (isset($line[1]))\n                    {\n                        $blocks []= $block;\n\n                        $level = 1;\n\n                        while (isset($line[$level]) and $line[$level] === '#')\n                        {\n                            $level++;\n                        }\n\n                        $string = trim($line, '# ');\n                        $string = $this->parseLine($string);\n\n                        $block = array(\n                            'name' => 'h'.$level,\n                            'content type' => 'line',\n                            'content' => $string,\n                        );\n\n                        $context = null;\n\n                        continue 2;\n                    }\n\n                    break;\n\n                case '<':\n\n                    $position = strpos($line, '>');\n\n                    if ($position > 1)\n                    {\n                        $substring = substr($line, 1, $position - 1);\n\n                        $substring = chop($substring);\n\n                        if (substr($substring, -1) === '/')\n                        {\n                            $isClosing = true;\n\n                            $substring = substr($substring, 0, -1);\n                        }\n\n                        $position = strpos($substring, ' ');\n\n                        if ($position)\n                        {\n                            $name = substr($substring, 0, $position);\n                        }\n                        else\n                        {\n                            $name = $substring;\n                        }\n\n                        $name = strtolower($name);\n\n                        if ($name[0] == 'h' and strpos('r123456', $name[1]) !== false) #  hr, h1, h2, ...\n                        {\n                            if ($name == 'hr')\n                            {\n                                $isClosing = true;\n                            }\n                        }\n                        elseif ( ! ctype_alpha($name))\n                        {\n                            break;\n                        }\n\n                        if (in_array($name, self::$textLevelElements))\n                        {\n                            break;\n                        }\n\n                        $blocks []= $block;\n\n                        $block = array(\n                            'name' => null,\n                            'content type' => null,\n                            'content' => $indentedLine,\n                        );\n\n                        if (isset($isClosing))\n                        {\n                            unset($isClosing);\n\n                            continue 2;\n                        }\n\n                        $context = 'markup';\n                        $contextData = array(\n                            'start' => '<'.$name.'>',\n                            'end' => '</'.$name.'>',\n                            'depth' => 0,\n                        );\n\n                        if (stripos($line, $contextData['end']) !== false)\n                        {\n                            $context = null;\n                        }\n\n                        continue 2;\n                    }\n\n                    break;\n\n                case '>':\n\n                    if (preg_match('/^>[ ]?(.*)/', $line, $matches))\n                    {\n                        $blocks []= $block;\n\n                        $block = array(\n                            'name' => 'blockquote',\n                            'content type' => 'lines',\n                            'content' => array(\n                                $matches[1],\n                            ),\n                        );\n\n                        $context = 'quote';\n                        $contextData = array();\n\n                        continue 2;\n                    }\n\n                    break;\n\n                case '[':\n\n                    $position = strpos($line, ']:');\n\n                    if ($position)\n                    {\n                        $reference = array();\n\n                        $label = substr($line, 1, $position - 1);\n                        $label = strtolower($label);\n\n                        $substring = substr($line, $position + 2);\n                        $substring = trim($substring);\n\n                        if ($substring === '')\n                        {\n                            break;\n                        }\n\n                        if ($substring[0] === '<')\n                        {\n                            $position = strpos($substring, '>');\n\n                            if ($position === false)\n                            {\n                                break;\n                            }\n\n                            $reference['link'] = substr($substring, 1, $position - 1);\n\n                            $substring = substr($substring, $position + 1);\n                        }\n                        else\n                        {\n                            $position = strpos($substring, ' ');\n\n                            if ($position === false)\n                            {\n                                $reference['link'] = $substring;\n\n                                $substring = false;\n                            }\n                            else\n                            {\n                                $reference['link'] = substr($substring, 0, $position);\n\n                                $substring = substr($substring, $position + 1);\n                            }\n                        }\n\n                        if ($substring !== false)\n                        {\n                            if ($substring[0] !== '\"' and $substring[0] !== \"'\" and $substring[0] !== '(')\n                            {\n                                break;\n                            }\n\n                            $lastChar = substr($substring, -1);\n\n                            if ($lastChar !== '\"' and $lastChar !== \"'\" and $lastChar !== ')')\n                            {\n                                break;\n                            }\n\n                            $reference['title'] = substr($substring, 1, -1);\n                        }\n\n                        $this->referenceMap[$label] = $reference;\n\n                        continue 2;\n                    }\n\n                    break;\n\n                case '`':\n                case '~':\n\n                    if (preg_match('/^([`]{3,}|[~]{3,})[ ]*(\\w+)?[ ]*$/', $line, $matches))\n                    {\n                        $blocks []= $block;\n\n                        $block = array(\n                            'name' => 'pre',\n                            'content type' => 'blocks',\n                            'content' => array(\n                                array(\n                                    'name' => 'code',\n                                    'content type' => null,\n                                    'content' => '',\n                                ),\n                            ),\n                        );\n\n                        if (isset($matches[2]))\n                        {\n                            $block['content'][0]['attributes'] = array(\n                                'class' => 'language-'.$matches[2],\n                            );\n                        }\n\n                        $context = 'fenced code';\n                        $contextData = array(\n                            'marker' => $matches[1][0],\n                        );\n\n                        continue 2;\n                    }\n\n                    break;\n\n                case '-':\n                case '*':\n                case '_':\n\n                    if (preg_match('/^([-*_])([ ]{0,2}\\1){2,}[ ]*$/', $line))\n                    {\n                        $blocks []= $block;\n\n                        $block = array(\n                            'name' => 'hr',\n                            'content' => null,\n                        );\n\n                        continue 2;\n                    }\n            }\n\n            switch (true)\n            {\n                case $line[0] <= '-' and preg_match('/^([*+-][ ]+)(.*)/', $line, $matches):\n                case $line[0] <= '9' and preg_match('/^([0-9]+[.][ ]+)(.*)/', $line, $matches):\n\n                    $blocks []= $block;\n\n                    $name = $line[0] >= '0' ? 'ol' : 'ul';\n\n                    $block = array(\n                        'name' => $name,\n                        'content type' => 'blocks',\n                        'content' => array(),\n                    );\n\n                    unset($nestedBlock);\n\n                    $nestedBlock = array(\n                        'name' => 'li',\n                        'content type' => 'lines',\n                        'content' => array(\n                            $matches[2],\n                        ),\n                    );\n\n                    $block['content'] []= & $nestedBlock;\n\n                    $baseline = $indentation + strlen($matches[1]);\n\n                    $marker = $line[0] >= '0' ? '[0-9]+[.]' : '[*+-]';\n\n                    $context = 'li';\n                    $contextData = array(\n                        'indentation' => $indentation,\n                        'baseline' => $baseline,\n                        'marker' => $marker,\n                        'lines' => array(\n                            $matches[2],\n                        ),\n                    );\n\n                    continue 2;\n            }\n\n            if ($context === 'paragraph')\n            {\n                $block['content'] .= \"\\n\".$line;\n\n                continue;\n            }\n            else\n            {\n                $blocks []= $block;\n\n                $block = array(\n                    'name' => 'p',\n                    'content type' => 'line',\n                    'content' => $line,\n                );\n\n                if ($blockContext === 'li' and empty($blocks[1]))\n                {\n                    $block['name'] = null;\n                }\n\n                $context = 'paragraph';\n            }\n        }\n\n        if ($blockContext === 'li' and $block['name'] === null)\n        {\n            return $block['content'];\n        }\n\n        $blocks []= $block;\n\n        unset($blocks[0]);\n\n        return $blocks;\n    }\n\n    private function compile(array $blocks)\n    {\n        $markup = '';\n\n        foreach ($blocks as $block)\n        {\n            $markup .= \"\\n\";\n\n            if (isset($block['name']))\n            {\n                $markup .= '<'.$block['name'];\n\n                if (isset($block['attributes']))\n                {\n                    foreach ($block['attributes'] as $name => $value)\n                    {\n                        $markup .= ' '.$name.'=\"'.$value.'\"';\n                    }\n                }\n\n                if ($block['content'] === null)\n                {\n                    $markup .= ' />';\n\n                    continue;\n                }\n                else\n                {\n                    $markup .= '>';\n                }\n            }\n\n            switch ($block['content type'])\n            {\n                case null:\n\n                    $markup .= $block['content'];\n\n                    break;\n\n                case 'line':\n\n                    $markup .= $this->parseLine($block['content']);\n\n                    break;\n\n                case 'lines':\n\n                    $result = $this->findBlocks($block['content'], $block['name']);\n\n                    if (is_string($result)) # dense li\n                    {\n                        $markup .= $this->parseLine($result);\n\n                        break;\n                    }\n\n                    $markup .= $this->compile($result);\n\n                    break;\n\n                case 'blocks':\n\n                    $markup .= $this->compile($block['content']);\n\n                    break;\n            }\n\n            if (isset($block['name']))\n            {\n                $markup .= '</'.$block['name'].'>';\n            }\n        }\n\n        $markup .= \"\\n\";\n\n        return $markup;\n    }\n\n    private function parseLine($text, $markers = array(\"  \\n\", '![', '&', '*', '<', '[', '\\\\', '_', '`', 'http', '~~'))\n    {\n        if (isset($text[1]) === false or $markers === array())\n        {\n            return $text;\n        }\n\n        # ~\n\n        $markup = '';\n\n        while ($markers)\n        {\n            $closestMarker = null;\n            $closestMarkerIndex = 0;\n            $closestMarkerPosition = null;\n\n            foreach ($markers as $index => $marker)\n            {\n                $markerPosition = strpos($text, $marker);\n\n                if ($markerPosition === false)\n                {\n                    unset($markers[$index]);\n\n                    continue;\n                }\n\n                if ($closestMarker === null or $markerPosition < $closestMarkerPosition)\n                {\n                    $closestMarker = $marker;\n                    $closestMarkerIndex = $index;\n                    $closestMarkerPosition = $markerPosition;\n                }\n            }\n\n            # ~\n\n            if ($closestMarker === null or isset($text[$closestMarkerPosition + 1]) === false)\n            {\n                $markup .= $text;\n\n                break;\n            }\n            else\n            {\n                $markup .= substr($text, 0, $closestMarkerPosition);\n            }\n\n            $text = substr($text, $closestMarkerPosition);\n\n            # ~\n\n            unset($markers[$closestMarkerIndex]);\n\n            # ~\n\n            switch ($closestMarker)\n            {\n                case \"  \\n\":\n\n                    $markup .= '<br />'.\"\\n\";\n\n                    $offset = 3;\n\n                    break;\n\n                case '![':\n                case '[':\n\n                    if (strpos($text, ']') and preg_match('/\\[((?:[^][]|(?R))*)\\]/', $text, $matches))\n                    {\n                        $element = array(\n                            '!' => $text[0] === '!',\n                            'text' => $matches[1],\n                        );\n\n                        $offset = strlen($matches[0]);\n\n                        if ($element['!'])\n                        {\n                            $offset++;\n                        }\n\n                        $remainingText = substr($text, $offset);\n\n                        if ($remainingText[0] === '(' and preg_match('/\\([ ]*(.*?)(?:[ ]+[\\'\"](.+?)[\\'\"])?[ ]*\\)/', $remainingText, $matches))\n                        {\n                            $element['link'] = $matches[1];\n\n                            if (isset($matches[2]))\n                            {\n                                $element['title'] = $matches[2];\n                            }\n\n                            $offset += strlen($matches[0]);\n                        }\n                        elseif ($this->referenceMap)\n                        {\n                            $reference = $element['text'];\n\n                            if (preg_match('/^\\s*\\[(.*?)\\]/', $remainingText, $matches))\n                            {\n                                $reference = $matches[1] === '' ? $element['text'] : $matches[1];\n\n                                $offset += strlen($matches[0]);\n                            }\n\n                            $reference = strtolower($reference);\n\n                            if (isset($this->referenceMap[$reference]))\n                            {\n                                $element['link'] = $this->referenceMap[$reference]['link'];\n\n                                if (isset($this->referenceMap[$reference]['title']))\n                                {\n                                    $element['title'] = $this->referenceMap[$reference]['title'];\n                                }\n                            }\n                            else\n                            {\n                                unset($element);\n                            }\n                        }\n                        else\n                        {\n                            unset($element);\n                        }\n                    }\n\n                    if (isset($element))\n                    {\n                        $element['link'] = str_replace('&', '&amp;', $element['link']);\n                        $element['link'] = str_replace('<', '&lt;', $element['link']);\n\n                        if ($element['!'])\n                        {\n                            $markup .= '<img alt=\"'.$element['text'].'\" src=\"'.$element['link'].'\"';\n\n                            if (isset($element['title']))\n                            {\n                                $markup .= ' title=\"'.$element['title'].'\"';\n                            }\n\n                            $markup .= ' />';\n                        }\n                        else\n                        {\n                            $element['text'] = $this->parseLine($element['text'], $markers);\n\n                            $markup .= '<a href=\"'.$element['link'].'\"';\n\n                            if (isset($element['title']))\n                            {\n                                $markup .= ' title=\"'.$element['title'].'\"';\n                            }\n\n                            $markup .= '>'.$element['text'].'</a>';\n                        }\n\n                        unset($element);\n                    }\n                    else\n                    {\n                        $markup .= $closestMarker;\n\n                        $offset = $closestMarker === '![' ? 2 : 1;\n                    }\n\n                    break;\n\n                case '&':\n\n                    if (preg_match('/^&#?\\w+;/', $text, $matches))\n                    {\n                        $markup .= $matches[0];\n\n                        $offset = strlen($matches[0]);\n                    }\n                    else\n                    {\n                        $markup .= '&amp;';\n\n                        $offset = 1;\n                    }\n\n                    break;\n\n                case '*':\n                case '_':\n\n                    if ($text[1] === $closestMarker and preg_match(self::$strongRegex[$closestMarker], $text, $matches))\n                    {\n                        $markers[$closestMarkerIndex] = $closestMarker;\n                        $matches[1] = $this->parseLine($matches[1], $markers);\n\n                        $markup .= '<strong>'.$matches[1].'</strong>';\n                    }\n                    elseif (preg_match(self::$emRegex[$closestMarker], $text, $matches))\n                    {\n                        $markers[$closestMarkerIndex] = $closestMarker;\n                        $matches[1] = $this->parseLine($matches[1], $markers);\n\n                        $markup .= '<em>'.$matches[1].'</em>';\n                    }\n\n                    if (isset($matches) and $matches)\n                    {\n                        $offset = strlen($matches[0]);\n                    }\n                    else\n                    {\n                        $markup .= $closestMarker;\n\n                        $offset = 1;\n                    }\n\n                    break;\n\n                case '<':\n\n                    if (strpos($text, '>') !== false)\n                    {\n                        if ($text[1] === 'h' and preg_match('/^<(https?:[\\/]{2}[^\\s]+?)>/i', $text, $matches))\n                        {\n                            $elementUrl = $matches[1];\n                            $elementUrl = str_replace('&', '&amp;', $elementUrl);\n                            $elementUrl = str_replace('<', '&lt;', $elementUrl);\n\n                            $markup .= '<a href=\"'.$elementUrl.'\">'.$elementUrl.'</a>';\n\n                            $offset = strlen($matches[0]);\n                        }\n                        elseif (strpos($text, '@') > 1 and preg_match('/<(\\S+?@\\S+?)>/', $text, $matches))\n                        {\n                            $markup .= '<a href=\"mailto:'.$matches[1].'\">'.$matches[1].'</a>';\n\n                            $offset = strlen($matches[0]);\n                        }\n                        elseif (preg_match('/^<\\/?\\w.*?>/', $text, $matches))\n                        {\n                            $markup .= $matches[0];\n\n                            $offset = strlen($matches[0]);\n                        }\n                        else\n                        {\n                            $markup .= '&lt;';\n\n                            $offset = 1;\n                        }\n                    }\n                    else\n                    {\n                        $markup .= '&lt;';\n\n                        $offset = 1;\n                    }\n\n                    break;\n\n                case '\\\\':\n\n                    if (in_array($text[1], self::$specialCharacters))\n                    {\n                        $markup .= $text[1];\n\n                        $offset = 2;\n                    }\n                    else\n                    {\n                        $markup .= '\\\\';\n\n                        $offset = 1;\n                    }\n\n                    break;\n\n                case '`':\n\n                    if (preg_match('/^(`+)[ ]*(.+?)[ ]*(?<!`)\\1(?!`)/', $text, $matches))\n                    {\n                        $elementText = $matches[2];\n                        $elementText = htmlspecialchars($elementText, ENT_NOQUOTES, 'UTF-8');\n\n                        $markup .= '<code>'.$elementText.'</code>';\n\n                        $offset = strlen($matches[0]);\n                    }\n                    else\n                    {\n                        $markup .= '`';\n\n                        $offset = 1;\n                    }\n\n                    break;\n\n                case 'http':\n\n                    if (preg_match('/^https?:[\\/]{2}[^\\s]+\\b\\/*/ui', $text, $matches))\n                    {\n                        $elementUrl = $matches[0];\n                        $elementUrl = str_replace('&', '&amp;', $elementUrl);\n                        $elementUrl = str_replace('<', '&lt;', $elementUrl);\n\n                        $markup .= '<a href=\"'.$elementUrl.'\">'.$elementUrl.'</a>';\n\n                        $offset = strlen($matches[0]);\n                    }\n                    else\n                    {\n                        $markup .= 'http';\n\n                        $offset = 4;\n                    }\n\n                    break;\n\n                case '~~':\n\n                    if (preg_match('/^~~(?=\\S)(.+?)(?<=\\S)~~/', $text, $matches))\n                    {\n                        $matches[1] = $this->parseLine($matches[1], $markers);\n\n                        $markup .= '<del>'.$matches[1].'</del>';\n\n                        $offset = strlen($matches[0]);\n                    }\n                    else\n                    {\n                        $markup .= '~~';\n\n                        $offset = 2;\n                    }\n\n                    break;\n            }\n\n            if (isset($offset))\n            {\n                $text = substr($text, $offset);\n            }\n\n            $markers[$closestMarkerIndex] = $closestMarker;\n        }\n\n        return $markup;\n    }\n\n    #\n    # Static\n\n    static function instance($name = 'default')\n    {\n        if (isset(self::$instances[$name]))\n        {\n            return self::$instances[$name];\n        }\n\n        $instance = new Parsedown();\n\n        self::$instances[$name] = $instance;\n\n        return $instance;\n    }\n\n    private static $instances = array();\n\n    #\n    # Fields\n    #\n\n    private $referenceMap = array();\n\n    #\n    # Read-only\n\n    private static $strongRegex = array(\n        '*' => '/^[*]{2}((?:[^*]|[*][^*]*[*])+?)[*]{2}(?![*])/s',\n        '_' => '/^__((?:[^_]|_[^_]*_)+?)__(?!_)/us',\n    );\n\n    private static $emRegex = array(\n        '*' => '/^[*]((?:[^*]|[*][*][^*]+?[*][*])+?)[*](?![*])/s',\n        '_' => '/^_((?:[^_]|__[^_]*__)+?)_(?!_)\\b/us',\n    );\n\n    private static $specialCharacters = array(\n        '\\\\', '`', '*', '_', '{', '}', '[', ']', '(', ')', '>', '#', '+', '-', '.', '!',\n    );\n\n    private static $textLevelElements = array(\n        'a', 'br', 'bdo', 'abbr', 'blink', 'nextid', 'acronym', 'basefont',\n        'b', 'em', 'big', 'cite', 'small', 'spacer', 'listing',\n        'i', 'rp', 'sub', 'code',          'strike', 'marquee',\n        'q', 'rt', 'sup', 'font',          'strong',\n        's', 'tt', 'var', 'mark',\n        'u', 'xm', 'wbr', 'nobr',\n                          'ruby',\n                          'span',\n                          'time',\n    );\n}\n"
  },
  {
    "path": "includes/wpalchemy/MetaBox.php",
    "content": "<?php\n\n/**\n * @author\t\tDimas Begunoff\n * @copyright\tCopyright (c) 2009, Dimas Begunoff, http://farinspace.com\n * @license\t\thttp://en.wikipedia.org/wiki/MIT_License The MIT License\n * @package\t\tWPAlchemy\n * @version\t\t1.5.2\n * @link\t\thttp://github.com/farinspace/wpalchemy\n * @link\t\thttp://farinspace.com\n */\n\n/**\n * This is modified version so that WPAlchemy supports nested repeatable group\n * Vafpress (http://vafpress.com)\n * 2013\n */\n\n// todo: perhaps move _global_head and _global_foot locally, when first run\n// define a constant to prevent other instances from running again ...\n\nadd_action('admin_head', array('WPAlchemy_MetaBox', '_global_head'));\n\nadd_action('admin_footer', array('WPAlchemy_MetaBox', '_global_foot'));\n\ndefine('WPALCHEMY_MODE_ARRAY', 'array');\n\ndefine('WPALCHEMY_MODE_EXTRACT', 'extract');\n\ndefine('WPALCHEMY_FIELD_HINT_TEXT', 'text');\n\ndefine('WPALCHEMY_FIELD_HINT_TEXTAREA', 'textarea');\n\ndefine('WPALCHEMY_FIELD_HINT_CHECKBOX', 'checkbox');\n\ndefine('WPALCHEMY_FIELD_HINT_CHECKBOX_MULTI', 'checkbox_multi');\n\ndefine('WPALCHEMY_FIELD_HINT_RADIO', 'radio');\n\ndefine('WPALCHEMY_FIELD_HINT_SELECT', 'select');\n\ndefine('WPALCHEMY_FIELD_HINT_SELECT_MULTI', 'select_multi');\n\n// depreciated, use WPALCHEMY_FIELD_HINT_SELECT_MULTI instead\ndefine('WPALCHEMY_FIELD_HINT_SELECT_MULTIPLE', 'select_multiple');\n\ndefine('WPALCHEMY_LOCK_TOP', 'top');\n\ndefine('WPALCHEMY_LOCK_BOTTOM', 'bottom');\n\ndefine('WPALCHEMY_LOCK_BEFORE_POST_TITLE', 'before_post_title');\n\ndefine('WPALCHEMY_LOCK_AFTER_POST_TITLE', 'after_post_title');\n\ndefine('WPALCHEMY_VIEW_START_OPENED', 'opened');\n\ndefine('WPALCHEMY_VIEW_START_CLOSED', 'closed');\n\ndefine('WPALCHEMY_VIEW_ALWAYS_OPENED', 'always_opened');\n\nclass WPAlchemy_MetaBox\n{\n\t/**\n\t * User defined identifier for the meta box, prefix with an underscore to\n\t * prevent option(s) form showing up in the custom fields meta box, this\n\t * option should be used when instantiating the class.\n\t *\n\t * @since\t1.0\n\t * @access\tpublic\n\t * @var\t\tstring required\n\t */\n\tvar $id;\n\n\t/**\n\t * Used to set the title of the meta box, this option should be used when\n\t * instantiating the class.\n\t *\n\t * @since\t1.0\n\t * @access\tpublic\n\t * @var\t\tstring required\n\t * @see\t\t$hide_title\n\t */\n\tvar $title = 'Custom Meta';\n\n\t/**\n\t * Used to set the meta box content, the contents of your meta box should be\n\t * defined within this file, this option should be used when instantiating\n\t * the class.\n\t *\n\t * @since\t1.0\n\t * @access\tpublic\n\t * @var\t\tstring required\n\t */\n\tvar $template;\n\n\t/**\n\t * Used to set the post types that the meta box can appear in, this option \n\t * should be used when instantiating the class.\n\t *\n\t * @since\t1.0\n\t * @access\tpublic\n\t * @var\t\tarray \n\t */\n\tvar $types;\n\n\t/**\n\t * @since\t1.0\n\t * @access\tpublic\n\t * @var\t\tbool\n\t */\n\tvar $context = 'normal';\n\n\t/**\n\t * @since\t1.0\n\t * @access\tpublic\n\t * @var\t\tbool\n\t */\n\tvar $priority = 'high';\n\t\n\t/**\n\t * @since\t1.0\n\t * @access\tpublic\n\t * @var\t\tbool\n\t */\n\tvar $autosave = TRUE;\n\n\t/**\n\t * Used to set how the class does its data storage, data will be stored as\n\t * an associative array in a single meta entry in the wp_postmeta table or\n\t * data can be set and individual entries in the wp_postmeta table, the \n\t * following constants should be used when setting this option, \n\t * WPALCHEMY_MODE_ARRAY (default) and WPALCHEMY_MODE_EXTRACT, this option\n\t * should be used when instantiating the class.\n\t *\n\t * @since\t1.2\n\t * @access\tpublic\n\t * @var\t\tstring\n\t */\n\tvar $mode = WPALCHEMY_MODE_ARRAY;\n\n\t/**\n\t * When the mode option is set to WPALCHEMY_MODE_EXTRACT, you have to take\n\t * care to avoid name collisions with other meta entries. Use this option to\n\t * automatically add a prefix to your variables, this option should be used\n\t * when instantiating the class.\n\t *\n\t * @since\t1.2\n\t * @access\tpublic\n\t * @var\t\tarray\n\t */\n\tvar $prefix;\n\n\t/**\n\t * @since\t1.0\n\t * @access\tpublic\n\t * @var\t\tbool\n\t */\n\tvar $exclude_template;\n\n\t/**\n\t * @since\t1.0\n\t * @access\tpublic\n\t * @var\t\tbool\n\t */\n\tvar $exclude_category_id;\n\n\t/**\n\t * @since\t1.0\n\t * @access\tpublic\n\t * @var\t\tbool\n\t */\n\tvar $exclude_category;\n\n\t/**\n\t * @since\t1.0\n\t * @access\tpublic\n\t * @var\t\tbool\n\t */\n\tvar $exclude_tag_id;\n\n\t/**\n\t * @since\t1.0\n\t * @access\tpublic\n\t * @var\t\tbool\n\t */\n\tvar $exclude_tag;\n\n\t/**\n\t * @since\t1.0\n\t * @access\tpublic\n\t * @var\t\tbool\n\t */\n\tvar $exclude_post_id;\n\n\t/**\n\t * @since\t1.0\n\t * @access\tpublic\n\t * @var\t\tbool\n\t */\n\tvar $include_template;\n\n\t/**\n\t * @since\t1.0\n\t * @access\tpublic\n\t * @var\t\tbool\n\t */\n\tvar $include_category_id;\n\n\t/**\n\t * @since\t1.0\n\t * @access\tpublic\n\t * @var\t\tbool\n\t */\n\tvar $include_category;\n\n\t/**\n\t * @since\t1.0\n\t * @access\tpublic\n\t * @var\t\tbool\n\t */\n\tvar $include_tag_id;\n\n\t/**\n\t * @since\t1.0\n\t * @access\tpublic\n\t * @var\t\tbool\n\t */\n\tvar $include_tag;\n\n\t/**\n\t * @since\t1.0\n\t * @access\tpublic\n\t * @var\t\tbool\n\t */\n\tvar $include_post_id;\n\n\t/**\n\t * Callback used on the WordPress \"admin_init\" action, the main benefit is \n\t * that this callback is executed only when the meta box is present, this\n\t * option should be used when instantiating the class.\n\t *\n\t * @since\t1.3.4\n\t * @access\tpublic\n\t * @var\t\tstring|array optional\n\t */\n\tvar $init_action;\n\n\t/**\n\t * Callback used to override when the meta box gets displayed, must return\n\t * true or false to determine if the meta box should or should not be\n\t * displayed, this option should be used when instantiating the class.\n\t *\n\t * @since\t1.3\n\t * @access\tpublic\n\t * @var\t\tstring|array optional\n\t * @param\tarray $post_id first variable passed to the callback function\n\t * @see\t\tcan_output()\n\t */\n\tvar $output_filter;\n\n\t/**\n\t * Callback used to override or insert meta data before saving, you can halt\n\t * saving by passing back FALSE (return FALSE), this option should be used\n\t * when instantiating the class.\n\t *\n\t * @since\t1.3\n\t * @access\tpublic\n\t * @var\t\tstring|array optional\n\t * @param\tarray $meta meta box data, first variable passed to the callback function\n\t * @param\tstring $post_id second variable passed to the callback function\n\t * @see\t\t$save_action, add_filter()\n\t */\n\tvar $save_filter;\n\n\t/**\n\t * Callback used to execute custom code after saving, this option should be\n\t * used when instantiating the class.\n\t *\n\t * @since\t1.3\n\t * @access\tpublic\n\t * @var\t\tstring|array optional\n\t * @param\tarray $meta meta box data, first variable passed to the callback function\n\t * @param\tstring $post_id second variable passed to the callback function\n\t * @see\t\t$save_filter, add_filter()\n\t */\n\tvar $save_action;\n\n\t/**\n\t * Callback used to override or insert STYLE or SCRIPT tags into the head,\n\t * this option should be used when instantiating the class.\n\t *\n\t * @since\t1.3\n\t * @access\tpublic\n\t * @var\t\tstring|array optional\n\t * @param\tarray $content current head content, first variable passed to the callback function\n\t * @see\t\t$head_action, add_filter()\n\t */\n\tvar $head_filter;\n\n\t/**\n\t * Callback used to insert STYLE or SCRIPT tags into the head,\n\t * this option should be used when instantiating the class.\n\t *\n\t * @since\t1.3\n\t * @access\tpublic\n\t * @var\t\tstring|array optional\n\t * @see\t\t$head_filter, add_action()\n\t */\n\tvar $head_action;\n\n\t/**\n\t * Callback used to override or insert SCRIPT tags into the footer, this\n\t * option should be used when instantiating the class.\n\t *\n\t * @since\t1.3\n\t * @access\tpublic\n\t * @var\t\tstring|array optional\n\t * @param\tarray $content current foot content, first variable passed to the callback function\n\t * @see\t\t$foot_action, add_filter()\n\t */\n\tvar $foot_filter;\n\n\t/**\n\t * Callback used to insert SCRIPT tags into the footer, this option should\n\t * be used when instantiating the class.\n\t *\n\t * @since\t1.3\n\t * @access\tpublic\n\t * @var\t\tstring|array optional\n\t * @see\t\t$foot_filter, add_action()\n\t */\n\tvar $foot_action;\n\n\t/**\n\t * Used to hide the default content editor in a page or post, this option\n\t * should be used when instantiating the class.\n\t *\n\t * @since\t1.3\n\t * @access\tpublic\n\t * @var\t\tbool optional\n\t */\n\tvar $hide_editor = FALSE;\n\n\t/**\n\t * Used in conjunction with the \"hide_editor\" option, prevents the media\n\t * buttons from also being hidden.\n\t *\n\t * @since\t1.5\n\t * @access\tpublic\n\t * @var\t\tbool optional\n\t */\n\tvar $use_media_buttons = FALSE;\n\t\n\t/**\n\t * Used to hide the meta box title, this option should be used when\n\t * instantiating the class.\n\t *\n\t * @since\t1.3\n\t * @access\tpublic\n\t * @var\t\tbool optional\n\t * @see\t\t$title\n\t */\n\tvar $hide_title = FALSE;\n\n\t/**\n\t * Used to lock a meta box in place, possible values are: top, bottom, \n\t * before_post_title, after_post_title, this option should be used when\n\t * instantiating the class.\n\t *\n\t * @since\t\t1.3.3\n\t * @access\t\tpublic\n\t * @var\t\t\tstring optional possible values are: top, bottom, before_post_title, after_post_title\n\t */\n\tvar $lock;\n\n\t/**\n\t * Used to lock a meta box at top (below the default content editor), this\n\t * option should be used when instantiating the class.\n\t *\n\t * @deprecated\tdeprecated since version 1.3.3\n\t * @since\t\t1.3\n\t * @access\t\tpublic\n\t * @var\t\t\tbool optional\n\t * @see\t\t\t$lock\n\t */\n\tvar $lock_on_top = FALSE;\n\n\t/**\n\t * Used to lock a meta box at bottom, this option should be used when\n\t * instantiating the class.\n\t *\n\t * @deprecated\tdeprecated since version 1.3.3\n\t * @since\t\t1.3\n\t * @access\t\tpublic\n\t * @var\t\t\tbool optional\n\t * @see\t\t\t$lock\n\t */\n\tvar $lock_on_bottom = FALSE;\n\n\t/**\n\t * Used to set the initial view state of the meta box, possible values are:\n\t * opened, closed, always_opened, this option should be used when\n\t * instantiating the class.\n\t *\n\t * @since\t1.3.3\n\t * @access\tpublic\n\t * @var\t\tstring optional possible values are: opened, closed, always_opened\n\t */\n\tvar $view;\n\n\t/**\n\t * Used to hide the show/hide checkbox option from the screen options area,\n\t * this option should be used when instantiating the class.\n\t *\n\t * @since\t\t1.3.4\n\t * @access\t\tpublic\n\t * @var\t\t\tbool optional\n\t */\n\tvar $hide_screen_option = FALSE;\n\n\t// private\n\n\tvar $meta;\n\tvar $name;\n\n\t/**\n\t * Used to provide field type hinting\n\t *\n\t * @since\t1.3\n\t * @access\tprivate\n\t * @var\t\tstring\n\t * @see\t\tthe_field()\n\t */\n\tvar $hint;\n\n\tvar $length = 0;\n\tvar $current = -1;\n\tvar $in_loop = FALSE;\n\tvar $in_template = FALSE;\n\tvar $group_tag;\n\tvar $current_post_id;\n\n\t/**\n\t * Used to store current loop details, cleared after loop ends\n\t *\n\t * @since\t1.4\n\t * @access\tprivate\n\t * @var\t\tstdClass\n\t * @see\t\thave_fields_and_multi(), have_fields()\n\t */\n\tvar $_loop_data;\n\t\n\tfunction WPAlchemy_MetaBox($arr)\n\t{\n\t\t$this->_loop_data = new stdClass;\n\t\t\n\t\t$this->meta = array();\n\n\t\t$this->types = array('post', 'page');\n\n\t\tif (isset($arr) and is_array($arr))\n\t\t{\n\t\t\tforeach ($arr as $n => $v)\n\t\t\t{\n\t\t\t\t$this->$n = $v;\n\t\t\t}\n\n\t\t\tif (empty($this->id)) die('Meta box ID required');\n\n\t\t\tif (is_numeric($this->id)) die('Meta box ID must be a string');\n\n\t\t\tif (empty($this->template)) die('Meta box template file required');\n\n\t\t\t// check for nonarray values\n\t\t\t\n\t\t\t$exc_inc = array\n\t\t\t(\n\t\t\t\t'exclude_template',\n\t\t\t\t'exclude_category_id',\n\t\t\t\t'exclude_category',\n\t\t\t\t'exclude_tag_id',\n\t\t\t\t'exclude_tag',\n\t\t\t\t'exclude_post_id',\n\n\t\t\t\t'include_template',\n\t\t\t\t'include_category_id',\n\t\t\t\t'include_category',\n\t\t\t\t'include_tag_id',\n\t\t\t\t'include_tag',\n\t\t\t\t'include_post_id'\n\t\t\t);\n\n\t\t\tforeach ($exc_inc as $v)\n\t\t\t{\n\t\t\t\t// ideally the exclude and include values should be in array form, convert to array otherwise\n\t\t\t\tif (!empty($this->$v) AND !is_array($this->$v))\n\t\t\t\t{\n\t\t\t\t\t$this->$v = array_map('trim',explode(',',$this->$v));\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// convert depreciated variables\n\t\t\tif ($this->lock_on_top) $this->lock = WPALCHEMY_LOCK_TOP;\n\t\t\telseif ($this->lock_on_bottom) $this->lock = WPALCHEMY_LOCK_BOTTOM;\n\t\t\t\n\t\t\tadd_action('admin_init', array($this,'_init'));\n\n\t\t\t// uses the default wordpress-importer plugin hook\n\t\t\tadd_action('import_post_meta', array($this, '_import'), 10, 3);\n\t\t}\n\t\telse \n\t\t{\n\t\t\tdie('Associative array parameters required');\n\t\t}\n\t}\n\n\t/**\n\t * Used to correct double serialized data during post/page export/import,\n\t * additionally will try to fix corrupted serialized data by recalculating\n\t * string length values\n\t *\n\t * @since\t1.3.16\n\t * @access\tprivate\n\t */\n\tfunction _import($post_id, $key, $value)\n\t{\n\t\tif (WPALCHEMY_MODE_ARRAY == $this->mode AND $key == $this->id)\n\t\t{\n\t\t\t// using $wp_import to get access to the raw postmeta data prior to it getting passed\n\t\t\t// through \"maybe_unserialize()\" in \"plugins/wordpress-importer/wordpress-importer.php\"\n\t\t\t// the \"import_post_meta\" action is called after \"maybe_unserialize()\"\n\t\t\t\n\t\t\tglobal $wp_import;\n\n\t\t\tforeach ( $wp_import->posts as $post )\n\t\t\t{\n\t\t\t\tif ( $post_id == $post['post_id'] )\n\t\t\t\t{\n\t\t\t\t\tforeach( $post['postmeta'] as $meta )\n\t\t\t\t\t{\n\t\t\t\t\t\tif ( $key == $meta['key'] )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t// try to fix corrupted serialized data, specifically \"\\r\\n\" being converted to \"\\n\" during wordpress XML export (WXR)\n\t\t\t\t\t\t\t// \"maybe_unserialize()\" fixes a wordpress bug which double serializes already serialized data during export/import\n\t\t\t\t\t\t\t$value = maybe_unserialize( preg_replace( '!s:(\\d+):\"(.*?)\";!es', \"'s:'.strlen('$2').':\\\"$2\\\";'\", stripslashes( $meta['value'] ) ) );\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tupdate_post_meta( $post_id, $key,  $value );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Used to initialize the meta box, runs on WordPress admin_init action,\n\t * properly calls internal WordPress methods\n\t *\n\t * @since\t1.0\n\t * @access\tprivate\n\t */\n\tfunction _init()\n\t{\n\t\t// must be creating or editing a post or page\n\t\tif ( ! WPAlchemy_MetaBox::_is_post() AND ! WPAlchemy_MetaBox::_is_page()) return;\n\t\t\n\t\tif ( ! empty($this->output_filter))\n\t\t{\n\t\t\t$this->add_filter('output', $this->output_filter);\n\t\t}\n\n\t\tif ($this->can_output())\n\t\t{\n\t\t\tforeach ($this->types as $type) \n\t\t\t{\n\t\t\t\tadd_meta_box($this->id . '_metabox', $this->title, array($this, '_setup'), $type, $this->context, $this->priority);\n\t\t\t}\n\n\t\t\tadd_action('save_post', array($this,'_save'));\n\n\t\t\t$filters = array('save', 'head', 'foot');\n\n\t\t\tforeach ($filters as $filter)\n\t\t\t{\n\t\t\t\t$var = $filter . '_filter';\n\n\t\t\t\tif (!empty($this->$var))\n\t\t\t\t{\n\t\t\t\t\tif ('save' == $filter)\n\t\t\t\t\t{\n\t\t\t\t\t\t$this->add_filter($filter, $this->$var, 10, 2);\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\t$this->add_filter($filter, $this->$var);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t$actions = array('save', 'head', 'foot', 'init');\n\n\t\t\tforeach ($actions as $action)\n\t\t\t{\n\t\t\t\t$var = $action . '_action';\n\n\t\t\t\tif (!empty($this->$var))\n\t\t\t\t{\n\t\t\t\t\tif ('save' == $action)\n\t\t\t\t\t{\n\t\t\t\t\t\t$this->add_action($action, $this->$var, 10, 2);\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\t$this->add_action($action, $this->$var);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tadd_action('admin_head', array($this,'_head'), 11);\n\n\t\t\tadd_action('admin_footer', array($this,'_foot'), 11);\n\n\t\t\t// action: init\n\t\t\tif ($this->has_action('init'))\n\t\t\t{\n\t\t\t\t$this->do_action('init');\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Used to insert STYLE or SCRIPT tags into the head, called on WordPress\n\t * admin_head action.\n\t * \n\t * @since\t1.3\n\t * @access\tprivate\n\t * @see\t\t_foot()\n\t */\n\tfunction _head()\n\t{\n\t\t$content = NULL;\n\n\t\tob_start();\n\n\t\t?>\n\t\t<style type=\"text/css\">\n\t\t\t<?php if ($this->hide_editor) { ?> #wp-content-editor-container, #post-status-info, <?php if ($this->use_media_buttons) { ?> #content-html, #content-tmce<?php } else { ?> #wp-content-wrap<?php } ?> { display:none; } <?php } ?>\n\t\t</style>\n\t\t<?php\n\n\t\t$content = ob_get_contents();\n\n\t\tob_end_clean();\n\n\t\t// filter: head\n\t\tif ($this->has_filter('head'))\n\t\t{\n\t\t\t$content = $this->apply_filters('head', $content);\n\t\t}\n\n\t\techo $content;\n\n\t\t// action: head\n\t\tif ($this->has_action('head'))\n\t\t{\n\t\t\t$this->do_action('head');\n\t\t}\n\t}\n\n\t/**\n\t * Used to insert SCRIPT tags into the footer, called on WordPress\n\t * admin_footer action.\n\t *\n\t * @since\t1.3\n\t * @access\tprivate\n\t * @see\t\t_head()\n\t */\n\tfunction _foot()\n\t{\n\t\t$content = NULL;\n\n\t\tif\n\t\t(\n\t\t\t$this->lock OR\n\t\t\t$this->hide_title OR\n\t\t\t$this->view OR\n\t\t\t$this->hide_screen_option\n\t\t)\n\t\t{\n\t\t\tob_start();\n\n\t\t\t?>\n\t\t\t<script type=\"text/javascript\">\n\t\t\t/* <![CDATA[ */\n\t\t\t(function($){ /* not using jQuery ondomready, code runs right away in footer */\n\n\t\t\t\tvar mb_id = '<?php echo $this->id; ?>';\n\t\t\t\tvar mb = $('#' + mb_id + '_metabox');\n\n\t\t\t\t<?php if (WPALCHEMY_LOCK_TOP == $this->lock): ?>\n\t\t\t\t<?php if ('side' == $this->context): ?>\n\t\t\t\tvar id = 'wpalchemy-side-top';\n\t\t\t\tif ( ! $('#'+id).length)\n\t\t\t\t{\n\t\t\t\t\t$('<div></div>').attr('id',id).prependTo('#side-info-column');\n\t\t\t\t}\n\t\t\t\t<?php else: ?>\n\t\t\t\tvar id = 'wpalchemy-content-top';\n\t\t\t\tif ( ! $('#'+id).length)\n\t\t\t\t{\n\t\t\t\t\t$('<div></div>').attr('id',id).insertAfter('#postdiv, #postdivrich');\n\t\t\t\t}\n\t\t\t\t<?php endif; ?>\n\t\t\t\t$('#'+id).append(mb);\n\t\t\t\t<?php elseif (WPALCHEMY_LOCK_BOTTOM == $this->lock): ?>\n\t\t\t\t<?php if ('side' == $this->context): ?>\n\t\t\t\tvar id = 'wpalchemy-side-bottom';\n\t\t\t\tif ( ! $('#'+id).length)\n\t\t\t\t{\n\t\t\t\t\t$('<div></div>').attr('id',id).appendTo('#side-info-column');\n\t\t\t\t}\n\t\t\t\t<?php else: ?>\n\t\t\t\tif ( ! $('#advanced-sortables').children().length)\n\t\t\t\t{\n\t\t\t\t\t$('#advanced-sortables').css('display','none');\n\t\t\t\t}\n\n\t\t\t\tvar id = 'wpalchemy-content-bottom';\n\t\t\t\tif ( ! $('#'+id).length)\n\t\t\t\t{\n\t\t\t\t\t$('<div></div>').attr('id',id).insertAfter('#advanced-sortables');\n\t\t\t\t}\n\t\t\t\t<?php endif; ?>\n\t\t\t\t$('#'+id).append(mb);\n\t\t\t\t<?php elseif (WPALCHEMY_LOCK_BEFORE_POST_TITLE == $this->lock): ?>\n\t\t\t\t<?php if ('side' != $this->context): ?>\n\t\t\t\tvar id = 'wpalchemy-content-bpt';\n\t\t\t\tif ( ! $('#'+id).length)\n\t\t\t\t{\n\t\t\t\t\t$('<div></div>').attr('id',id).prependTo('#post-body-content');\n\t\t\t\t}\n\t\t\t\t$('#'+id).append(mb);\n\t\t\t\t<?php endif; ?>\n\t\t\t\t<?php elseif (WPALCHEMY_LOCK_AFTER_POST_TITLE == $this->lock): ?>\n\t\t\t\t<?php if ('side' != $this->context): ?>\n\t\t\t\tvar id = 'wpalchemy-content-apt';\n\t\t\t\tif ( ! $('#'+id).length)\n\t\t\t\t{\n\t\t\t\t\t$('<div></div>').attr('id',id).insertAfter('#titlediv');\n\t\t\t\t}\n\t\t\t\t$('#'+id).append(mb);\n\t\t\t\t<?php endif; ?>\n\t\t\t\t<?php endif; ?>\n\n\t\t\t\t<?php if ( ! empty($this->lock)): ?>\n\t\t\t\t$('.hndle', mb).css('cursor','pointer');\n\t\t\t\t$('.handlediv', mb).remove();\n\t\t\t\t<?php endif; ?>\n\n\t\t\t\t<?php if ($this->hide_title): ?>\n\t\t\t\t$('.hndle', mb).remove();\n\t\t\t\t$('.handlediv', mb).remove();\n\t\t\t\tmb.removeClass('closed'); /* start opened */\n\t\t\t\t<?php endif; ?>\n\n\t\t\t\t<?php if (WPALCHEMY_VIEW_START_OPENED == $this->view): ?>\n\t\t\t\tmb.removeClass('closed');\n\t\t\t\t<?php elseif (WPALCHEMY_VIEW_START_CLOSED == $this->view): ?>\n\t\t\t\tmb.addClass('closed');\n\t\t\t\t<?php elseif (WPALCHEMY_VIEW_ALWAYS_OPENED == $this->view): ?>\n\t\t\t\t/* todo: need to find a way to add this script block below, load-scripts.php?... */\n\t\t\t\tvar h3 = mb.children('h3');\n\t\t\t\tsetTimeout(function(){ h3.unbind('click'); }, 1000);\n\t\t\t\t$('.handlediv', mb).remove();\n\t\t\t\tmb.removeClass('closed'); /* start opened */\n\t\t\t\t$('.hndle', mb).css('cursor','auto');\n\t\t\t\t<?php endif; ?>\n\n\t\t\t\t<?php if ($this->hide_screen_option): ?>\n\t\t\t\t\t$('.metabox-prefs label[for='+ mb_id +'_metabox-hide]').remove();\n\t\t\t\t<?php endif; ?>\n\n\t\t\t\tmb = null;\n\n\t\t\t})(jQuery);\n\t\t\t/* ]]> */\n\t\t\t</script>\n\t\t\t<?php\n\n\t\t\t$content = ob_get_contents();\n\n\t\t\tob_end_clean();\n\t\t}\n\t\t\n\t\t// filter: foot\n\t\tif ($this->has_filter('foot'))\n\t\t{\n\t\t\t$content = $this->apply_filters('foot', $content);\n\t\t}\n\n\t\techo $content;\n\n\t\t// action: foot\n\t\tif ($this->has_action('foot'))\n\t\t{\n\t\t\t$this->do_action('foot');\n\t\t}\n\t}\n\n\t/**\n\t * Used to setup the meta box content template\n\t *\n\t * @since\t1.0\n\t * @access\tprivate\n\t * @see\t\t_init()\n\t */\n\tfunction _setup()\n\t{\n\t\t$this->in_template = TRUE;\n\t\t\n\t\t// also make current post data available\n\t\tglobal $post;\n\n\t\t// shortcuts\n\t\t$mb =& $this;\n\t\t$metabox =& $this;\n\t\t$id = $this->id;\n\t\t$meta = $this->_meta(NULL, TRUE);\n\n\t\t// use include because users may want to use one templete for multiple meta boxes\n\t\tinclude $this->template;\n\t \n\t\t// create a nonce for verification\n\t\techo '<input type=\"hidden\" name=\"'. $this->id .'_nonce\" value=\"' . wp_create_nonce($this->id) . '\" />';\n\n\t\t$this->in_template = FALSE;\n\t}\n\n\t/**\n\t * Used to properly prefix the filter tag, the tag is unique to the meta\n\t * box instance\n\t * \n\t * @since\t1.3\n\t * @access\tprivate\n\t * @param\tstring $tag name of the filter\n\t * @return\tstring uniquely prefixed tag name\n\t */\n\tfunction _get_filter_tag($tag)\n\t{\n\t\t$prefix = 'wpalchemy_filter_' . $this->id . '_';\n\t\t$prefix = preg_replace('/_+/', '_', $prefix);\n\n\t\t$tag = preg_replace('/^'. $prefix .'/i', '', $tag);\n\t\treturn $prefix . $tag;\n\t}\n\n\t/**\n\t * Uses WordPress add_filter() function, see WordPress add_filter()\n\t *\n\t * @since\t1.3\n\t * @access\tpublic\n\t * @link\thttp://core.trac.wordpress.org/browser/trunk/wp-includes/plugin.php#L65\n\t */\n\tfunction add_filter($tag, $function_to_add, $priority = 10, $accepted_args = 1)\n\t{\n\t\t$tag = $this->_get_filter_tag($tag);;\n\t\tadd_filter($tag, $function_to_add, $priority, $accepted_args);\n\t}\n\n\t/**\n\t * Uses WordPress has_filter() function, see WordPress has_filter()\n\t *\n\t * @since\t1.3\n\t * @access\tpublic\n\t * @link\thttp://core.trac.wordpress.org/browser/trunk/wp-includes/plugin.php#L86\n\t */\n\tfunction has_filter($tag, $function_to_check = FALSE)\n\t{\n\t\t$tag = $this->_get_filter_tag($tag);\n\t\treturn has_filter($tag, $function_to_check);\n\t}\n\n\t/**\n\t * Uses WordPress apply_filters() function, see WordPress apply_filters()\n\t *\n\t * @since\t1.3\n\t * @access\tpublic\n\t * @link\thttp://core.trac.wordpress.org/browser/trunk/wp-includes/plugin.php#L134\n\t */\n\tfunction apply_filters($tag, $value)\n\t{\n\t\t$args = func_get_args();\n\t\t$args[0] = $this->_get_filter_tag($tag);\n\t\treturn call_user_func_array('apply_filters', $args);\n\t}\n\n\t/**\n\t * Uses WordPress remove_filter() function, see WordPress remove_filter()\n\t *\n\t * @since\t1.3\n\t * @access\tpublic\n\t * @link\thttp://core.trac.wordpress.org/browser/trunk/wp-includes/plugin.php#L250\n\t */\n\tfunction remove_filter($tag, $function_to_remove, $priority = 10, $accepted_args = 1)\n\t{\n\t\t$tag = $this->_get_filter_tag($tag);\n\t\treturn remove_filter($tag, $function_to_remove, $priority, $accepted_args);\n\t}\n\n\t/**\n\t * Used to properly prefix the action tag, the tag is unique to the meta\n\t * box instance\n\t *\n\t * @since\t1.3\n\t * @access\tprivate\n\t * @param\tstring $tag name of the action\n\t * @return\tstring uniquely prefixed tag name\n\t */\n\tfunction _get_action_tag($tag)\n\t{\n\t\t$prefix = 'wpalchemy_action_' . $this->id . '_';\n\t\t$prefix = preg_replace('/_+/', '_', $prefix);\n\n\t\t$tag = preg_replace('/^'. $prefix .'/i', '', $tag);\n\t\treturn $prefix . $tag;\n\t}\n\n\t/**\n\t * Uses WordPress add_action() function, see WordPress add_action()\n\t *\n\t * @since\t1.3\n\t * @access\tpublic\n\t * @link\thttp://core.trac.wordpress.org/browser/trunk/wp-includes/plugin.php#L324\n\t */\n\tfunction add_action($tag, $function_to_add, $priority = 10, $accepted_args = 1)\n\t{\n\t\t$tag = $this->_get_action_tag($tag);\n\t\tadd_action($tag, $function_to_add, $priority, $accepted_args);\n\t}\n\n\t/**\n\t * Uses WordPress has_action() function, see WordPress has_action()\n\t *\n\t * @since\t1.3\n\t * @access\tpublic\n\t * @link\thttp://core.trac.wordpress.org/browser/trunk/wp-includes/plugin.php#L492\n\t */\n\tfunction has_action($tag, $function_to_check = FALSE)\n\t{\n\t\t$tag = $this->_get_action_tag($tag);\n\t\treturn has_action($tag, $function_to_check);\n\t}\n\n\t/**\n\t * Uses WordPress remove_action() function, see WordPress remove_action()\n\t * \n\t * @since\t1.3\n\t * @access\tpublic\n\t * @link\thttp://core.trac.wordpress.org/browser/trunk/wp-includes/plugin.php#L513\n\t */\n\tfunction remove_action($tag, $function_to_remove, $priority = 10, $accepted_args = 1)\n\t{\n\t\t$tag = $this->_get_action_tag($tag);\n\t\treturn remove_action($tag, $function_to_remove, $priority, $accepted_args);\n\t}\n\n\t/**\n\t * Uses WordPress do_action() function, see WordPress do_action()\n\t * @since\t1.3\n\t * @access\tpublic\n\t * @link\thttp://core.trac.wordpress.org/browser/trunk/wp-includes/plugin.php#L352\n\t */\n\tfunction do_action($tag, $arg = '')\n\t{\n\t\t$args = func_get_args();\n\t\t$args[0] = $this->_get_action_tag($tag);\n\t\treturn call_user_func_array('do_action', $args);\n\t}\n\n\t/**\n\t * Used to check if creating a new post or editing one\n\t *\n\t * @static\n\t * @since\t1.3.7\n\t * @access\tprivate\n\t * @return\tbool\n\t * @see\t\t_is_page()\n\t */\n\tstatic function _is_post()\n\t{\n\t\tif ('post' == WPAlchemy_MetaBox::_is_post_or_page())\n\t\t{\n\t\t\treturn TRUE;\n\t\t}\n\n\t\treturn FALSE;\n\t}\n\n\t/**\n\t * Used to check if creating a new page or editing one\n\t *\n\t * @static\n\t * @since\t1.3.7\n\t * @access\tprivate\n\t * @return\tbool\n\t * @see\t\t_is_post()\n\t */\n\tstatic function _is_page()\n\t{\n\t\tif ('page' == WPAlchemy_MetaBox::_is_post_or_page())\n\t\t{\n\t\t\treturn TRUE;\n\t\t}\n\n\t\treturn FALSE;\n\t}\n\n\t/**\n\t * Used to check if creating or editing a post or page\n\t *\n\t * @static\n\t * @since\t1.3.8\n\t * @access\tprivate\n\t * @return\tstring \"post\" or \"page\"\n\t * @see\t\t_is_post(), _is_page()\n\t */\n\tstatic function _is_post_or_page()\n\t{\n\t\t$post_type = WPAlchemy_MetaBox::_get_current_post_type();\n\n\t\tif (isset($post_type))\n\t\t{\n\t\t\tif ('page' == $post_type)\n\t\t\t{\n\t\t\t\treturn 'page';\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\treturn 'post';\n\t\t\t}\n\t\t}\n\n\t\treturn NULL;\n\t}\n\n\t/**\n\t * Used to check for the current post type, works when creating or editing a\n\t * new post, page or custom post type.\n\t *\n\t * @static\n\t * @since\t1.4.6\n\t * @return\tstring [custom_post_type], page or post\n\t */\n\tstatic function _get_current_post_type()\n\t{\n\t\t$uri = isset($_SERVER['REQUEST_URI']) ? $_SERVER['REQUEST_URI'] : NULL ;\n\n\t\tif ( isset( $uri ) )\n\t\t{\n\t\t\t$uri_parts = parse_url($uri);\n\n\t\t\t$file = basename($uri_parts['path']);\n\n\t\t\tif ($uri AND in_array($file, array('post.php', 'post-new.php')))\n\t\t\t{\n\t\t\t\t$post_id = WPAlchemy_MetaBox::_get_post_id();\n\n\t\t\t\t$post_type = isset($_GET['post_type']) ? $_GET['post_type'] : NULL ;\n\n\t\t\t\t$post_type = $post_id ? get_post_type($post_id) : $post_type ;\n\n\t\t\t\tif (isset($post_type))\n\t\t\t\t{\n\t\t\t\t\treturn $post_type;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\t// because of the 'post.php' and 'post-new.php' checks above, we can default to 'post'\n\t\t\t\t\treturn 'post';\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn NULL;\n\t}\n\n\t/**\n\t * Used to get the current post id.\n\t *\n\t * @static\n\t * @since\t1.4.8\n\t * @return\tint post ID\n\t */\n\tstatic function _get_post_id()\n\t{\n\t\tglobal $post;\n\n\t\t$p_post_id = isset($_POST['post_ID']) ? $_POST['post_ID'] : null ;\n\n\t\t$g_post_id = isset($_GET['post']) ? $_GET['post'] : null ;\n\n\t\t$post_id = $g_post_id ? $g_post_id : $p_post_id ;\n\n\t\t$post_id = isset($post->ID) ? $post->ID : $post_id ;\n\n\t\tif (isset($post_id))\n\t\t{\n\t\t\treturn (integer) $post_id;\n\t\t}\n\t\t\n\t\treturn null;\n\t}\n\n\t/**\n\t * @since\t1.0\n\t */\n\tfunction can_output()\n\t{\n\t\t$post_id = WPAlchemy_MetaBox::_get_post_id();\n\n\t\tif (!empty($this->exclude_template) OR !empty($this->include_template))\n\t\t{\n\t\t\t$template_file = get_post_meta($post_id,'_wp_page_template',TRUE);\n\t\t}\n\n\t\tif \n\t\t(\n\t\t\t!empty($this->exclude_category) OR \n\t\t\t!empty($this->exclude_category_id) OR \n\t\t\t!empty($this->include_category) OR\n\t\t\t!empty($this->include_category_id)\n\t\t)\n\t\t{\n\t\t\t$categories = wp_get_post_categories($post_id,'fields=all');\n\t\t}\n\n\t\tif \n\t\t(\n\t\t\t!empty($this->exclude_tag) OR \n\t\t\t!empty($this->exclude_tag_id) OR \n\t\t\t!empty($this->include_tag) OR\n\t\t\t!empty($this->include_tag_id)\n\t\t)\n\t\t{\n\t\t\t$tags = wp_get_post_tags($post_id);\n\t\t}\n\n\t\t// processing order: \"exclude\" then \"include\"\n\t\t// processing order: \"template\" then \"category\" then \"post\"\n\n\t\t$can_output = TRUE; // include all\n\n\t\tif \n\t\t(\n\t\t\t!empty($this->exclude_template) OR \n\t\t\t!empty($this->exclude_category_id) OR \n\t\t\t!empty($this->exclude_category) OR \n\t\t\t!empty($this->exclude_tag_id) OR\n\t\t\t!empty($this->exclude_tag) OR\n\t\t\t!empty($this->exclude_post_id) OR\n\t\t\t!empty($this->include_template) OR \n\t\t\t!empty($this->include_category_id) OR \n\t\t\t!empty($this->include_category) OR \n\t\t\t!empty($this->include_tag_id) OR \n\t\t\t!empty($this->include_tag) OR \n\t\t\t!empty($this->include_post_id)\n\t\t)\n\t\t{\n\t\t\tif (!empty($this->exclude_template))\n\t\t\t{\n\t\t\t\tif (in_array($template_file,$this->exclude_template)) \n\t\t\t\t{\n\t\t\t\t\t$can_output = FALSE;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (!empty($this->exclude_category_id))\n\t\t\t{\n\t\t\t\tforeach ($categories as $cat)\n\t\t\t\t{\n\t\t\t\t\tif (in_array($cat->term_id,$this->exclude_category_id)) \n\t\t\t\t\t{\n\t\t\t\t\t\t$can_output = FALSE;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (!empty($this->exclude_category))\n\t\t\t{\n\t\t\t\tforeach ($categories as $cat)\n\t\t\t\t{\n\t\t\t\t\tif \n\t\t\t\t\t(\n\t\t\t\t\t\tin_array($cat->slug,$this->exclude_category) OR\n\t\t\t\t\t\tin_array($cat->name,$this->exclude_category)\n\t\t\t\t\t) \n\t\t\t\t\t{\n\t\t\t\t\t\t$can_output = FALSE;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (!empty($this->exclude_tag_id))\n\t\t\t{\n\t\t\t\tforeach ($tags as $tag)\n\t\t\t\t{\n\t\t\t\t\tif (in_array($tag->term_id,$this->exclude_tag_id)) \n\t\t\t\t\t{\n\t\t\t\t\t\t$can_output = FALSE;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (!empty($this->exclude_tag))\n\t\t\t{\n\t\t\t\tforeach ($tags as $tag)\n\t\t\t\t{\n\t\t\t\t\tif \n\t\t\t\t\t(\n\t\t\t\t\t\tin_array($tag->slug,$this->exclude_tag) OR \n\t\t\t\t\t\tin_array($tag->name,$this->exclude_tag)\n\t\t\t\t\t) \n\t\t\t\t\t{\n\t\t\t\t\t\t$can_output = FALSE;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (!empty($this->exclude_post_id))\n\t\t\t{\n\t\t\t\tif (in_array($post_id,$this->exclude_post_id)) \n\t\t\t\t{\n\t\t\t\t\t$can_output = FALSE;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// excludes are not set use \"include only\" mode\n\n\t\t\tif \n\t\t\t(\n\t\t\t\tempty($this->exclude_template) AND \n\t\t\t\tempty($this->exclude_category_id) AND \n\t\t\t\tempty($this->exclude_category) AND \n\t\t\t\tempty($this->exclude_tag_id) AND \n\t\t\t\tempty($this->exclude_tag) AND \n\t\t\t\tempty($this->exclude_post_id)\n\t\t\t)\n\t\t\t{\n\t\t\t\t$can_output = FALSE;\n\t\t\t}\n\n\t\t\tif (!empty($this->include_template))\n\t\t\t{\n\t\t\t\tif (in_array($template_file,$this->include_template)) \n\t\t\t\t{\n\t\t\t\t\t$can_output = TRUE;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (!empty($this->include_category_id))\n\t\t\t{\n\t\t\t\tforeach ($categories as $cat)\n\t\t\t\t{\n\t\t\t\t\tif (in_array($cat->term_id,$this->include_category_id)) \n\t\t\t\t\t{\n\t\t\t\t\t\t$can_output = TRUE;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (!empty($this->include_category))\n\t\t\t{\n\t\t\t\tforeach ($categories as $cat)\n\t\t\t\t{\n\t\t\t\t\tif \n\t\t\t\t\t(\n\t\t\t\t\t\tin_array($cat->slug,$this->include_category) OR\n\t\t\t\t\t\tin_array($cat->name,$this->include_category)\n\t\t\t\t\t)\n\t\t\t\t\t{\n\t\t\t\t\t\t$can_output = TRUE;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (!empty($this->include_tag_id))\n\t\t\t{\n\t\t\t\tforeach ($tags as $tag)\n\t\t\t\t{\n\t\t\t\t\tif (in_array($tag->term_id,$this->include_tag_id)) \n\t\t\t\t\t{\n\t\t\t\t\t\t$can_output = TRUE;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (!empty($this->include_tag))\n\t\t\t{\n\t\t\t\tforeach ($tags as $tag)\n\t\t\t\t{\n\t\t\t\t\tif \n\t\t\t\t\t(\n\t\t\t\t\t\tin_array($tag->slug,$this->include_tag) OR\n\t\t\t\t\t\tin_array($tag->name,$this->include_tag)\n\t\t\t\t\t) \n\t\t\t\t\t{\n\t\t\t\t\t\t$can_output = TRUE;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (!empty($this->include_post_id))\n\t\t\t{\n\t\t\t\tif (in_array($post_id,$this->include_post_id)) \n\t\t\t\t{\n\t\t\t\t\t$can_output = TRUE;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t$post_type = WPAlchemy_MetaBox::_get_current_post_type();\n\n\t\tif (isset($post_type) AND ! in_array($post_type, $this->types))\n\t\t{\n\t\t\t$can_output = FALSE;\n\t\t}\n\n\t\t// filter: output (can_output)\n\t\tif ($this->has_filter('output'))\n\t\t{\n\t\t\t$can_output = $this->apply_filters('output', $post_id);\n\t\t}\n\n\t\treturn $can_output;\n\t}\n\n\t/**\n\t * Used to insert global STYLE or SCRIPT tags into the head, called on\n\t * WordPress admin_footer action.\n\t *\n\t * @static\n\t * @since\t1.3\n\t * @access\tprivate\n\t * @see\t\t_global_foot()\n\t */\n\tstatic function _global_head()\n\t{\n\t\t// must be creating or editing a post or page\n\t\tif ( ! WPAlchemy_MetaBox::_is_post() AND ! WPAlchemy_MetaBox::_is_page()) return;\n\n\t\t// todo: you're assuming people will want to use this exact functionality\n\t\t// consider giving a developer access to change this via hooks/callbacks\n\n\t\t// include javascript for special functionality\n\t\t?><style type=\"text/css\"> .wpa_group.tocopy { display:none; } </style>\n\t\t<script type=\"text/javascript\">\n\t\t/* <![CDATA[ */\n\t\tjQuery(function($)\n\t\t{\n\t\t\t$(document).click(function(e)\n\t\t\t{\t\t\n\t\t\t\tvar elem = $(e.target);\n\n\t\t\t\tif (elem.attr('class') && elem.filter('[class*=dodelete]').length)\n\t\t\t\t{\n\t\t\t\t\te.preventDefault();\n\n\t\t\t\t\tvar p = elem.parents('.wpa_group:first');\n\n\t\t\t\t\tif(p.length <= 0)\n\t\t\t\t\t\tp = elem.parents('.postbox'); /*wp*/\n\n\t\t\t\t\tvar the_name = elem.attr('class').match(/dodelete-([a-zA-Z0-9_-]*)/i);\n\n\t\t\t\t\tthe_name = (the_name && the_name[1]) ? the_name[1] : null ;\n\n\t\t\t\t\t/* todo: expose and allow editing of this message */\n\t\t\t\t\tif (confirm('This action can not be undone, are you sure?'))\n\t\t\t\t\t{\n\t\t\t\t\t\tif (the_name)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t$('.wpa_group-'+ the_name, p).not('.tocopy').remove();\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\telem.parents('.wpa_group:first').remove();\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tif(!the_name)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tvar the_group = elem.parents('.wpa_group');\n\t\t\t\t\t\t\tif(the_group && the_group.attr('class'))\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tthe_name = the_group.attr('class').match(/wpa_group-([a-zA-Z0-9_-]*)/i);\n\t\t\t\t\t\t\t\tthe_name = (the_name && the_name[1]) ? the_name[1] : null ;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcheckLoopLimit(the_name);\n\n\t\t\t\t\t\t$.wpalchemy.trigger('wpa_delete');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t$(document).on('click', '[class*=docopy-]', function(e)\n\t\t\t{\n\t\t\t\te.preventDefault();\n\n\t\t\t\tvar p = $(this).parents('.wpa_group:first');\n\n\t\t\t\tif(p.length <= 0)\n\t\t\t\t\tp = $(this).parents('.postbox'); /*wp*/\n\n\t\t\t\tvar the_name = $(this).attr('class').match(/docopy-([a-zA-Z0-9_-]*)/i)[1];\n\n\t\t\t\tvar the_group = $('.wpa_group-'+ the_name +'.tocopy', p).first();\n\n\t\t\t\tvar the_clone = the_group.clone().removeClass('tocopy last');\n\n\t\t\t\tvar the_props = ['name', 'id', 'for', 'class'];\n\n\t\t\t\tthe_group.find('*').each(function(i, elem)\n\t\t\t\t{\n\t\t\t\t\tfor (var j = 0; j < the_props.length; j++)\n\t\t\t\t\t{\n\t\t\t\t\t\tvar the_prop = $(elem).attr(the_props[j]);\n\n\t\t\t\t\t\tif (the_prop)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tvar reg = new RegExp('\\\\['+the_name+'\\\\]\\\\[(\\\\d+)\\\\]', 'i');\n\t\t\t\t\t\t\tvar the_match = the_prop.match(reg);\n\n\t\t\t\t\t\t\tif (the_match)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tthe_prop = the_prop.replace(the_match[0], '['+ the_name + ']' + '['+ (+the_match[1]+1) +']');\n\n\t\t\t\t\t\t\t\t$(elem).attr(the_props[j], the_prop);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tthe_match = null;\n\n\t\t\t\t\t\t\t// todo: this may prove to be too broad of a search\n\t\t\t\t\t\t\tthe_match = the_prop.match(/n(\\d+)/i);\n\n\t\t\t\t\t\t\tif (the_match)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tthe_prop = the_prop.replace(the_match[0], 'n' + (+the_match[1]+1));\n\n\t\t\t\t\t\t\t\t$(elem).attr(the_props[j], the_prop);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\t// increment the group id\n\t\t\t\tvar reg       = new RegExp('\\\\[(\\\\d+)\\\\]$', 'i');\n\t\t\t\tvar the_id    = the_group.attr(\"id\");\n\t\t\t\tvar the_match = the_id.match(reg);\n\t\t\t\tif (the_match)\n\t\t\t\t{\n\t\t\t\t\tthe_group.attr(\"id\", the_id.replace(the_match[0], '['+ (+the_match[1]+1) +']'));\n\t\t\t\t}\n\n\t\t\t\tif ($(this).hasClass('ontop'))\n\t\t\t\t{\n\t\t\t\t\t$('.wpa_group-'+ the_name, p).first().before(the_clone);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tthe_group.before(the_clone);\n\t\t\t\t}\n\n\t\t\t\tcheckLoopLimit(the_name);\n\n\t\t\t\t$.wpalchemy.trigger('wpa_copy', [the_clone]);\n\t\t\t});\n\n\t\t\tfunction checkLoopLimit(name)\n\t\t\t{\n\t\t\t\tvar elems = $('.docopy-' + name);\n\n\t\t\t\t$.each(elems, function(idx, elem){\n\n\t\t\t\t\tvar p = $(this).parents('.wpa_group:first');\n\n\t\t\t\t\tif(p.length <= 0)\n\t\t\t\t\t\tp = $(this).parents('.postbox'); /*wp*/\n\n\t\t\t\t\tvar the_class = $('.wpa_loop-' + name, p).attr('class');\n\n\t\t\t\t\tif (the_class)\n\t\t\t\t\t{\n\t\t\t\t\t\tvar the_match = the_class.match(/wpa_loop_limit-([0-9]*)/i);\n\n\t\t\t\t\t\tif (the_match)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tvar the_limit = the_match[1];\n\n\t\t\t\t\t\t\tif ($('.wpa_group-' + name, p).not('.wpa_group.tocopy').length >= the_limit)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t$(this).hide();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t$(this).show();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t});\n\n\t\t\t}\n\t\t\t\n\t\t\t/* do an initial limit check, show or hide buttons */\n\t\t\t$('[class*=docopy-]').each(function()\n\t\t\t{\n\t\t\t\tvar the_name = $(this).attr('class').match(/docopy-([a-zA-Z0-9_-]*)/i)[1];\n\n\t\t\t\tcheckLoopLimit(the_name);\n\t\t\t});\n\t\t});\n\t\t/* ]]> */\n\t\t</script>\n\t\t<?php\n\t}\n\n\t/**\n\t * Used to insert global SCRIPT tags into the footer, called on WordPress\n\t * admin_footer action.\n\t *\n\t * @static\n\t * @since\t1.3\n\t * @access\tprivate\n\t * @see\t\t_global_head()\n\t */\n\tstatic function _global_foot()\n\t{\n\t\t// must be creating or editing a post or page\n\t\tif ( ! WPAlchemy_MetaBox::_is_post() AND ! WPAlchemy_MetaBox::_is_page()) return;\n\n\t\t?>\n\t\t<script type=\"text/javascript\">\n\t\t/* <![CDATA[ */\n\t\t(function($){ /* not using jQuery ondomready, code runs right away in footer */\n\n\t\t\t/* use a global dom element to attach events to */\n\t\t\t$.wpalchemy = $('<div></div>').attr('id','wpalchemy').appendTo('body');\n\n\t\t})(jQuery);\n\t\t/* ]]> */\n\t\t</script>\n\t\t<?php\n\t}\n\n\t/**\n\t * Gets the meta data for a meta box\n\t *\n\t * @since\t1.0\n\t * @access\tpublic\n\t * @param\tint $post_id optional post ID for which to retrieve the meta data\n\t * @return\tarray\n\t * @see\t\t_meta\n\t */\n\tfunction the_meta($post_id = NULL)\n\t{\n\t\treturn $this->_meta($post_id);\n\t}\n\n\t/**\n\t * Gets the meta data for a meta box\n\t *\n\t * Internal method calls will typically bypass the data retrieval and will\n\t * immediately return the current meta data\n\t *\n\t * @since\t1.3\n\t * @access\tprivate\n\t * @param\tint $post_id optional post ID for which to retrieve the meta data\n\t * @param\tbool $internal optional boolean if internally calling\n\t * @return\tarray\n\t * @see\t\tthe_meta()\n\t */\n\tfunction _meta($post_id = NULL, $internal = FALSE)\n\t{\n\t\tif ( ! is_numeric($post_id))\n\t\t{\n\t\t\tif ($internal AND $this->current_post_id)\n\t\t\t{\n\t\t\t\t$post_id = $this->current_post_id;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tglobal $post;\n\n\t\t\t\t$post_id = $post->ID;\n\t\t\t}\n\t\t}\n\n\t\t// this allows multiple internal calls to _meta() without having to fetch data everytime\n\t\tif ($internal AND !empty($this->meta) AND $this->current_post_id == $post_id) return $this->meta;\n\n\t\t$this->current_post_id = $post_id;\n\n\t\t// WPALCHEMY_MODE_ARRAY\n\n\t\t$meta = get_post_meta($post_id, $this->id, TRUE);\n\n\t\t// var_dump($meta);\n\n\t\t// WPALCHEMY_MODE_EXTRACT\n\n\t\t$fields = get_post_meta($post_id, $this->id . '_fields', TRUE);\n\n\t\tif ( ! empty($fields) AND is_array($fields))\n\t\t{\n\t\t\t$meta = array();\n\t\t\t\n\t\t\tforeach ($fields as $field)\n\t\t\t{\n\t\t\t\t$field_noprefix = preg_replace('/^' . $this->prefix . '/i', '', $field);\n\t\t\t\t$meta[$field_noprefix] = get_post_meta($post_id, $field, TRUE);\n\t\t\t}\n\t\t}\n\n\t\t$this->meta = $meta;\n\n\t\treturn $this->meta;\n\t}\n\n\t// user can also use the_ID(), php functions are case-insensitive\n\t/**\n\t * @since\t1.0\n\t * @access\tpublic\n\t */\n\tfunction the_id()\n\t{\n\t\techo $this->get_the_id();\n\t}\n\n\t/**\n\t * @since\t1.0\n\t * @access\tpublic\n\t */\n\tfunction get_the_id()\n\t{\n\t\treturn $this->id;\n\t}\n\n\t/**\n\t * @since\t1.0\n\t * @access\tpublic\n\t */\n\tfunction the_field($n, $hint = NULL)\n\t{\n\t\t$this->name = $n;\n\t\t$this->hint = $hint;\n\t}\n\n\t/**\n\t * @since\t1.0\n\t * @access\tpublic\n\t */\n\tfunction have_value($n = NULL)\n\t{\n\t\tif ($this->get_the_value($n)) return TRUE;\n\t\t\n\t\treturn FALSE;\n\t}\n\n\t/**\n\t * @since\t1.0\n\t * @access\tpublic\n\t */\n\tfunction the_value($n = NULL)\n\t{\n\t\techo $this->get_the_value($n);\n\t}\n\n\tfunction get_the_value($n = NULL, $collection = FALSE)\n\t{\n\t\t$this->_meta(NULL, TRUE);\n\n\t\t$value = null;\n\n\t\tif ($this->is_in_loop())\n\t\t{\n\t\t\t$n = is_null($n) ? $this->name : $n ;\n\n\t\t\tif(!is_null($n))\n\t\t\t{\n\t\t\t\tif ($collection)\n\t\t\t\t{\n\t\t\t\t\t$keys   = $this->get_the_loop_group_name_array();\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\t$keys   = $this->get_the_loop_group_name_array();\n\t\t\t\t\t$keys[] = $n;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tif ($collection)\n\t\t\t\t{\n\t\t\t\t\t$keys   = $this->get_the_loop_group_name_array();\n\t\t\t\t\tend($keys);\n\t\t\t\t\t$last   = key($keys);\n\t\t\t\t\tunset($keys[$last]);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\t$keys   = $this->get_the_loop_group_name_array();\n\t\t\t\t}\n\t\t\t}\n\t\t\t$value = $this->get_meta_by_array($keys);\n\t\t}\n\t\telse\n\t\t{\n\t\t\t$n = is_null($n) ? $this->name : $n ;\n\n\t\t\tif(isset($this->meta[$n]))\n\t\t\t{\n\t\t\t\t$value = $this->meta[$n];\n\t\t\t}\n\t\t}\n\n\t\tif (is_string($value) || is_numeric($value))\n\t\t{\n\t\t\tif ($this->in_template)\n\t\t\t{\n\t\t\t\treturn $value;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t// http://wordpress.org/support/topic/call-function-called-by-embed-shortcode-direct\n\t\t\t\t// http://phpdoc.wordpress.org/trunk/WordPress/Embed/WP_Embed.html#run_shortcode\n\n\t\t\t\tglobal $wp_embed;\n\n\t\t\t\treturn do_shortcode($wp_embed->run_shortcode($value));\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\t// value can sometimes be an array\n\t\t\treturn $value;\n\t\t}\n\t}\n\n\t/**\n\t * @since\t1.0\n\t * @access\tpublic\n\t */\n\tfunction the_name($n = NULL)\n\t{\n\t\techo $this->get_the_name($n);\n\t}\n\n\t/**\n\t * @since\t1.0\n\t * @access\tpublic\n\t */\n\tfunction get_the_name($n = NULL)\n\t{\n\t\tif (!$this->in_template AND $this->mode == WPALCHEMY_MODE_EXTRACT)\n\t\t{\n\t\t\treturn $this->prefix . str_replace($this->prefix, '', is_null($n) ? $this->name : $n);\n\t\t}\n\n\t\tif ($this->is_in_loop())\n\t\t{\n\t\t\t$n = is_null($n) ? $this->name : $n ;\n\n\t\t\tif (!is_null($n))\n\t\t\t\t$the_field = $this->get_the_loop_group_name(true) . '[' . $n . ']' ;\n\t\t\telse\n\t\t\t\t$the_field = $this->get_the_loop_group_name(true);\n\t\t}\n\t\telse\n\t\t{\n\t\t\t$n = is_null($n) ? $this->name : $n ;\n\n\t\t\t$the_field = $this->id . '[' . $n . ']';\n\t\t}\n\n\t\t$hints = array\n\t\t(\n\t\t\tWPALCHEMY_FIELD_HINT_CHECKBOX_MULTI,\n\t\t\tWPALCHEMY_FIELD_HINT_SELECT_MULTI,\n\t\t\tWPALCHEMY_FIELD_HINT_SELECT_MULTIPLE,\n\t\t);\n\n\t\tif (in_array($this->hint, $hints))\n\t\t{\n\t\t\t$the_field .= '[]';\n\t\t}\n\n\t\treturn $the_field;\n\t}\n\n\t/**\n\t * @since\t1.1\n\t * @access\tpublic\n\t */\n\tfunction the_index()\n\t{\n\t\techo $this->get_the_index();\n\t}\n\n\t/**\n\t * @since\t1.1\n\t * @access\tpublic\n\t */\n\tfunction get_the_index()\n\t{\n\t\treturn $this->in_loop ? $this->get_the_current_group_current() : 0 ;\n\t}\n\n\t/**\n\t * @since\t1.0\n\t * @access\tpublic\n\t */\n\tfunction is_first()\n\t{\n\t\tif ($this->in_loop AND $this->current == 0) return TRUE;\n\n\t\treturn FALSE;\n\t}\n\n\t/**\n\t * @since\t1.0\n\t * @access\tpublic\n\t */\n\tfunction is_last()\n\t{\n\t\tif ($this->in_loop AND ($this->current+1) == $this->length) return TRUE;\n\n\t\treturn FALSE;\n\t}\n\n\t/**\n\t * Used to check if a value is a match\n\t *\n\t * @since\t1.1\n\t * @access\tpublic\n\t * @param\tstring $n the field name to check or the value to check for (if the_field() is used prior)\n\t * @param\tstring $v optional the value to check for\n\t * @return\tbool\n\t * @see\t\tis_value()\n\t */\n\tfunction is_value($n, $v = NULL)\n\t{\n\t\tif (is_null($v))\n\t\t{\n\t\t\t$the_value = $this->get_the_value();\n\n\t\t\t$v = $n;\n\t\t}\n\t\telse\n\t\t{\n\t\t\t$the_value = $this->get_the_value($n);\n\t\t}\n\n\t\tif($v == $the_value) return TRUE;\n\n\t\treturn FALSE;\n\t}\n\n\t/**\n\t * Used to check if a value is selected, useful when working with checkbox,\n\t * radio and select values.\n\t *\n\t * @since\t1.3\n\t * @access\tpublic\n\t * @param\tstring $n the field name to check or the value to check for (if the_field() is used prior)\n\t * @param\tstring $v optional the value to check for\n\t * @return\tbool\n\t * @see\t\tis_value()\n\t */\n\tfunction is_selected($n, $v = NULL)\n\t{\n\t\tif (is_null($v))\n\t\t{\n\t\t\t$the_value = $this->get_the_value(NULL);\n\n\t\t\t$v = $n;\n\t\t}\n\t\telse\n\t\t{\n\t\t\t$the_value = $this->get_the_value($n);\n\t\t}\n\n\t\tif (is_array($the_value))\n\t\t{\n\t\t\tif (in_array($v, $the_value)) return TRUE;\n\t\t}\n\t\telseif($v == $the_value)\n\t\t{\n\t\t\treturn TRUE;\n\t\t}\n\n\t\treturn FALSE;\n\t}\n\n\t/**\n\t * Prints the current state of a checkbox field and should be used inline\n\t * within the INPUT tag.\n\t *\n\t * @since\t1.3\n\t * @access\tpublic\n\t * @param\tstring $n the field name to check or the value to check for (if the_field() is used prior)\n\t * @param\tstring $v optional the value to check for\n\t * @see\t\tget_the_checkbox_state()\n\t */\n\tfunction the_checkbox_state($n, $v = NULL)\n\t{\n\t\techo $this->get_the_checkbox_state($n, $v);\n\t}\n\n\t/**\n\t * Returns the current state of a checkbox field, the returned string is\n\t * suitable to be used inline within the INPUT tag.\n\t *\n\t * @since\t1.3\n\t * @access\tpublic\n\t * @param\tstring $n the field name to check or the value to check for (if the_field() is used prior)\n\t * @param\tstring $v optional the value to check for\n\t * @return\tstring suitable to be used inline within the INPUT tag\n\t * @see\t\tthe_checkbox_state()\n\t */\n\tfunction get_the_checkbox_state($n, $v = NULL)\n\t{\n\t\tif ($this->is_selected($n, $v)) return ' checked=\"checked\"';\n\t}\n\n\t/**\n\t * Prints the current state of a radio field and should be used inline\n\t * within the INPUT tag.\n\t *\n\t * @since\t1.3\n\t * @access\tpublic\n\t * @param\tstring $n the field name to check or the value to check for (if the_field() is used prior)\n\t * @param\tstring $v optional the value to check for\n\t * @see\t\tget_the_radio_state()\n\t */\n\tfunction the_radio_state($n, $v = NULL)\n\t{\n\t\techo $this->get_the_checkbox_state($n, $v);\n\t}\n\n\t/**\n\t * Returns the current state of a radio field, the returned string is\n\t * suitable to be used inline within the INPUT tag.\n\t *\n\t * @since\t1.3\n\t * @access\tpublic\n\t * @param\tstring $n the field name to check or the value to check for (if the_field() is used prior)\n\t * @param\tstring $v optional the value to check for\n\t * @return\tstring suitable to be used inline within the INPUT tag\n\t * @see\t\tthe_radio_state()\n\t */\n\tfunction get_the_radio_state($n, $v = NULL)\n\t{\n\t\treturn $this->get_the_checkbox_state($n, $v);\n\t}\n\n\t/**\n\t * Prints the current state of a select field and should be used inline\n\t * within the SELECT tag.\n\t *\n\t * @since\t1.3\n\t * @access\tpublic\n\t * @param\tstring $n the field name to check or the value to check for (if the_field() is used prior)\n\t * @param\tstring $v optional the value to check for\n\t * @see\t\tget_the_select_state()\n\t */\n\tfunction the_select_state($n, $v = NULL)\n\t{\n\t\techo $this->get_the_select_state($n, $v);\n\t}\n\n\t/**\n\t * Returns the current state of a select field, the returned string is\n\t * suitable to be used inline within the SELECT tag.\n\t *\n\t * @since\t1.3\n\t * @access\tpublic\n\t * @param\tstring $n the field name to check or the value to check for (if the_field() is used prior)\n\t * @param\tstring $v optional the value to check for\n\t * @return\tstring suitable to be used inline within the SELECT tag\n\t * @see\t\tthe_select_state()\n\t */\n\tfunction get_the_select_state($n, $v = NULL)\n\t{\n\t\tif ($this->is_selected($n, $v)) return ' selected=\"selected\"';\n\t}\n\n\t/**\n\t * @since\t1.1\n\t * @access\tpublic\n\t */\n\tfunction the_group_open($t = 'div')\n\t{\n\t\techo $this->get_the_group_open($t);\n\t}\n\n\t/**\n\t * @since\t1.1\n\t * @access\tpublic\n\t */\n\tfunction get_the_group_open($t = 'div')\n\t{\n\t\t$this->group_tag = $t;\n\n\t\t$curr_loop = $this->get_the_current_loop();\n\t\t$the_name  = $curr_loop->name;\n\n\t\t$loop_open = NULL;\n\n\t\t$loop_open_classes = array('wpa_loop', 'wpa_loop-' . $the_name);\n\t\t\n\t\t$css_class = array('wpa_group', 'wpa_group-'. $the_name);\n\n\n\t\tif ($curr_loop->is_first())\n\t\t{\n\t\t\tarray_push($css_class, 'first');\n\n\t\t\t$loop_open = '<div class=\"wpa_loop\">';\n\n\t\t\tif (isset($this->_loop_data->limit))\n\t\t\t{\n\t\t\t\tarray_push($loop_open_classes, 'wpa_loop_limit-' . $this->_loop_data->limit);\n\t\t\t}\n\n\t\t\t$loop_open = '<div id=\"wpa_loop-'. $the_name .'\" class=\"' . implode(' ', $loop_open_classes) . '\">';\n\t\t}\n\n\t\tif ($curr_loop->is_last())\n\t\t{\n\t\t\tarray_push($css_class, 'last');\n\n\t\t\tif ($this->in_loop == 'multi')\n\t\t\t{\n\t\t\t\tarray_push($css_class, 'tocopy');\n\t\t\t}\n\t\t}\n\n\t\treturn $loop_open . '<' . $t . ' class=\"'. implode(' ', $css_class) . '\">';\n\t}\n\n\t/**\n\t * @since\t1.1\n\t * @access\tpublic\n\t */\n\tfunction the_group_close()\n\t{\n\t\techo $this->get_the_group_close();\n\t}\n\n\t/**\n\t * @since\t1.1\n\t * @access\tpublic\n\t */\n\tfunction get_the_group_close()\n\t{\n\t\t$loop_close = NULL;\n\n\t\t$curr_loop = $this->get_the_current_loop();\n\n\t\tif ($curr_loop->is_last())\n\t\t{\n\t\t\t$loop_close = '</div>';\n\t\t}\n\t\t\n\t\treturn '</' . $this->group_tag . '>' . $loop_close;\n\t}\n\n\t/**\n\t * @since\t1.1\n\t * @access\tpublic\n\t */\n\tfunction have_fields_and_multi($n, $options = NULL)\n\t{\n\t\tif (is_array($options))\n\t\t{\n\t\t\t// use as stdClass object\n\t\t\t$options = (object)$options;\n\t\t\t\n\t\t\t$length = @$options->length;\n\n\t\t\t$this->_loop_data->limit = @$options->limit;\n\t\t}\n\t\telse\n\t\t{\n\t\t\t// backward compatibility (bc)\n\t\t\t$length = $options;\n\t\t}\n\n\t\t$this->_meta(NULL, TRUE);\n\n\t\t$this->in_loop = 'multi';\n\n\t\t// push new loop or set loop to current name\n\t\t$this->push_or_set_current_loop($n, $length, $this->in_loop);\n\n\t\treturn $this->_loop($n, $length, 2);\n\t}\n\n\t/**\n\t * @deprecated\n\t * @since\t1.0\n\t * @access\tpublic\n\t */\n\tfunction have_fields_and_one($n)\n\t{\n\t\t$this->_meta(NULL, TRUE);\n\t\t$this->in_loop = 'single';\n\t\t$this->push_or_set_current_loop($n, $length, $this->in_loop);\n\t\treturn $this->_loop($n,NULL,1);\n\t}\n\n\t/**\n\t * @since\t1.0\n\t * @access\tpublic\n\t */\n\tfunction have_fields($n,$length=NULL)\n\t{\n\t\t$this->_meta(NULL, TRUE);\n\t\t// push new loop or set loop to current name\n\t\t$this->in_loop = 'normal';\n\t\t$this->push_or_set_current_loop($n, $length, $this->in_loop);\n\t\treturn $this->_loop($n,$length);\n\t}\n\n\t/**\n\t * @since\t1.0\n\t * @access\tprivate\n\t */\n\tfunction _loop($n,$length=NULL,$and_one=0)\n\t{\n\t\tif (!$this->in_loop)\n\t\t{\n\t\t\t$this->in_loop = TRUE;\n\t\t}\n\t\t\n\t\t$cnt = $this->get_the_current_group_count();\n\n\t\t$length = is_null($length) ? $cnt : $length ;\n\t\t\n\t\tif ($this->in_loop == 'multi' AND $cnt > $length) $length = $cnt;\n\n\t\t$this->length = $length;\n\n\t\tif ($this->in_template AND $and_one)\n\t\t{\n\t\t\tif ($length == 0)\n\t\t\t{\n\t\t\t\t$this->length = $and_one;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t$this->length = $length+1;\n\t\t\t}\n\t\t}\n\n\t\t$this->set_the_current_group_length($this->length);\n\t\t$this->increment_current_loop();\n\t\t$this->current++;\n\n\t\tif ($this->get_the_current_group_current() < $this->get_the_current_group_length())\n\t\t{\n\t\t\t$this->name      = NULL;\n\t\t\t$this->fieldtype = NULL;\n\n\t\t\treturn TRUE;\n\t\t}\n\t\telse if ($this->get_the_current_group_current() == $this->get_the_current_group_length())\n\t\t{\n\t\t\t$this->name      = NULL;\n\t\t\t$this->set_the_current_group_current(-1);\n\t\t\t$this->prev_loop();\n\t\t}\n\n\t\t$this->in_loop = FALSE;\n\n\t\t$this->_loop_data = new stdClass;\n\n\t\treturn FALSE;\n\t}\n\n\t/**\n\t * @since\t1.0\n\t * @access\tprivate\n\t */\n\tfunction _save($post_id) \n\t{\n\t\t/**\n\t\t * note: the \"save_post\" action fires for saving revisions and post/pages, \n\t\t * when saving a post this function fires twice, once for a revision save, \n\t\t * and again for the post/page save ... the $post_id is different for the\n\t\t * revision save, this means that \"get_post_meta()\" will not work if trying\n\t\t * to get values for a revision (as it has no post meta data)\n\t\t * see http://alexking.org/blog/2008/09/06/wordpress-26x-duplicate-custom-field-issue\n\t\t *\n\t\t * why let the code run twice? wordpress does not currently save post meta\n\t\t * data per revisions (I think it should, so users can do a complete revert),\n\t\t * so in the case that this functionality changes, let it run twice\n\t\t */\n\n\t\t$real_post_id = isset($_POST['post_ID']) ? $_POST['post_ID'] : NULL ;\n\t\t\n\t\t// check autosave\n\t\tif (defined('DOING_AUTOSAVE') AND DOING_AUTOSAVE AND !$this->autosave) return $post_id;\n\t \n\t\t// make sure data came from our meta box, verify nonce\n\t\t$nonce = isset($_POST[$this->id.'_nonce']) ? $_POST[$this->id.'_nonce'] : NULL ;\n\t\tif (!wp_verify_nonce($nonce, $this->id)) return $post_id;\n\t \n\t\t// check user permissions\n\t\tif ($_POST['post_type'] == 'page') \n\t\t{\n\t\t\tif (!current_user_can('edit_page', $post_id)) return $post_id;\n\t\t}\n\t\telse \n\t\t{\n\t\t\tif (!current_user_can('edit_post', $post_id)) return $post_id;\n\t\t}\n\t \n\t\t// authentication passed, save data\n\t \n\t\t$new_data = isset( $_POST[$this->id] ) ? $_POST[$this->id] : NULL ;\n\n\t\tWPAlchemy_MetaBox::clean($new_data);\n\n\t\tif (empty($new_data))\n\t\t{\n\t\t\t$new_data = NULL;\n\t\t}\n\n\t\t// filter: save\n\t\tif ($this->has_filter('save'))\n\t\t{\n\t\t\t$new_data = $this->apply_filters('save', $new_data, $real_post_id);\n\n\t\t\t/**\n\t\t\t * halt saving\n\t\t\t * @since 1.3.4\n\t\t\t */\n\t\t\tif (FALSE === $new_data) return $post_id;\n\n\t\t\tWPAlchemy_MetaBox::clean($new_data);\n\t\t}\n\n\t\t// get current fields, use $real_post_id (checked for in both modes)\n\t\t$current_fields = get_post_meta($real_post_id, $this->id . '_fields', TRUE);\n\n\t\tif ($this->mode == WPALCHEMY_MODE_EXTRACT)\n\t\t{\n\t\t\t$new_fields = array();\n\n\t\t\tif (is_array($new_data))\n\t\t\t{\n\t\t\t\tforeach ($new_data as $k => $v)\n\t\t\t\t{\n\t\t\t\t\t$field = $this->prefix . $k;\n\t\t\t\t\t\n\t\t\t\t\tarray_push($new_fields,$field);\n\n\t\t\t\t\t$new_value = $new_data[$k];\n\n\t\t\t\t\tif (is_null($new_value))\n\t\t\t\t\t{\n\t\t\t\t\t\tdelete_post_meta($post_id, $field);\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tupdate_post_meta($post_id, $field, $new_value);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t$diff_fields = array_diff((array)$current_fields,$new_fields);\n\n\t\t\tif (is_array($diff_fields))\n\t\t\t{\n\t\t\t\tforeach ($diff_fields as $field)\n\t\t\t\t{\n\t\t\t\t\tdelete_post_meta($post_id,$field);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tdelete_post_meta($post_id, $this->id . '_fields');\n\n\t\t\tif ( ! empty($new_fields))\n\t\t\t{\n\t\t\t\tadd_post_meta($post_id,$this->id . '_fields', $new_fields, TRUE);\n\t\t\t}\n\n\t\t\t// keep data tidy, delete values if previously using WPALCHEMY_MODE_ARRAY\n\t\t\tdelete_post_meta($post_id, $this->id);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tif (is_null($new_data))\n\t\t\t{\n\t\t\t\tdelete_post_meta($post_id, $this->id);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tupdate_post_meta($post_id, $this->id, $new_data);\n\t\t\t}\n\n\t\t\t// keep data tidy, delete values if previously using WPALCHEMY_MODE_EXTRACT\n\t\t\tif (is_array($current_fields))\n\t\t\t{\n\t\t\t\tforeach ($current_fields as $field)\n\t\t\t\t{\n\t\t\t\t\tdelete_post_meta($post_id, $field);\n\t\t\t\t}\n\n\t\t\t\tdelete_post_meta($post_id, $this->id . '_fields');\n\t\t\t}\n\t\t}\n\n\t\t// action: save\n\t\tif ($this->has_action('save'))\n\t\t{\n\t\t\t$this->do_action('save', $new_data, $real_post_id);\n\t\t}\n\n\t\treturn $post_id;\n\t}\n\n\t/**\n\t * Cleans an array, removing blank ('') values\n\t *\n\t * @static\n\t * @since\t1.0\n\t * @access\tpublic\n\t * @param\tarray the array to clean (passed by reference)\n\t */\n\tstatic function clean(&$arr)\n\t{\n\t\tif (is_array($arr))\n\t\t{\n\t\t\tforeach ($arr as $i => $v)\n\t\t\t{\n\t\t\t\tif (is_array($arr[$i])) \n\t\t\t\t{\n\t\t\t\t\tWPAlchemy_MetaBox::clean($arr[$i]);\n\t \n\t\t\t\t\tif (!count($arr[$i])) \n\t\t\t\t\t{\n\t\t\t\t\t\tunset($arr[$i]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse \n\t\t\t\t{\n\t\t\t\t\tif ('' == trim($arr[$i]) OR is_null($arr[$i])) \n\t\t\t\t\t{\n\t\t\t\t\t\tunset($arr[$i]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (!count($arr)) \n\t\t\t{\n\t\t\t\t$arr = array();\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t$keys = array_keys($arr);\n\n\t\t\t\t$is_numeric = TRUE;\n\n\t\t\t\tforeach ($keys as $key)\n\t\t\t\t{\n\t\t\t\t\tif (!is_numeric($key)) \n\t\t\t\t\t{\n\t\t\t\t\t\t$is_numeric = FALSE;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ($is_numeric)\n\t\t\t\t{\n\t\t\t\t\t$arr = array_values($arr);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Other than core modifications, here is the loop stack function and class to support\n\t * nested repeatable group.\n\t * author Vafpress\n\t */\n\n\tvar $_loop_stack = array();\n\n\tfunction push_loop($name, $length, $type)\n\t{\n\t\t$loop         = new WPA_Loop($name, $length, $type);\n\t\t$parent       = $this->get_the_current_loop();\n\t\tif($parent)\n\t\t\t$loop->parent = $parent->name;\n\t\telse\n\t\t\t$loop->parent = false;\n\t\t$this->_loop_stack[$name] = $loop;\n\t\treturn $loop;\n\t}\n\n\tfunction push_or_set_current_loop($name, $length, $type)\n\t{\n\t\tif( !array_key_exists( $name, $this->_loop_stack ) )\n\t\t{\n\t\t\t$this->push_loop($name, $length, $type);\n\t\t}\n\n\t\t$this->set_current_loop($name);\n\t}\n\n\tfunction set_current_loop($name)\n\t{\n\t\treset($this->_loop_stack);\n\t\tif(!array_key_exists($name, $this->_loop_stack)){\n\t\t\treturn;\n\t\t}\n\t\twhile(key($this->_loop_stack) !== $name)\n\t\t\tnext($this->_loop_stack);\n\t}\n\n\tfunction next_loop()\n\t{\n\t\treturn next($this->_loop_stack);\n\t}\n\n\tfunction prev_loop()\n\t{\n\t\t$parent = $this->get_the_current_loop()->parent;\n\t\tif($parent)\n\t\t{\n\t\t\t$this->set_current_loop($parent);\n\t\t}\n\t\telse\n\t\t{\n\t\t\t$this->_loop_stack = array();\n\t\t\treturn false;\n\t\t}\n\t}\n\n\tfunction get_the_current_group_length()\n\t{\n\t\treturn current($this->_loop_stack)->length;\n\t}\n\n\tfunction get_the_current_group_current()\n\t{\n\t\treturn current($this->_loop_stack)->current;\n\t}\n\n\tfunction set_the_current_group_length($length)\n\t{\n\t\tcurrent($this->_loop_stack)->length = $length;\n\t}\n\n\tfunction set_the_current_group_current($current)\n\t{\n\t\tcurrent($this->_loop_stack)->current = $current;\n\t}\n\n\tfunction get_the_loop_collection($name = null)\n\t{\n\t\t$collection   = array();\n\n\t\tif(is_null($name))\n\t\t{\n\t\t\t$curr = $this->get_the_current_loop();\n\t\t\tif($curr)\n\t\t\t{\n\t\t\t\t$name         = $curr->name;\n\t\t\t\t$loop_stack   = $this->_loop_stack;\n\t\t\t\t$loop         = $loop_stack[$name];\n\t\t\t\t$collection[] = $loop;\n\t\t\t\twhile ($loop)\n\t\t\t\t{\n\t\t\t\t\t$collection[] = $loop;\n\t\t\t\t\tif($loop->parent)\n\t\t\t\t\t\t$loop = $loop_stack[$loop->parent];\n\t\t\t\t\telse\n\t\t\t\t\t\t$loop = false;\n\t\t\t\t}\n\t\t\t\t$collection = array_reverse($collection);\n\t\t\t}\n\t\t}\n\n\t\treturn $collection;\n\t}\n\n\tfunction get_the_loop_group_name($with_id = false)\n\t{\n\t\t$loop_name  = $with_id ? $this->id : '';\n\t\t$curr       = $this->get_the_current_loop();\n\n\t\t// copy _loop_stack to prevent internal pointer ruined\n\t\t$loop_stack = $this->get_the_loop_collection();\n\t\t// print_r($loop_stack);\n\t\tforeach ($loop_stack as $loop)\n\t\t{\n\t\t\t$loop_name .= '[' . $loop->name . '][' . $loop->current . ']';\n\n\t\t\tif($loop->name === $curr->name)\n\t\t\t\tbreak;\n\t\t}\n\t\treturn $loop_name;\n\t}\n\n\tfunction get_the_loop_level()\n\t{\n\t\t$curr  = $this->get_the_current_loop();\n\t\t$depth = 0;\n\n\t\t// copy _loop_stack to prevent internal pointer ruined\n\t\t$loop_stack = $this->get_the_loop_collection();\n\t\tforeach ($loop_stack as $loop)\n\t\t{\n\t\t\tif($loop->name === $curr->name)\n\t\t\t\tbreak;\n\t\t\t$depth++;\n\t\t}\n\t\treturn $depth;\n\t}\n\n\tfunction get_the_loop_group_id()\n\t{\n\t\t$loop_name  = '';\n\t\t$curr       = $this->get_the_current_loop();\n\n\t\t// copy _loop_stack to prevent internal pointer ruined\n\t\t$loop_stack = $this->get_the_loop_collection();\n\t\tforeach ($loop_stack as $key => $loop)\n\t\t{\n\t\t\t$is_first = false;\n\t\t\t$is_last  = false;\n\n\t\t\treset($loop_stack);\n\t\t\tif ($key === key($loop_stack))\n\t\t\t\t$is_first = true;\n\t\t\tif ($loop->name === $curr->name)\n\t\t\t\t$is_last = true;\n\n\t\t\t$loop_name .= '[' . $loop->name . ']';\n\n\t\t\tif(!$is_last)\n\t\t\t\t$loop_name .= '[' . $loop->current . ']';\n\n\t\t\tif($loop->name === $curr->name)\n\t\t\t\tbreak;\n\t\t}\n\t\treturn $loop_name;\n\t}\n\n\tfunction get_the_loop_group_name_array($with_id = false)\n\t{\n\t\t$loop_name   = array();\n\t\t$curr        = $this->get_the_current_loop();\n\n\t\tif($with_id)\n\t\t{\t\n\t\t\t$loop_name[] = $this->id;\n\t\t}\n\n\t\t// copy _loop_stack to prevent internal pointer ruined\n\t\t$loop_stack = $this->get_the_loop_collection();\n\t\tforeach ($loop_stack as $loop)\n\t\t{\n\t\t\t$loop_name[] = $loop->name;\n\t\t\t$loop_name[] = $loop->current;\n\n\t\t\tif($loop->name === $curr->name)\n\t\t\t\tbreak;\n\t\t}\n\t\treturn $loop_name;\n\t}\n\n\tfunction get_the_dotted_loop_group_name($with_id = false)\n\t{\n\t\t$loop_name  = $with_id ? $this->id : '';\n\t\t$curr       = $this->get_the_current_loop();\n\n\t\t// copy _loop_stack to prevent internal pointer ruined\n\t\t$loop_stack = $this->get_the_loop_collection();\n\t\tforeach ($loop_stack as $loop)\n\t\t{\n\t\t\t$loop_name .= ($loop_name === '' ? '' : '.') . $loop->name . '.' . $loop->current;\n\n\t\t\tif($loop->name === $curr->name)\n\t\t\t\tbreak;\n\t\t}\n\t\treturn $loop_name;\n\t}\n\n\tfunction get_meta_by_dotted($dotted)\n\t{\n\t\t$keys = explode('.', $dotted);\n\t\t$meta = $this->meta;\n\t\tforeach ($keys as $key)\n\t\t{\n\t\t\tif(array_key_exists($key, $meta))\n\t\t\t{\n\t\t\t\t$meta = $meta[$key];\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\treturn null;\n\t\t\t}\n\t\t}\n\t\treturn $meta;\n\t}\n\n\tfunction get_meta_by_array($arr)\n\t{\n\t\t$meta = $this->meta;\n\n\t\tif(!is_array($arr) || !is_array($meta) || is_null($meta))\n\t\t\treturn null;\n\t\t\t\n\t\tforeach ($arr as $key)\n\t\t{\n\t\t\tif(is_array($meta) and array_key_exists($key, $meta))\n\t\t\t{\n\t\t\t\t$meta = $meta[$key];\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\treturn null;\n\t\t\t}\n\t\t}\n\t\treturn $meta;\n\t}\n\n\tfunction get_the_current_group_count()\n\t{\n\t\t$arr  = $this->get_the_loop_group_name_array();\n\t\tend($arr);\n\t\t$last = key($arr);\n\t\tunset($arr[$last]);\n\t\t$meta = $this->get_meta_by_array($arr);\n\t\treturn count($meta);\n\t}\n\n\tfunction increment_current_loop()\n\t{\n\t\tcurrent($this->_loop_stack)->current++;\n\t}\n\n\tfunction get_the_current_loop()\n\t{\n\t\treturn current($this->_loop_stack);\n\t}\n\n\tfunction is_in_multi_last()\n\t{\n\t\t// copy _loop_stack to prevent internal pointer ruined\n\t\t$loop_stack = $this->get_the_loop_collection();\n\t\tforeach ($loop_stack as $loop)\n\t\t{\n\t\t\tif($loop->type === 'multi' and $loop->is_last())\n\t\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\tfunction is_in_loop()\n\t{\n\t\tif(current($this->_loop_stack) === false)\n\t\t\treturn false;\n\t\treturn true;\n\t}\n\n\tfunction is_parent_multi()\n\t{\n\t\t// copy _loop_stack to prevent internal pointer ruined\n\t\t$loop_stack = $this->get_the_loop_collection();\n\t\tforeach ($loop_stack as $loop)\n\t\t{\n\t\t\tif($loop->type === 'multi')\n\t\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\tfunction the_copy_button_class()\n\t{\n\t\t$curr = $this->get_the_current_loop();\n\t\treturn 'docopy-' . $curr->get_the_indexed_name();\n\t}\n\n}\n\nclass WPA_Loop\n{\n\n\tpublic $length   = 0;\n\n\tpublic $parent   = NULL;\n\n\tpublic $current  = -1;\n\n\tpublic $name     = NULL;\n\n\tpublic $type     = false;\n\n\tfunction __construct($name, $length, $type)\n\t{\n\t\t$this->name   = $name;\n\t\t$this->length = $length;\n\t\t$this->type   = $type;\n\t}\n\n\tfunction the_indexed_name()\n\t{\n\t\techo $this->get_the_indexed_name();\n\t}\n\n\tfunction get_the_indexed_name()\n\t{\n\t\treturn $this->name . '[' . $this->current . ']';\n\t}\n\n\tfunction is_first()\n\t{\n\t\tif ( $this->current == 0 ) return TRUE;\n\n\t\treturn FALSE;\n\t}\n\n\tfunction is_last()\n\t{\n\t\tif ( ( $this->current + 1 ) == $this->length ) return TRUE;\n\n\t\treturn FALSE;\n\t}\n\n}\n\n/* eof */"
  },
  {
    "path": "lang/README.md",
    "content": "# Vafpress Framework I18n\n\nHelp us translating the framework:\n\nhttps://www.transifex.com/projects/p/vafpress-framework/\n\n## Contributors\n\nJoin those awesome contributors:\n\n#### Indonesian\n---\nVafour ([http://vafour.com](http://vafour.com))\n\n#### Japanese\n---\nAlexander Chen ([http://arkross.com](http://arkross.com))\n\n#### Turkish\n---\nM. Kaan Karakaya ([http://krky.org](http://krky.org))\n\n#### Dutch\n---\nPatrick Heiloo ([http://www.patrickheiloo.nl/](http://www.patrickheiloo.nl/))\n\n#### German\n---\nPredrag Gasic ([https://twitter.com/VisualSuccess](https://twitter.com/VisualSuccess))\n\n#### Polish\n---\nKrystian Podemski ([http://www.podemski.info/](http://www.podemski.info/))\n\n#### Spanish\n---\nIsidro Lopez Castillo ([http://www.zaytec.com](http://www.zaytec.com))\n\nSee you there!\n"
  },
  {
    "path": "lang/vafpress-framework.pot",
    "content": "# LANGUAGE (LOCALE) translation for Vafpress Framework.\n# Copyright (C) 2013 Vafpress.com\n# Translators:\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Vafpress Framework\\n\"\n\"POT-Creation-Date: 2013-11-20 12:40+0700\\n\"\n\"PO-Revision-Date: 2013-11-20 10:25+0000\\n\"\n\"Last-Translator: Vafpress <contact@vafour.com>\\n\"\n\"Language-Team: vafour <contact@vafour.com>\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Language: en_US\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\"X-Generator: Poedit 1.5.7\\n\"\n\"X-Poedit-Basepath: ../\\n\"\n\"X-Poedit-KeywordsList: _e;__\\n\"\n\"X-Poedit-SearchPath-0: .\\n\"\n\"X-Poedit-SourceCharset: UTF-8\\n\"\n\n#: bootstrap.php:83 classes/option.php:346 classes/option.php:371\nmsgid \"Successful\"\nmsgstr \"Successful\"\n\n#: bootstrap.php:94\nmsgid \"Unauthorized function\"\nmsgstr \"Unauthorized function\"\n\n#: classes/metabox.php:35\nmsgid \"[Development Mode] \"\nmsgstr \"[Development Mode] \"\n\n#: classes/metabox.php:564 classes/metabox/alchemy.php:493\nmsgid \"Remove\"\nmsgstr \"Remove\"\n\n#: classes/metabox.php:586 classes/metabox/alchemy.php:515\nmsgid \"Add More\"\nmsgstr \"Add More\"\n\n#: classes/option.php:47 classes/option.php:48\nmsgid \"Vafpress Options\"\nmsgstr \"Vafpress Options\"\n\n#: classes/option.php:54\nmsgid \"Option Key is required\"\nmsgstr \"Option Key is required\"\n\n#: classes/option.php:56\nmsgid \"Template Array/File is required\"\nmsgstr \"Template Array/File is required\"\n\n#: classes/option.php:58\nmsgid \"Page Slug is required\"\nmsgstr \"Page Slug is required\"\n\n#: classes/option.php:160\nmsgid \"\"\n\"Development Mode is Active, options' values won't be saved into database.\"\nmsgstr \"Development Mode is Active, options' values won't be saved into database.\"\n\n#: classes/option.php:288\nmsgid \"Can not be empty\"\nmsgstr \"Can not be empty\"\n\n#: classes/option.php:313\nmsgid \"Invalid data\"\nmsgstr \"Invalid data\"\n\n#: classes/option.php:376\nmsgid \"Unverified Access\"\nmsgstr \"Unverified Access\"\n\n#: classes/option.php:442\nmsgid \"Invalid template supplied\"\nmsgstr \"Invalid template supplied\"\n\n#: classes/option.php:455\nmsgid \"Utility\"\nmsgstr \"Utility\"\n\n#: classes/option.php:461 views/option/restore.php:13\nmsgid \"Restore Default\"\nmsgstr \"Restore Default\"\n\n#: classes/option.php:470\nmsgid \"Export/Import\"\nmsgstr \"Export/Import\"\n\n#: classes/shortcodegenerator.php:259\nmsgid \"Insert\"\nmsgstr \"Insert\"\n\n#: classes/shortcodegenerator.php:260\nmsgid \"Cancel\"\nmsgstr \"Cancel\"\n\n#: classes/option/control/set.php:359\nmsgid \"Saving successful\"\nmsgstr \"Saving successful\"\n\n#: classes/option/control/set.php:370\nmsgid \"Saving failed\"\nmsgstr \"Saving failed\"\n\n#: classes/option/control/set.php:376\nmsgid \"No changes made\"\nmsgstr \"No changes made\"\n\n#: config/messages.php:13\nmsgid \"Value needs to be Alphabet\"\nmsgstr \"Value needs to be Alphabet\"\n\n#: config/messages.php:14\nmsgid \"Value needs to be Alphanumeric\"\nmsgstr \"Value needs to be Alphanumeric\"\n\n#: config/messages.php:15\nmsgid \"Value needs to be Numeric\"\nmsgstr \"Value needs to be Numeric\"\n\n#: config/messages.php:16\nmsgid \"Value needs to be Valid Email\"\nmsgstr \"Value needs to be Valid Email\"\n\n#: config/messages.php:17\nmsgid \"Value needs to be Valid URL\"\nmsgstr \"Value needs to be Valid URL\"\n\n#: config/messages.php:18\nmsgid \"Length needs to be less than {0} characters\"\nmsgstr \"Length needs to be less than {0} characters\"\n\n#: config/messages.php:19\nmsgid \"Length needs to be more than {0} characters\"\nmsgstr \"Length needs to be more than {0} characters\"\n\n#: config/messages.php:20\nmsgid \"Select no more than {0} items\"\nmsgstr \"Select no more than {0} items\"\n\n#: config/messages.php:21\nmsgid \"Select at least {0} items\"\nmsgstr \"Select at least {0} items\"\n\n#: config/messages.php:22\nmsgid \"This is required\"\nmsgstr \"This is required\"\n\n#: config/messages.php:29\nmsgid \"Import succeed, option page will be refreshed..\"\nmsgstr \"Import succeed, option page will be refreshed..\"\n\n#: config/messages.php:30\nmsgid \"Import failed\"\nmsgstr \"Import failed\"\n\n#: config/messages.php:31\nmsgid \"Export succeed, copy the JSON formatted options\"\nmsgstr \"Export succeed, copy the JSON formatted options\"\n\n#: config/messages.php:32\nmsgid \"Export failed\"\nmsgstr \"Export failed\"\n\n#: config/messages.php:33\nmsgid \"Restoration succeed, option page will be refreshed..\"\nmsgstr \"Restoration succeed, option page will be refreshed..\"\n\n#: config/messages.php:34\nmsgid \"Options identical to default\"\nmsgstr \"Options identical to default\"\n\n#: config/messages.php:35\nmsgid \"Restoration failed\"\nmsgstr \"Restoration failed\"\n\n#: config/messages.php:43\nmsgid \"Select option(s)\"\nmsgstr \"Select option(s)\"\n\n#: config/messages.php:45\nmsgid \"Select an Icon\"\nmsgstr \"Select an Icon\"\n\n#: views/control/upload.php:5\nmsgid \"Choose File\"\nmsgstr \"Choose File\"\n\n#: views/option/impexp.php:4 views/option/impexp.php:14\nmsgid \"Import\"\nmsgstr \"Import\"\n\n#: views/option/impexp.php:7\nmsgid \"Import Options\"\nmsgstr \"Import Options\"\n\n#: views/option/impexp.php:27 views/option/impexp.php:37\nmsgid \"Export\"\nmsgstr \"Export\"\n\n#: views/option/impexp.php:30\nmsgid \"Export Options\"\nmsgstr \"Export Options\"\n\n#: views/option/restore.php:4\nmsgid \"Restore Default Options\"\nmsgstr \"Restore Default Options\"\n\n#: views/option/restore.php:7\nmsgid \"Restore options to initial default values.\"\nmsgstr \"Restore options to initial default values.\"\n\n#: views/option/restore.php:14\nmsgid \"\"\n\"** Please make sure you have already make a backup data of your current \"\n\"settings. Once you click this button, your current settings will be gone.\"\nmsgstr \"** Please make sure you have already make a backup data of your current settings. Once you click this button, your current settings will be gone.\"\n\n#: views/option/set.php:69 views/option/set.php:84\nmsgid \"Save Changes\"\nmsgstr \"Save Changes\"\n\n#: views/option/set.php:70 views/option/set.php:85\nmsgid \"Saving Now\"\nmsgstr \"Saving Now\"\n\n#: views/option/set.php:93\n#, php-format\nmsgid \"\"\n\"This option panel is built using <a href=\\\"http://vafpress.com/vafpress-\"\n\"framework\\\">Vafpress Framework %s</a> powered by <a \"\n\"href=\\\"http://vafpress.com\\\">Vafpress</a>\"\nmsgstr \"This option panel is built using <a href=\\\"http://vafpress.com/vafpress-framework\\\">Vafpress Framework %s</a> powered by <a href=\\\"http://vafpress.com\\\">Vafpress</a>\"\n"
  },
  {
    "path": "public/css/metabox.css",
    "content": ".vp-metabox *,.vp-metabox *:before,.vp-metabox *:after {\n\t-webkit-box-sizing: border-box;\n\t-moz-box-sizing: border-box;\n\t-ms-box-sizing: border-box;\n\tbox-sizing: border-box;\n}\n.vp-metabox .vp-hide {\n\tposition: absolute !important;\n\tborder: 0;\n\tclip: rect(0 0 0 0);\n\theight: 0;\n\tmargin: -1px;\n\toverflow: hidden;\n\tpadding: 0;\n\twidth: 0 !important;\n}\n.vp-metabox img {\n\tmax-width: 100%;\n\tvertical-align: bottom;\n}\n.vp-metabox .vp-button {\n\theight: 30px;\n\tline-height: 28px;\n\tmargin: 0;\n\tpadding: 0 12px;\n}\n.vp-metabox-error {\n\tbackground-image: url('../img/vp-sprite.png');\n\tbackground-repeat: no-repeat;\n\tbackground-position: 0px -240px;\n\tmargin-right: 5px;\n\tmargin-left: 5px;\n\t*display: inline;\n\t*zoom: 1;\n\tdisplay: inline-block;\n\theight: 14px;\n\twidth: 14px;\n\tvertical-align: middle;\n\tfloat: left;\n}\n.vp-metabox .vp-field {\n\tdisplay: table;\n\ttable-layout: fixed;\n\twidth: 100%;\n}\n.vp-metabox .vp-field .label {\n\tdisplay: table-cell;\n\tpadding: 10px 20px;\n\tvertical-align: top;\n\twidth: 20%;\n}\n#postbox-container-1 .vp-metabox .vp-field,#postbox-container-1 .vp-metabox .vp-field .label,#postbox-container-1 .vp-metabox .vp-field .field {\n\tdisplay: block;\n\twidth: auto;\n}\n#postbox-container-1 .vp-metabox .vp-field {\n\tmargin: 15px 0;\n}\n#postbox-container-1 .vp-metabox .vp-field .label {\n\tmargin-bottom: 3px;\n}\n#postbox-container-1 .vp-metabox .vp-field .label,#postbox-container-1 .vp-metabox .vp-field .field {\n\tpadding: 0 10px;\n}\n#postbox-container-1 .vp-metabox .vp-field .label label {\n\tmargin: 0;\n}\n#postbox-container-1 .vp-metabox .vp-wpa-loop {\n\tpadding: 10px 0;\n}\n.vp-metabox .vp-field .label label {\n\tcursor: default;\n\tfont-size: 1em;\n\tfont-weight: bold;\n\tline-height: 1.4em;\n\tmargin: 6px 0 4px;\n\tdisplay: block;\n}\n.vp-metabox .vp-field .label .description {\n\tfont-size: 0.9em;\n\tcolor: #999999;\n\tline-height: 1.3em;\n}\n.vp-metabox .vp-field .label .description p {\n\tmargin: 0;\n}\n.vp-metabox .vp-field .field {\n\tdisplay: table-cell;\n\tpadding: 10px 20px;\n\twidth: 80%;\n\tposition: relative;\n}\n.vp-metabox .vp-field .field .validation-msgs ul {\n\tmargin: 0px;\n}\n.vp-metabox .vp-field .field .input img {\n\tborder-width: 1px;\n\tborder-style: solid;\n\tborder-color: #dddddd;\n\tborder-radius: 3px;\n\tpadding: 3px;\n}\n.vp-metabox .vp-field .field .input {\n\tposition: relative;\n}\n.vp-metabox .vp-field.vp-error {\n\tbackground-color: #fbf1f1;\n}\n.vp-metabox .vp-field .validation-msgs {\n\tcolor: #cc0000;\n\tfont-weight: bold;\n}\n.vp-metabox .vp-field .validation-msgs li {\n\tmargin: 5px 0 0;\n}\n.vp-metabox .vp-wpa-loop {\n\tborder-radius: 3px;\n\tpadding: 10px; /*margin-top:  10px;\n\t*/\n}\n.vp-metabox .vp-wpa-loop h4 {\n\tcolor: #999999;\n\tmargin: 10px 0px 10px;\n\tpadding: 0px 10px;\n\ttext-transform: uppercase;\n}\n.vp-metabox .vp-wpa-loop .vp-wpa-group {\n\tbackground: #ffffff;\n\tborder: 1px solid #e5e5e5;\n\tborder-radius: 3px;\n\tmargin-bottom: 10px;\n\tposition: relative;\n\toverflow: hidden;\n}\n.vp-metabox .vp-wpa-loop .vp-wpa-group .vp-controls {\n\tpadding-top: 10px;\n\tdisplay: inline-block;\n\twidth: 100%;\n\tposition: relative;\n}\n.vp-metabox .vp-wpa-loop .vp-wpa-group .vp-controls .vp-field .label {\n\tpadding: 12px 10px;\n}\n.vp-metabox .vp-wpa-loop .vp-wpa-group .vp-controls .vp-field .field {\n\tpadding: 10px 10px 10px 20px;\n}\n.vp-metabox .vp-wpa-loop .vp-wpa-group .vp-wpa-group-heading .vp-wpa-group-title {\n\tdisplay: block;\n}\n.vp-metabox .vp-wpa-loop .vp-wpa-group .vp-wpa-group-heading {\n\tbackground-color: #f9f9f9;\n\tborder-bottom: 1px solid #e5e5e5;\n\tfont-size: 0.9em;\n\tfont-weight: bold;\n\tline-height: 30px;\n\tpadding: 0 10px;\n\ttext-transform: uppercase;\n\tmargin-bottom: -1px;\n}\n.vp-metabox .vp-wpa-loop.vp-repeating-loop .vp-wpa-group .vp-wpa-group-heading {\n\tpadding-right: 80px;\n}\n.vp-metabox .vp-wpa-loop .vp-wpa-group .vp-wpa-group-heading a {\n\ttext-decoration: none;\n}\n.vp-metabox .vp-wpa-loop .vp-wpa-group .vp-wpa-group-remove {\n\tposition: absolute;\n\ttop: 0;\n\tright: 0;\n\tmargin: 0 10px;\n}\n.vp-metabox .vp-wpa-loop .vp-wpa-group .vp-wpa-group-remove a:hover {\n\tcolor: #990000;\n}\n.vp-metabox .vp-wpa-loop .vp-wpa-group-add {\n\tmargin-bottom: 8px;\n}\n.vp-metabox .vp-wpa-loop .vp-wpa-group-add > a {\n\tdisplay: block;\n\ttext-align: center;\n}\n.vp-metabox .vp-textbox .field input[type=\"text\"],.vp-metabox .vp-slider .field input[type=\"text\"],.vp-metabox .vp-upload .field input[type=\"text\"],.vp-metabox .vp-date .field input[type=\"text\"],.vp-metabox .vp-textarea .field textarea,.vp-metabox .vp-color .field input[type=\"text\"] {\n\tborder-color: #cccccc;\n\tpadding: 6px 10px;\n\tmargin: 0;\n\tborder-radius: 3px;\n}\n.vp-metabox .vp-textbox .field input[type=\"text\"],.vp-metabox .vp-upload .field input[type=\"text\"],.vp-metabox .vp-textarea .field textarea {\n\twidth: 100%;\n}\n/* CHECKBOX & RADIOBUTTON & TOGGLE */\n.vp-metabox .vp-checkbox .input label,.vp-metabox .vp-radiobutton .input label {\n\tmargin-right: 20px;\n}\n.vp-metabox .vp-checkbox .input label input,.vp-metabox .vp-radiobutton .input label input {\n\tmargin-right: 3px;\n}\n.vp-metabox .vp-toggle .field .input label,.vp-metabox .vp-checkbox .field .input label,.vp-metabox .vp-radiobutton .field .input label {\n\t*display: inline;\n\t*zoom: 1;\n\tdisplay: inline-block;\n\tmargin-top: 6px;\n\tline-height: 1.4em;\n}\n/* UPLOAD */\n.vp-metabox .vp-upload .input {\n\tpadding-right: 130px;\n}\n.vp-metabox .vp-upload .buttons {\n\tposition: absolute;\n\ttop: 0px;\n\tright: 0px;\n}\n.vp-metabox .vp-upload .image {\n\tmax-width: 300px;\n}\n.vp-metabox .vp-upload .field .image {\n\tline-height: 0em;\n}\n.vp-metabox .vp-upload .field .image img {\n\tmargin-top: 10px;\n}\n.vp-metabox .vp-upload .field .image img[src=\"\"] {\n\tdisplay: none;\n}\n/* CHECKIMAGE & RADIOIMAGE */\n.vp-metabox .vp-checkimage .input label,.vp-metabox .vp-radioimage .input label {\n\t*display: inline;\n\t*zoom: 1;\n\tdisplay: inline-block;\n\tmargin: 5px;\n\tvertical-align: top;\n}\n.vp-metabox .vp-checkimage label input,.vp-metabox .vp-radioimage label input {\n\tdisplay: none;\n}\n/* elt ie8 style */\n.vp-metabox .vp-checkimage .field input:checked ~ img,.vp-metabox .vp-radioimage .field input:checked ~ img,.vp-metabox .vp-checkimage .field input.checked ~ img,.vp-metabox .vp-radioimage .field input.checked ~ img {\n\tborder-color: #278ab7;\n\tbackground-color: #278ab7;\n}\n/* COLOR */\n.vp-metabox .vp-color .field input[type=\"text\"] {\n\tpadding-left: 30px;\n}\n.vp-metabox .vp-color .field label {\n\tbackground-image: url('../img/vp-sprite.png');\n\tbackground-position: 0 -140px;\n\tdisplay: block;\n\theight: 20px;\n\tleft: 0px;\n\tmargin: 5px;\n\tposition: absolute;\n\ttop: 0px;\n\twidth: 20px;\n}\n.vp-metabox .vp-color .field label span {\n\tdisplay: block;\n\theight: 100%;\n\twidth: 100%;\n}\n/* SLIDER */\n.vp-metabox .vp-slider .input {\n\tpadding: 10px 80px 10px 0;\n}\n.vp-metabox .vp-slider .input .slidebar {\n\twidth: 100%;\n}\n.vp-metabox .vp-slider .input .slideinput {\n\tposition: absolute;\n\ttop: 0px;\n\tright: 0px;\n\twidth: 60px;\n\tmargin-top: -5px;\n}\n/* SELECT & FONTAWESOME */\n.vp-metabox .vp-select .field .input a,.vp-metabox .vp-fontawesome .field .input a {\n\theight: 30px;\n\tborder-radius: 3px;\n\tborder: 1px solid #cccccc;\n}\n.vp-metabox .vp-select .field .input a div,.vp-metabox .vp-fontawesome .field .inpu a div {\n\tborder-left-color: #cccccc;\n}\n.vp-metabox .vp-select .field .input .select2-dropdown-open a,.vp-metabox .vp-fontawesome .field .input .select2-dropdown-open a {\n\t-webkit-box-shadow: 0 4px 5px rgba(0,0,0,0.15);\n\tbox-shadow: 0 4px 5px rgba(0,0,0,0.15);\n}\n.vp-metabox .vp-select .field .input .select2-dropdown-open.select2-drop-above a,.vp-metabox .vp-fontawesome .field .input .select2-dropdown-open.select2-drop-above a {\n\t-webkit-box-shadow: 0 -4px 5px rgba(0,0,0,0.15);\n\tbox-shadow: 0 -4px 5px rgba(0,0,0,0.15);\n}\n/* SORTER & MULTISELECT */\n.vp-metabox .vp-multiselect .search-field input,.vp-metabox .vp-sorter .search-field input {\n\theight: auto;\n}\n.vp-metabox .vp-sorter .field .input li {\n\tdisplay: block;\n\tfloat: none;\n\tmargin: 3px 5px;\n\theight: 22px;\n}\n.vp-metabox .vp-sorter .field .input ul,.vp-metabox .vp-multiselect .field .input ul {\n\tborder-radius: 3px;\n\tborder: 1px solid #cccccc;\n}\n.vp-metabox .vp-multiselect .field .input .select2-dropdown-open ul,.vp-metabox .vp-sorter .field .input .select2-dropdown-open ul {\n\t-webkit-box-shadow: 0 4px 5px rgba(0,0,0,0.15);\n\tbox-shadow: 0 4px 5px rgba(0,0,0,0.15);\n}\n.vp-metabox .vp-multiselect .field .input .select2-dropdown-open.select2-drop-above ul,.vp-metabox .vp-sorter .field .input .select2-dropdown-open.select2-drop-above ul {\n\t-webkit-box-shadow: 0 -4px 5px rgba(0,0,0,0.15);\n\tbox-shadow: 0 -4px 5px rgba(0,0,0,0.15);\n}\n/* TEXTAREA */\n.vp-metabox .vp-textarea textarea {\n\twidth: 100%;\n\t-webkit-resize: vertical;\n\t-moz-resize: vertical;\n\tresize: vertical;\n\tmin-height: 100px;\n\tmax-height: 200px;\n}\n/* WP TinyMCE Editor */\n.vp-metabox .vp-wpeditor .label,.vp-metabox .vp-wpeditor .field {\n\tdisplay: block;\n\tpadding: 0px 10px !important;\n\twidth: 100%;\n}\n.vp-metabox .customEditor {\n\tmargin: 15px 0px;\n}\n.vp-metabox .customEditor textarea {\n\twidth: 100%;\n\tmargin: 0;\n\t-webkit-border-top-right-radius: 0;\n\t-webkit-border-top-left-radius: 0;\n\tborder-top-left-radius: 0;\n\tborder-top-right-radius: 0;\n}\n.vp-metabox .custom_upload_buttons a {\n\ttext-decoration: none;\n}\n.vp-metabox .wp_themeSkin table.mceLayout {\n\tbackground: white;\n\tborder-width: 1px;\n\tborder-style: solid;\n\t-webkit-border-top-right-radius: 3px;\n\t-webkit-border-top-left-radius: 3px;\n\tborder-top-right-radius: 3px;\n\tborder-top-left-radius: 3px;\n\tborder-color: #CCC #CCC #DFDFDF;\n}\n.vp-metabox .mceLayout span {\n\tdisplay: inline;\n}\n.vp-metabox .customEditor * {\n\t-webkit-box-sizing: content-box;\n\t-moz-box-sizing: content-box;\n\t-ms-box-sizing: content-box;\n\tbox-sizing: content-box;\n}\n.vp-metabox .vp-wpeditor .field .customEditor .mceIcon img {\n\tborder-width: 0;\n\tpadding: 0;\n}\n/* HTML PREVIEW */\n.vp-metabox .vp-html .field .input {\n\toverflow: auto;\n}\n.vp-metabox .vp-html .field .vp-field-loader {\n\tposition: absolute;\n\twidth: 100%;\n\theight: 100%;\n\tbackground-color: #f9f9f9;\n\ttext-align: center;\n\ttop: 0;\n}\n.vp-metabox .vp-wpa-loop .vp-html .field .vp-field-loader {\n\tbackground-color: #ffffff;\n}\n.vp-metabox .vp-html .field .vp-field-loader img {\n\tposition: absolute;\n\ttop: 50%;\n\tleft: 50%;\n\tmargin: -5px 0 0 -8px;\n}\n/**\n * Notebox styling\n * (normal, warning, info, error, success)\n */\n.vp-metabox .vp-field.vp-notebox {\n\tborder-width: 1px;\n\tborder-style: solid;\n\tborder-radius: 3px;\n\tdisplay: block;\n\tpadding: 10px 20px 10px 55px;\n\tposition: relative;\n\tmargin: 10px 0;\n\tmin-height: 50px;\n\twidth: auto;\n}\n.vp-metabox .vp-field.vp-notebox > i {\n\tdisplay: block;\n\tfont-size: 30px;\n\tline-height: 1em;\n\tleft: 0;\n\tmargin: 9px;\n\t-ms-filter: \"progid:DXImageTransform.Microsoft.Alpha(Opacity=30)\";\n\tfilter: alpha(opacity=30);\n\topacity: 0.3;\n\tposition: absolute;\n\ttext-align: center;\n\ttop: 0;\n\twidth: 30px;\n}\n.vp-metabox .vp-field.vp-notebox > .label {\n\tdisplay: block;\n\twidth: auto;\n\tpadding: 0 !important;\n\tfont-weight: bold;\n}\n.vp-metabox .vp-field.vp-notebox > .description {\n\tpadding: 0;\n\tcolor: inherit;\n}\n.vp-metabox .vp-field.vp-notebox > .description p {\n\tmargin: 0;\n}\n.vp-metabox .vp-field.vp-notebox.note-normal {\n\tbackground-color: #eeeeee;\n\tborder-color: #cccccc;\n\tcolor: #666666;\n}\n.vp-metabox .vp-field.vp-notebox.note-info {\n\tbackground-color: #d1e4f3;\n\tborder-color: #a8b6c1;\n\tcolor: #5881a1;\n}\n.vp-metabox .vp-field.vp-notebox.note-success {\n\tbackground-color: #c4ec94;\n\tborder-color: #70ad60;\n\tcolor: #4d751c;\n}\n.vp-metabox .vp-field.vp-notebox.note-warning {\n\tbackground-color: #fee9a6;\n\tborder-color: #d9c183;\n\tcolor: #978138;\n}\n.vp-metabox .vp-field.vp-notebox.note-error {\n\tbackground-color: #ffa2a3;\n\tborder-color: #bc515b;\n\tcolor: #9c1825;\n}\n.vp-metabox .vp-wpa-group .vp-field.vp-notebox {\n\tmargin: 10px 10px;\n}\n/**\n * Code Editor styling\n */\n.ace_editor {\n\tborder-width: 1px;\n\tborder-style: solid;\n\tborder-color: #dddddd;\n\tborder-radius: 3px;\n\theight: 200px;\n}\n\n/* Extension\n * ==================================================== */\n\n/* jQuery UI Datepicker bottom div bug */\n#ui-datepicker-div {\n\tdisplay: none;\n}\n/* jQuery UI widget overlay glitch */\n.ui-widget-overlay {\n\tbackground-repeat: repeat;\n}\n/* Bootstrap Colorpicker */\n.dropdown-menu {\n\tposition: absolute;\n\ttop: 100%;\n\tleft: 0;\n\tz-index: 1000;\n\tdisplay: none;\n\tfloat: left;\n\tmin-width: 160px;\n\tmargin: 2px 0 0;\n\tlist-style: none;\n\tbackground-color: #ffffff;\n\tborder: 1px solid #cccccc;\n\tborder: 1px solid rgba(0,0,0,0.2);\n\t*border-right-width: 2px;\n\t*border-bottom-width: 2px;\n\tborder-radius: 3px;\n\t-webkit-box-shadow: 0 5px 10px rgba(0,0,0,0.2);\n\tbox-shadow: 0 5px 10px rgba(0,0,0,0.2);\n\t-webkit-background-clip: padding-box;\n\t-moz-background-clip: padding-box;\n\tbackground-clip: padding-box;\n}\n/* fontawesome chooser + select2 width */\n.select2-container .fontawesome,.select2-result-label .fontawesome {\n\tfont-size: 12px;\n\tvertical-align: middle;\n}\n.select2-container .fontawesome i,.select2-result-label .fontawesome i {\n\tfont-size: 14px;\n\tmargin-right: 8px;\n}\n.select2-container {\n\twidth: 100%;\n}\n.select2-drop {\n\tborder-color: #cccccc;\n\tpadding-top: 10px;\n\tmargin-top: -2px;\n}\n.select2-drop.select2-drop-above {\n\tmargin-top: 4px;\n\tpadding-top: 0;\n\tpadding-bottom: 10px;\n\tborder-top-color: #cccccc;\n}\n.select2-drop input {\n\tborder-color: #cccccc;\n}\n.select2-results .select2-highlighted {\n\tbackground: #278ab7;\n}"
  },
  {
    "path": "public/css/option.css",
    "content": "/* General\n * ==================================================== */\n.vp-wrap .vp-option-panel a:hover,.vp-wrap .vp-option-panel a:active,.vp-wrap .vp-option-panel a:focus {\n\toutline: 0;\n}\n.vp-wrap .vp-option-panel *,.vp-wrap .vp-option-panel *:before,.vp-wrap .vp-option-panel *:after {\n\t-webkit-box-sizing: border-box;\n\t-moz-box-sizing: border-box;\n\t-ms-box-sizing: border-box;\n\tbox-sizing: border-box;\n}\n.vp-wrap .vp-hide {\n\tposition: absolute !important;\n\tborder: 0;\n\tclip: rect(0 0 0 0);\n\theight: 0;\n\tmargin: -1px;\n\toverflow: hidden;\n\tpadding: 0;\n\twidth: 0 !important;\n}\n/* Main Layout\n * ==================================================== */\n.vp-wrap {\n\tposition: relative;\n}\n.vp-wrap .vp-option-panel {\n\tbackground-color: #ffffff;\n\t-webkit-box-shadow: 0 1px 3px rgba(0,0,0,0.05);\n\tbox-shadow: 0 1px 3px rgba(0,0,0,0.05);\n\tborder-radius: 3px;\n\tborder: 1px solid #dddddd;\n\tcolor: #666666;\n\tdisplay: table;\n\theight: auto;\n\tmargin-top: 15px;\n\tmin-height: 100%;\n\tmin-width: 680px;\n\tposition: relative;\n\twidth: 100%;\n}\n.vp-wrap .vp-option-panel.fixed-layout {\n\twidth: 900px;\n}\n.vp-wrap .vp-option-panel.fluid-layout {\n\twidth: 100%;\n}\n.vp-wrap .vp-option-panel .vp-current {\n\tposition: static !important;\n}\n.vp-wrap .vp-option-panel .stop {\n\tdisplay: none;\n}\n.vp-wrap .vp-option-panel .validation-notif.vp-error {\n\tbackground-image: url('../img/vp-sprite.png');\n\tbackground-repeat: no-repeat;\n\tbackground-position: 0 -240px;\n\tdisplay: block;\n\theight: 14px;\n\twidth: 14px;\n}\n.vp-wrap .vp-option-panel .vp-button {\n\theight: 30px;\n\tline-height: 28px;\n\tmargin: 0;\n\tpadding: 0 12px;\n}\n.vp-option-panel input,.vp-option-panel select,.vp-wrap .vp-option-panel textarea {\n\tcolor: #666666;\n}\n.vp-wrap .vp-option-panel img {\n\tmax-width: 100%;\n\tvertical-align: bottom;\n}\n.vp-wrap .vp-left-panel {\n\tbackground-color: #f9f9f9;\n\tborder-radius: 3px 0 0 3px;\n\tborder-right: 1px solid #dddddd;\n\tdisplay: table-cell;\n\tposition: relative;\n\tvertical-align: top;\n\twidth: 220px;\n}\n.vp-wrap .vp-logo {\n\ttext-align: center;\n\tmin-height: 30px;\n\tpadding: 40px 20px 20px 20px;\n}\n.vp-wrap .vp-right-panel {\n\tborder-radius: 0 4px 4px 0;\n\tpadding: 51px 0;\n\tposition: relative;\n}\n/* Menus\n * ==================================================== */\n.vp-wrap .vp-menus {\n\tmargin-bottom: 50px;\n\tmargin-right: -1px;\n}\n.vp-wrap .vp-menus ul {\n\tmargin: 0;\n\tfont-weight: bold;\n}\n.vp-wrap .vp-menus ul.vp-menu-level-1 {\n\tposition: relative;\n\tborder-top: 1px solid #dddddd;\n}\n.vp-wrap .vp-menus ul.vp-menu-level-1 > li {\n\tmargin: 0;\n\tposition: relative;\n}\n.vp-wrap .vp-menus ul.vp-menu-level-1 > li > a {\n\tborder-bottom: 1px solid #dddddd;\n}\n.vp-wrap .vp-menus ul.vp-menu-level-1 > li > a i {\n\twidth: 30px;\n}\n.vp-wrap .vp-menus ul.vp-menu-level-1 > li > a.vp-menu-dropdown:after {\n\tcontent: ' ';\n\tdisplay: block;\n\theight: 0;\n\twidth: 0;\n\tborder-bottom: none;\n\tborder-top: 6px solid #999999;\n\tborder-left: 5px solid transparent;\n\tborder-right: 5px solid transparent;\n\tposition: absolute;\n\tmargin: -3px 10px 0 0;\n\ttop: 50%;\n\tright: 0;\n}\n.vp-wrap .vp-menus ul.vp-menu-level-1 > li.vp-current > a.vp-menu-dropdown:after {\n\tcontent: ' ';\n\tdisplay: block;\n\theight: 0;\n\twidth: 0;\n\tborder-top: none;\n\tborder-bottom: 6px solid #999999;\n\tborder-left: 5px solid transparent;\n\tborder-right: 5px solid transparent;\n\tposition: absolute;\n\tmargin: -3px 10px 0 0;\n\ttop: 50%;\n\tright: 0;\n}\n.vp-wrap .vp-menus li.vp-current > a.vp-menu-goto {\n\tbackground-color: #ffffff;\n\tborder-right: 1px solid #ffffff;\n}\n.vp-wrap .vp-menus ul.vp-menu-level-2 {\n\tbackground-color: #f3f3f3;\n\tborder-bottom: 1px solid #dddddd;\n\tmargin: 0;\n\tdisplay: none;\n}\n.vp-wrap .vp-menus ul.vp-menu-level-1 > li.vp-current a.vp-menu-dropdown ~ ul.vp-menu-level-2 {\n\tdisplay: block;\n}\n.vp-wrap .vp-menus ul.vp-menu-level-2 > li {\n\tmargin: 0;\n\tposition: relative;\n}\n.vp-wrap .vp-menus ul.vp-menu-level-2 li a {\n\tposition: relative;\n}\n.vp-wrap .vp-menus ul.vp-menu-level-2 > li a i {\n\tpadding-left: 25px;\n\twidth: 40px;\n}\n.vp-wrap .vp-menus a {\n\tcolor: #666666;\n\tdisplay: table;\n\tfont-size: 12px;\n\tline-height: 20px;\n\tposition: relative;\n\ttext-decoration: none;\n\twidth: 100%;\n}\n.vp-wrap .vp-menus li:hover {\n\tbackground-color: rgba(255,255,255,0.2);\n}\n.vp-wrap .vp-menus a i {\n\tdisplay: table-cell;\n\tfont-size: 14px;\n\tpadding: 12px 0 12px 15px;\n}\n.vp-wrap .vp-menus a i.custom-menu-icon {\n\theight: 16px;\n\tbackground-repeat: no-repeat;\n\tbackground-position: top left;\n}\n.vp-wrap .vp-menus ul a i + span {\n\tpadding-left: 10px !important;\n}\n.vp-wrap .vp-menus a span {\n\tdisplay: table-cell;\n\tpadding: 12px 50px 12px 40px;\n}\n.vp-wrap .vp-menus ul.vp-menu-level-2 a span {\n\tpadding-left: 65px;\n}\n.vp-wrap .vp-menus a .validation-notif.vp-error {\n\tposition: absolute;\n\tmargin: -7px 30px 0 0;\n\ttop: 50%;\n\tright: 0;\n}\n/* Submit\n * ==================================================== */\n.vp-wrap .vp-submit {\n\tposition: absolute;\n\twidth: 100%;\n}\n.vp-wrap .vp-submit.top {\n\tborder-bottom: 1px solid #dddddd;\n\ttop: 0;\n}\n.vp-wrap .vp-submit.bottom {\n\tborder-top: 1px solid #dddddd;\n\tbottom: 0;\n}\n.vp-wrap .vp-submit .inner {\n\toverflow: hidden;\n\tpadding: 10px;\n}\n.vp-wrap .vp-submit .vp-button {\n\tcolor: #ffffff;\n\tfloat: right;\n}\n.vp-wrap .vp-submit p {\n\tborder-radius: 3px;\n\tcolor: #666666;\n\tfont-size: 13px;\n\tfont-weight: bold;\n\tline-height: 20px;\n\tmargin: 0 30px 0 0;\n\toverflow: hidden;\n}\n.vp-wrap .vp-submit .save-loader {\n\tpadding: 5px 20px 5px 20px;\n}\n.vp-wrap .vp-submit .save-loader img {\n\tmargin-right: 12px;\n\tvertical-align: middle;\n}\n.vp-wrap .vp-submit .save-status {\n\tbackground-image: url('../img/vp-sprite.png');\n\tbackground-repeat: no-repeat;\n\tbackground-position: 9999px 9999px;\n\tpadding: 5px 20px 5px 45px;\n\tmin-height: 20px;\n}\n.vp-wrap .vp-submit .save-status.success {\n\tbackground-position: 0 -180px;\n}\n.vp-wrap .vp-submit .save-status.failed {\n\tbackground-position: 0 -210px;\n}\n/* Panel\n * ==================================================== */\n.vp-wrap .vp-panel {\n\tpadding: 20px;\n\tposition: absolute !important;\n\ttop: -9999px !important;\n\tleft: -9999px !important;\n\tmax-width: 100%;\n\tmax-height: 100%;\n}\n.vp-wrap .vp-panel > h2 {\n\tbackground-color: #f9f9f9;\n\tmargin: 10px 0 30px;\n\tpadding: 0;\n\theight: 10px;\n}\n.vp-wrap .vp-panel > h2 span {\n\tbackground-color: #ffffff;\n\tline-height: 1em;\n\tpadding: 0 15px;\n\tposition: relative;\n\ttop: -10px;\n}\n.vp-wrap .vp-section {\n\tbackground-color: #ffffff;\n\tmargin-top: -1px;\n\tpadding: 30px 0 20px;\n\tposition: relative;\n\twidth: 100%;\n}\n.vp-wrap .vp-section > h3 {\n\tbackground-color: #ffffff;\n\tcolor: #278ab7;\n\tfont-size: 12px;\n\tline-height: 1em;\n\tpadding: 4px 10px;\n\tmargin: 20px 0 0 20px;\n\tposition: absolute;\n\ttop: 0;\n\ttext-transform: uppercase;\n\tz-index: 1;\n}\n.vp-wrap .vp-section > .description {\n\tdisplay: block;\n\theight: 20px;\n\twidth: 40px;\n\tbackground-image: url('../img/vp-sprite.png');\n\tbackground-repeat: no-repeat;\n\tbackground-position: 0 -120px;\n\tcursor: pointer;\n\tposition: absolute;\n\tright: 0;\n\tmargin: -10px 20px 0 0;\n\tbackground-color: #ffffff;\n\tpadding: 0 10px;\n\tz-index: 1;\n}\n.vp-wrap .vp-section > .description:hover {\n\tbackground-position: -40px -120px;\n}\n.vp-wrap .vp-section .vp-controls {\n\tborder-radius: 3px;\n\tborder: 1px solid #eeeeee;\n\tpadding-top: 10px;\n\tposition: relative;\n\twidth: 100%;\n}\n.vp-wrap .vp-field {\n\tbackground-color: transparent;\n\tborder-bottom: 1px solid #eeeeee;\n\tdisplay: table;\n\ttable-layout: fixed;\n\twidth: 100%;\n}\n.vp-wrap .vp-error {\n\tbackground-color: #fbf1f1;\n}\n.vp-wrap .vp-field .label {\n\tdisplay: table-cell;\n\tfont-size: 12px;\n\tline-height: 20px;\n\twidth: 30%;\n\tpadding: 15px 0 15px 20px;\n\tvertical-align: top;\n}\n.vp-wrap .vp-field .label label {\n\tcursor: default;\n\tdisplay: block;\n\tfont-weight: bold;\n\tpadding-top: 5px;\n}\n.vp-wrap .vp-field .label .description {\n\tfont-size: 10px;\n\tline-height: 1.4em;\n\tcolor: #999999;\n\tmargin-top: 2px;\n}\n.vp-wrap .vp-field .label .description p {\n\tmargin: 0;\n}\n.vp-wrap .vp-field .field {\n\tdisplay: table-cell;\n\tfont-weight: normal;\n\tpadding: 15px 20px;\n\tposition: relative;\n\twidth: 70%;\n}\n.vp-wrap .vp-field .field .input {\n\tposition: relative;\n}\n.vp-wrap .vp-checkimage .field .input img,.vp-wrap .vp-radioimage .field .input img,.vp-wrap .vp-upload .field .input img {\n\tborder-width: 1px;\n\tborder-style: solid;\n\tborder-color: #dddddd;\n\tborder-radius: 3px;\n\tpadding: 3px;\n}\n.vp-wrap .vp-field .field .validation-msgs {\n\tcolor: #cc0000;\n\tclear: both;\n\tfont-weight: bold;\n}\n.vp-wrap .vp-field .field .validation-msgs ul {\n\tmargin: 0;\n}\n.vp-wrap .vp-field .field .validation-msgs ul li:first-child {\n\tmargin-top: 10px;\n}\n.vp-wrap .vp-field .field input[type=\"checkbox\"],.vp-wrap .vp-field .field input[type=\"radio\"] {\n\tdisplay: none;\n}\n.vp-wrap .vp-textbox .field input[type=\"text\"],.vp-wrap .vp-slider .field input[type=\"text\"],.vp-wrap .vp-upload .field input[type=\"text\"],.vp-wrap .vp-date .field input[type=\"text\"],.vp-wrap .vp-textarea .field textarea,.vp-wrap .vp-color .field input[type=\"text\"] {\n\tmargin: 0;\n\tpadding: 6px 10px;\n\tborder-radius: 3px;\n\tborder: 1px solid #cccccc;\n\tbackground-color: #ffffff;\n\t-webkit-box-shadow: inset 0 2px 4px rgba(0,0,0,0.05);\n\tbox-shadow: inset 0 2px 4px rgba(0,0,0,0.05);\n}\n.vp-wrap .vp-textbox .field input[type=\"text\"],.vp-wrap .vp-upload .field input[type=\"text\"],.vp-wrap .vp-textarea .field textarea {\n\twidth: 100%;\n}\n/* CHECKBUTTON & RADIOBUTTON */\n.vp-wrap .vp-checkbox .field label,.vp-wrap .vp-radiobutton .field label {\n\t*display: inline;\n\t*zoom: 1;\n\tdisplay: inline-block;\n\tmargin-right: 30px;\n\tline-height: 30px;\n}\n.vp-wrap .vp-checkbox .field span,.vp-wrap .vp-radiobutton .field span {\n\tbackground-image: url('../img/vp-sprite.png');\n\tbackground-repeat: no-repeat;\n\tdisplay: inline-block;\n\tmargin-right: 6px;\n\tposition: relative;\n\twidth: 20px;\n\theight: 20px;\n\tvertical-align: middle;\n}\n.vp-wrap .vp-checkbox .field span {\n\tbackground-position: 0 0;\n}\n.vp-wrap .vp-radiobutton .field span {\n\tbackground-position: 0 -20px;\n}\n.vp-wrap .vp-checkbox .field input:checked ~ span {\n\tbackground-position: -20px 0;\n}\n.vp-wrap .vp-radiobutton .field input:checked ~ span {\n\tbackground-position: -20px -20px;\n}\n/* elt ie8 style */\n.vp-wrap .vp-checkbox .field input.checked ~ span {\n\tbackground-position: -20px 0;\n}\n.vp-wrap .vp-radiobutton .field input.checked ~ span {\n\tbackground-position: -20px -20px;\n}\n/* CHECKIMAGE & RADIOIMAGE */\n.vp-wrap .vp-checkimage .field label,.vp-wrap .vp-radioimage .field label {\n\t*display: inline;\n\t*zoom: 1;\n\tdisplay: inline-block;\n\tmargin: 5px;\n\tvertical-align: top;\n}\n.vp-wrap .vp-checkimage .field img,.vp-wrap .vp-radioimage .field img {\n\tmin-height: 16px;\n\tmin-width: 16px;\n\tmax-width: 200px;\n\tmax-height: 200px;\n\twidth: auto;\n\theight: auto;\n}\n/* elt ie8 style */\n.vp-wrap .vp-checkimage .field input:checked ~ img,.vp-wrap .vp-radioimage .field input:checked ~ img,.vp-wrap .vp-checkimage .field input.checked ~ img,.vp-wrap .vp-radioimage .field input.checked ~ img {\n\tborder-color: #278ab7;\n\tbackground-color: #278ab7;\n}\n/* TOGGLE */\n.vp-wrap .vp-toggle .field label {\n\t*display: inline;\n\t*zoom: 1;\n\tdisplay: inline-block;\n}\n.vp-wrap .vp-toggle .field span {\n\tdisplay: block;\n\tbackground-image: url('../img/vp-sprite.png');\n\tbackground-position: 0 -40px;\n\twidth: 60px;\n\theight: 30px;\n\tmargin-top: -2px;\n}\n.vp-wrap .vp-toggle .field input:checked ~ span {\n\tbackground-position: -60px -40px;\n}\n/* elt ie8 style */\n.vp-wrap .vp-toggle .field input.checked ~ span {\n\tbackground-position: -60px -40px;\n}\n/* SLIDER */\n.vp-wrap .vp-slider .field .input {\n\tpadding: 10px 80px 10px 10px;\n}\n.vp-wrap .vp-slider .field .slidebar {\n\tbackground-color: transparent;\n\tbackground-image: url('../img/vp-sprite.png');\n\tbackground-repeat: repeat-x;\n\tbackground-position: 0 -80px;\n\tborder-radius: 4px;\n\tborder: none;\n\theight: 8px;\n\tposition: relative;\n}\n.vp-wrap .vp-slider .field .slidebar a {\n\tbackground-color: transparent;\n\tbackground-image: url('../img/vp-sprite.png');\n\tbackground-repeat: no-repeat;\n\tbackground-position: 0 -100px;\n\tcursor: pointer;\n\tborder: none;\n\tdisplay: block;\n\theight: 20px;\n\twidth: 20px;\n\tposition: absolute;\n\tmargin-left: -10px;\n\ttop: -6px;\n\tz-index: 0;\n}\n.vp-wrap .vp-slider .field .slidebar .ui-slider-range {\n\tbackground-image: url('../img/vp-sprite.png');\n\tbackground-repeat: repeat-x;\n\tbackground-position: 0 -90px;\n\theight: 8px;\n\tborder-radius: 4px;\n\tposition: absolute;\n\tz-index: 0;\n}\n.vp-wrap .vp-slider .field .slideinput {\n\tmargin-top: -10px;\n\tposition: absolute;\n\tright: 0;\n\twidth: 60px;\n\ttop: 0;\n}\n/* UPLOAD */\n.vp-wrap .vp-upload .field .input {\n\tpadding-right: 130px;\n}\n.vp-wrap .vp-upload .field input[type=\"text\"] {\n\twidth: 100%;\n}\n.vp-wrap .vp-upload .field .buttons {\n\tposition: absolute;\n\ttop: 0;\n\tright: 0;\n}\n.vp-wrap .vp-upload .field .image {\n\tline-height: 0em;\n}\n.vp-wrap .vp-upload .field .image img {\n\tmargin-top: 10px;\n}\n.vp-wrap .vp-upload .field .image img[src=\"\"] {\n\tdisplay: none;\n}\n/* SORTER & MULTISELECT */\n.vp-wrap .vp-sorter .field .input li.ui-state-highlight,.vp-wrap .vp-sorter .field .input li.select2-search-choice {\n\tdisplay: block;\n\tfloat: none;\n\tmargin: 3px 5px;\n\theight: 21px;\n}\n.vp-wrap .vp-sorter .field .input ul,.vp-wrap .vp-multiselect .field .input ul {\n\tbackground-image: none;\n\tborder-radius: 3px;\n\tborder: 1px solid #cccccc;\n\tbackground-color: #ffffff;\n\t-webkit-box-shadow: inset 0 2px 4px rgba(0,0,0,0.05);\n\tbox-shadow: inset 0 2px 4px rgba(0,0,0,0.05);\n}\n.vp-wrap .vp-multiselect .field .input .select2-dropdown-open ul,.vp-wrap .vp-sorter .field .input .select2-dropdown-open ul {\n\t-webkit-box-shadow: 0 4px 5px rgba(0,0,0,0.15);\n\tbox-shadow: 0 4px 5px rgba(0,0,0,0.15);\n}\n.vp-wrap .vp-multiselect .field .input .select2-dropdown-open.select2-drop-above ul,.vp-wrap .vp-sorter .field .input .select2-dropdown-open.select2-drop-above ul {\n\t-webkit-box-shadow: 0 -4px 5px rgba(0,0,0,0.15);\n\tbox-shadow: 0 -4px 5px rgba(0,0,0,0.15);\n}\n/* SELECT & FONTAWESOME */\n.vp-wrap .vp-select .field .input a,.vp-wrap .vp-fontawesome .field .input a {\n\theight: 30px;\n\tbackground-image: none;\n\tborder-radius: 3px;\n\tborder: 1px solid #cccccc;\n\tbackground-color: #ffffff;\n\t-webkit-box-shadow: inset 0 -2px 4px rgba(0,0,0,0.05);\n\tbox-shadow: inset 0 -2px 4px rgba(0,0,0,0.05);\n}\n.vp-wrap .vp-select .field .input a span,.vp-wrap .vp-fontawesome .field .input a span {\n\tline-height: 28px;\n}\n.vp-wrap .vp-select .field .input .select2-dropdown-open a,.vp-wrap .vp-fontawesome .field .input .select2-dropdown-open a {\n\t-webkit-box-shadow: 0 4px 5px rgba(0,0,0,0.15);\n\tbox-shadow: 0 4px 5px rgba(0,0,0,0.15);\n}\n.vp-wrap .vp-select .field .input .select2-dropdown-open.select2-drop-above a,.vp-wrap .vp-fontawesome .field .input .select2-dropdown-open.select2-drop-above a {\n\t-webkit-box-shadow: 0 -4px 5px rgba(0,0,0,0.15);\n\tbox-shadow: 0 -4px 5px rgba(0,0,0,0.15);\n}\n.vp-wrap .vp-select .field .input a div,.vp-wrap .vp-fontawesome .field .input a div {\n\tborder: none;\n\tbackground-color: transparent;\n\tbackground-image: none;\n}\n/* TEXTAREA */\n.vp-wrap .vp-textarea .field textarea {\n\tmax-height: 200px;\n\t-webkit-resize: vertical;\n\t-moz-resize: vertical;\n\tresize: vertical;\n\twidth: 100%;\n\theight: 100px;\n}\n/* WP TinyMCE Editor */\n.vp-wrap .vp-wpeditor .label {\n\tdisplay: block;\n\tpadding: 15px 0 0 20px;\n\twidth: 100%;\n}\n.vp-wrap .vp-wpeditor .field {\n\tdisplay: block;\n\tpadding-top: 0;\n\twidth: 100%;\n}\n.vp-wrap .customEditor {\n\tmargin: 15px 0px;\n}\n.vp-wrap .customEditor textarea {\n\twidth: 100%;\n\tmargin: 0;\n\t-webkit-border-top-right-radius: 0;\n\t-webkit-border-top-left-radius: 0;\n\tborder-top-left-radius: 0;\n\tborder-top-right-radius: 0;\n}\n.vp-wrap .custom_upload_buttons a {\n\ttext-decoration: none;\n}\n.vp-wrap .wp_themeSkin table.mceLayout {\n\tbackground: white;\n\tborder-width: 1px;\n\tborder-style: solid;\n\t-webkit-border-top-right-radius: 3px;\n\t-webkit-border-top-left-radius: 3px;\n\tborder-top-right-radius: 3px;\n\tborder-top-left-radius: 3px;\n\tborder-color: #CCC #CCC #DFDFDF;\n}\n.vp-wrap .customEditor * {\n\t-webkit-box-sizing: content-box !important;\n\t-moz-box-sizing: content-box !important;\n\t-ms-box-sizing: content-box !important;\n\tbox-sizing: content-box !important;\n}\n.vp-wrap .vp-wpeditor .field .customEditor .mceIcon img {\n\tborder-width: 0;\n\tpadding: 0;\n}\n/* COLOR */\n.vp-wrap .vp-color .field label {\n\tbackground-image: url('../img/vp-sprite.png');\n\tbackground-position: 0 -140px;\n\tdisplay: block;\n\theight: 20px;\n\tleft: 0px;\n\tmargin: 5px;\n\tposition: absolute;\n\ttop: 0px;\n\twidth: 20px;\n}\n.vp-wrap .vp-color .field label span {\n\tdisplay: block;\n\theight: 100%;\n\twidth: 100%;\n\tbackground-image: -webkit-linear-gradient(180deg, rgba(255,255,255,0.2) 0%,rgba(0,0,0,0.05) 100%);\n\tbackground-image: -moz-linear-gradient(180deg, rgba(255,255,255,0.2) 0%,rgba(0,0,0,0.05) 100%);\n\tbackground-image: -o-linear-gradient(180deg, rgba(255,255,255,0.2) 0%,rgba(0,0,0,0.05) 100%);\n\tbackground-image: -ms-linear-gradient(180deg, rgba(255,255,255,0.2) 0%,rgba(0,0,0,0.05) 100%);\n\tbackground-image: linear-gradient(180deg, rgba(255,255,255,0.2) 0%,rgba(0,0,0,0.05) 100%);\n\tfilter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#4dffffff', endColorstr='#00ffffff',GradientType=0 );\n}\n.vp-wrap .vp-color .field input[type=\"text\"] {\n\twidth: 200px;\n\tpadding: 6px 12px 6px 35px;\n}\n/* DATE */\n.vp-wrap .vp-date .field input[type=\"text\"] {\n\twidth: 140px;\n}\n/* HTML PREVIEW */\n.vp-wrap .vp-html .field .input {\n\toverflow: auto;\n}\n.vp-wrap .vp-html .field .vp-field-loader {\n\tposition: absolute;\n\twidth: 100%;\n\theight: 100%;\n\tbackground-color: #ffffff;\n\ttext-align: center;\n\ttop: 0;\n}\n.vp-wrap .vp-html .field .vp-field-loader img {\n\tposition: absolute;\n\ttop: 50%;\n\tleft: 50%;\n\tmargin: -5px 0 0 -8px;\n}\n/* Copyright\n * ==================================================== */\n.vp-wrap .vp-copyright {\n\tcolor: #888888;\n\tfont-size: 11px;\n\tline-height: 1.4em;\n}\n.vp-wrap .vp-copyright a {\n\tcolor: #278ab7;\n\ttext-decoration: none;\n}\n/* Notebox\n * ==================================================== */\n.vp-wrap .vp-notebox {\n\tborder-width: 1px;\n\tborder-style: solid;\n\tborder-radius: 3px;\n\tdisplay: block;\n\tpadding: 10px 20px 10px 55px;\n\tposition: relative;\n\tmargin: 10px 0;\n\tmin-height: 50px;\n\twidth: auto;\n}\n.vp-wrap .vp-notebox > i {\n\tdisplay: block;\n\tfont-size: 30px;\n\tline-height: 1em;\n\tleft: 0;\n\tmargin: 9px;\n\t-ms-filter: \"progid:DXImageTransform.Microsoft.Alpha(Opacity=30)\";\n\tfilter: alpha(opacity=30);\n\topacity: 0.3;\n\tposition: absolute;\n\ttext-align: center;\n\ttop: 0;\n\twidth: 30px;\n}\n.vp-wrap .vp-notebox > .label {\n\tdisplay: block;\n\twidth: auto;\n\tpadding: 0;\n\tfont-weight: bold;\n}\n.vp-wrap .vp-notebox > .description {\n\tpadding: 0;\n\tcolor: inherit;\n}\n.vp-wrap .vp-notebox > .description p {\n\tmargin: 0;\n}\n.vp-wrap .vp-notebox.note-normal {\n\tbackground-color: #eeeeee;\n\tborder-color: #cccccc;\n\tcolor: #666666;\n}\n.vp-wrap .vp-notebox.note-info {\n\tbackground-color: #d1e4f3;\n\tborder-color: #a8b6c1;\n\tcolor: #5881a1;\n}\n.vp-wrap .vp-notebox.note-success {\n\tbackground-color: #c4ec94;\n\tborder-color: #70ad60;\n\tcolor: #4d751c;\n}\n.vp-wrap .vp-notebox.note-warning {\n\tbackground-color: #fee9a6;\n\tborder-color: #d9c183;\n\tcolor: #978138;\n}\n.vp-wrap .vp-notebox.note-error {\n\tbackground-color: #ffa2a3;\n\tborder-color: #bc515b;\n\tcolor: #9c1825;\n}\n.vp-wrap .vp-section .vp-notebox {\n\tmargin: 10px 20px;\n}\n\n/* Extension\n * ==================================================== */\n \n/* Code Editor styling */\n.ace_editor {\n\tborder-width: 1px;\n\tborder-style: solid;\n\tborder-color: #dddddd;\n\tborder-radius: 3px;\n\theight: 200px;\n}\n/* Bootstrap Colorpicker */\n.dropdown-menu {\n\tposition: absolute;\n\ttop: 100%;\n\tleft: 0;\n\tz-index: 1000;\n\tdisplay: none;\n\tfloat: left;\n\tmin-width: 160px;\n\tmargin: 2px 0 0;\n\tlist-style: none;\n\tbackground-color: #ffffff;\n\tborder: 1px solid #cccccc;\n\t*border-right-width: 2px;\n\t*border-bottom-width: 2px;\n\tborder-radius: 3px;\n\t-webkit-box-shadow: 0 5px 10px rgba(0,0,0,0.2);\n\tbox-shadow: 0 5px 10px rgba(0,0,0,0.2);\n\t-webkit-background-clip: padding-box;\n\t-moz-background-clip: padding-box;\n\tbackground-clip: padding-box;\n}\n/* jQuery UI Datepicker bottom div bug */\n#ui-datepicker-div {\n\tdisplay: none;\n\tz-index: 4 !important;\n}\n/* jQuery UI widget overlay glitch */\n.ui-widget-overlay {\n\tbackground-repeat: repeat;\n}\n/* fontawesome chooser + select2 width */\n.vp-wrap .select2-container .fontawesome,.vp-wrap .select2-result-label .fontawesome {\n\tfont-size: 12px;\n\tvertical-align: middle;\n}\n.vp-wrap .select2-container .fontawesome i,.vp-wrap .select2-result-label .fontawesome i {\n\tfont-size: 14px;\n\tmargin-right: 8px;\n}\n.vp-wrap .select2-container {\n\twidth: 100%;\n}\n.vp-wrap .select2-drop {\n\tborder-color: #cccccc;\n\tpadding-top: 10px;\n\tmargin-top: -2px;\n}\n.vp-wrap .select2-drop.select2-drop-above {\n\tmargin-top: 4px;\n\tpadding-top: 0;\n\tpadding-bottom: 10px;\n\tborder-top-color: #cccccc;\n}\n.vp-wrap .select2-drop input {\n\tborder-color: #cccccc;\n}\n.vp-wrap .select2-results .select2-highlighted {\n\tbackground: #278ab7;\n}"
  },
  {
    "path": "public/css/shortcode.css",
    "content": ".vp-sc-wrapper {\n\tdisplay: table;\n\twidth: 100%;\n\tpadding-top: 10px;\n\ttable-layout: fixed;\n\theight: 100%;\n}\n.vp-sc-wrapper .vp-hide {\n\tposition: absolute !important;\n\tborder: 0;\n\tclip: rect(0 0 0 0);\n\theight: 0;\n\tmargin: -1px;\n\toverflow: hidden;\n\tpadding: 0;\n\twidth: 0 !important;\n}\n.vp-sc-wrapper a {\n\toutline: 0;\n}\n.vp-sc-wrapper *,.vp-sc-wrapper *:before,.vp-sc-wrapper *:after {\n\t-webkit-box-sizing: border-box;\n\t-moz-box-sizing: border-box;\n\t-ms-box-sizing: border-box;\n\tbox-sizing: border-box;\n}\n.vp-sc-wrapper a {\n\ttext-decoration: none;\n}\n.vp-sc-wrapper .vp-button {\n\theight: 30px;\n\tline-height: 28px;\n\tmargin: 0;\n\tpadding: 0 12px;\n}\n.vp-sc-wrapper .vp-sc-menu {\n\tdisplay: table-cell;\n\tvertical-align: top;\n\twidth: 150px;\n\tborder-right: 1px solid #dfdfdf;\n}\n.vp-sc-wrapper .vp-sc-menu li {\n\tmargin: 0;\n}\n.vp-sc-wrapper .vp-sc-menu a {\n\tfont-weight: bold;\n\tdisplay: block;\n\tborder-color: transparent;\n\tborder-width: 1px;\n\tborder-style: solid;\n\tborder-radius: 3px 0 0 3px;\n\tmargin-right: -1px;\n\tpadding: 7px 10px;\n}\n.vp-sc-wrapper .vp-sc-menu .current a {\n\tborder-color: #dfdfdf;\n\tborder-right-color: #ffffff;\n}\n.vp-sc-wrapper .vp-sc-main {\n\tdisplay: table-cell;\n\tpadding-left: 20px;\n\tpadding-right: 10px;\n\tvertical-align: top;\n\twidth: 100%;\n}\n.vp-sc-wrapper .vp-sc-main .vp-sc-sub-menu-list {\n\tmargin: 0;\n}\n.vp-sc-wrapper .vp-sc-main .vp-sc-element {\n\tmargin-bottom: 10px;\n}\n.vp-sc-wrapper .vp-sc-main .vp-sc-element-heading {\n\tcursor: default;\n\tmargin: 0;\n}\n.vp-sc-wrapper .vp-sc-main .vp-sc-element-heading a {\n\tcolor: inherit;\n\tfont-weight: bold;\n\tdisplay: block;\n\tpadding: 8px 10px;\n\tfont-size: 12px;\n}\n.vp-sc-wrapper .vp-sc-main .vp-sc-element-heading a i {\n\tfloat: right;\n\topacity: 0.2;\n}\n.vp-sc-wrapper .vp-sc-fields {\n\tborder-bottom: 1px solid #dfdfdf;\n\tpadding-bottom: 15px;\n}\n.vp-sc-wrapper .vp-sc-action {\n\tborder-top: 1px solid #fff;\n\tpadding-top: 15px;\n\ttext-align: right;\n}\n.vp-sc-wrapper .vp-sc-field {\n\tdisplay: table;\n\twidth: 100%;\n\ttable-layout: fixed;\n\tborder-collapse: collapse;\n}\n.vp-sc-wrapper .vp-sc-field .label {\n\tdisplay: table-cell;\n\tpadding: 5px 20px 5px 0;\n\twidth: 25%;\n\tvertical-align: top;\n}\n.vp-sc-wrapper .vp-sc-field .label label {\n\tdisplay: block;\n\tmargin: 6px 0 4px;\n}\n.vp-sc-wrapper .vp-sc-field .field {\n\tdisplay: table-cell;\n\tpadding: 5px 0;\n\twidth: 75%;\n\tvertical-align: top;\n\tposition: relative;\n}\n.vp-sc-wrapper .vp-sc-field .field .input {\n\tposition: relative;\n}\n.vp-sc-wrapper .vp-sc-field .field .input img {\n\tborder-width: 1px;\n\tborder-style: solid;\n\tborder-color: #dddddd;\n\tborder-radius: 3px;\n\tpadding: 3px;\n}\n.vp-sc-wrapper .vp-textbox .field input[type=\"text\"],.vp-sc-wrapper .vp-slider .field input[type=\"text\"],.vp-sc-wrapper .vp-upload .field input[type=\"text\"],.vp-sc-wrapper .vp-date .field input[type=\"text\"],.vp-sc-wrapper .vp-textarea .field textarea,.vp-sc-wrapper .vp-color .field input[type=\"text\"] {\n\tborder-color: #cccccc;\n\tpadding: 6px 10px;\n\tmargin: 0;\n\tborder-radius: 3px;\n}\n.vp-sc-wrapper .vp-textbox .field input[type=\"text\"],.vp-sc-wrapper .vp-upload .field input[type=\"text\"],.vp-sc-wrapper .vp-textarea .field textarea {\n\twidth: 100%;\n}\n.vp-sc-wrapper .vp-upload .image {\n\tmax-width: 300px;\n}\n.vp-sc-wrapper img {\n\tmax-width: 100%;\n}\n/* CHECKBOX & RADIOBUTTON & TOGGLE */\n.vp-sc-wrapper .vp-checkbox .input label,.vp-sc-wrapper .vp-radiobutton .input label {\n\tmargin-right: 20px;\n}\n.vp-sc-wrapper .vp-checkbox .input label input,.vp-sc-wrapper .vp-radiobutton .input label input {\n\tmargin-right: 3px;\n}\n.vp-sc-wrapper .vp-toggle .field .input label,.vp-sc-wrapper .vp-checkbox .field .input label,.vp-sc-wrapper .vp-radiobutton .field .input label {\n\t*display: inline;\n\t*zoom: 1;\n\tdisplay: inline-block;\n\tmargin-top: 6px;\n\tline-height: 1.4em;\n}\n/* UPLOAD */\n.vp-sc-wrapper .vp-upload .input {\n\tpadding-right: 130px;\n}\n.vp-sc-wrapper .vp-upload .buttons {\n\tposition: absolute;\n\ttop: 0px;\n\tright: 0px;\n}\n.vp-sc-wrapper .vp-upload .image {\n\tmax-width: 300px;\n}\n.vp-sc-wrapper .vp-upload .field .image {\n\tline-height: 0em;\n}\n.vp-sc-wrapper .vp-upload .field .image img {\n\tmargin-top: 10px;\n}\n.vp-sc-wrapper .vp-upload .field .image img[src=\"\"] {\n\tdisplay: none;\n}\n/* CHECKIMAGE & RADIOIMAGE */\n.vp-sc-wrapper .vp-checkimage .input label,.vp-sc-wrapper .vp-radioimage .input label {\n\t*display: inline;\n\t*zoom: 1;\n\tdisplay: inline-block;\n\tmargin: 5px;\n\tvertical-align: top;\n}\n.vp-sc-wrapper .vp-checkimage label input,.vp-sc-wrapper .vp-radioimage label input {\n\tdisplay: none;\n}\n/* elt ie8 style */\n.vp-sc-wrapper .vp-checkimage .field input:checked ~ img,.vp-sc-wrapper .vp-radioimage .field input:checked ~ img,.vp-sc-wrapper .vp-checkimage .field input.checked ~ img,.vp-sc-wrapper .vp-radioimage .field input.checked ~ img {\n\tborder-color: #278ab7;\n\tbackground-color: #278ab7;\n}\n/* COLOR */\n.vp-sc-wrapper .vp-color .field input[type=\"text\"] {\n\tpadding-left: 30px;\n}\n.vp-sc-wrapper .vp-color .field label {\n\tbackground-image: url('../img/vp-sprite.png');\n\tbackground-position: 0 -140px;\n\tdisplay: block;\n\theight: 20px;\n\tleft: 0px;\n\tmargin: 5px;\n\tposition: absolute;\n\ttop: 0px;\n\twidth: 20px;\n}\n.vp-sc-wrapper .vp-color .field label span {\n\tdisplay: block;\n\theight: 100%;\n\twidth: 100%;\n}\n/* SLIDER */\n.vp-sc-wrapper .vp-slider .input {\n\tpadding: 10px 80px 10px 0;\n}\n.vp-sc-wrapper .vp-slider .input .slidebar {\n\twidth: 100%;\n}\n.vp-sc-wrapper .vp-slider .input .slideinput {\n\tposition: absolute;\n\ttop: 0px;\n\tright: 0px;\n\twidth: 60px;\n\tmargin-top: -5px;\n}\n/* SELECT & FONTAWESOME */\n.vp-sc-wrapper .vp-select .field .input a,.vp-sc-wrapper .vp-fontawesome .field .input a {\n\theight: 30px;\n\tborder-radius: 3px;\n\tborder: 1px solid #cccccc;\n}\n.vp-sc-wrapper .vp-select .field .input a div,.vp-sc-wrapper .vp-fontawesome .field .inpu a div {\n\tborder-left-color: #cccccc;\n}\n.vp-sc-wrapper .vp-select .field .input .select2-dropdown-open a,.vp-sc-wrapper .vp-fontawesome .field .input .select2-dropdown-open a {\n\t-webkit-box-shadow: 0 4px 5px rgba(0,0,0,0.15);\n\tbox-shadow: 0 4px 5px rgba(0,0,0,0.15);\n}\n.vp-sc-wrapper .vp-select .field .input .select2-dropdown-open.select2-drop-above a,.vp-sc-wrapper .vp-fontawesome .field .input .select2-dropdown-open.select2-drop-above a {\n\t-webkit-box-shadow: 0 -4px 5px rgba(0,0,0,0.15);\n\tbox-shadow: 0 -4px 5px rgba(0,0,0,0.15);\n}\n/* SORTER & MULTISELECT */\n.vp-sc-wrapper .vp-multiselect .search-field input,.vp-sc-wrapper .vp-sorter .search-field input {\n\theight: auto;\n}\n.vp-sc-wrapper .vp-sorter .field .input li.ui-state-highlight,.vp-sc-wrapper .vp-sorter .field .input li.select2-search-choice {\n\tdisplay: block;\n\tfloat: none;\n\tmargin: 3px 5px;\n\theight: 22px;\n}\n.vp-sc-wrapper .vp-sorter .field .input li {\n\tdisplay: block;\n\tfloat: none;\n\tmargin: 3px 5px;\n\theight: 22px;\n}\n.vp-sc-wrapper .vp-sorter .field .input ul,.vp-sc-wrapper .vp-multiselect .field .input ul {\n\tborder-radius: 3px;\n\tborder: 1px solid #cccccc;\n}\n.vp-sc-wrapper .vp-multiselect .field .input .select2-dropdown-open ul,.vp-sc-wrapper .vp-sorter .field .input .select2-dropdown-open ul {\n\t-webkit-box-shadow: 0 4px 5px rgba(0,0,0,0.15);\n\tbox-shadow: 0 4px 5px rgba(0,0,0,0.15);\n}\n.vp-sc-wrapper .vp-multiselect .field .input .select2-dropdown-open.select2-drop-above ul,.vp-sc-wrapper .vp-sorter .field .input .select2-dropdown-open.select2-drop-above ul {\n\t-webkit-box-shadow: 0 -4px 5px rgba(0,0,0,0.15);\n\tbox-shadow: 0 -4px 5px rgba(0,0,0,0.15);\n}\n/* TEXTAREA */\n.vp-sc-wrapper .vp-textarea textarea {\n\twidth: 100%;\n\t-webkit-resize: vertical;\n\t-moz-resize: vertical;\n\tresize: vertical;\n\tmin-height: 100px;\n\tmax-height: 200px;\n}\n/* WP Editor */\n.vp-sc-wrapper .vp-wpeditor .label,.vp-sc-wrapper .vp-wpeditor .field {\n\tdisplay: block;\n\tpadding: 0px 10px !important;\n\twidth: 100%;\n}\n.vp-sc-wrapper .customEditor {\n\tmargin: 15px 0px;\n}\n.vp-sc-wrapper .customEditor textarea {\n\twidth: 100%;\n\tmargin: 0;\n\t-webkit-border-top-right-radius: 0;\n\t-webkit-border-top-left-radius: 0;\n\tborder-top-left-radius: 0;\n\tborder-top-right-radius: 0;\n}\n.vp-sc-wrapper .custom_upload_buttons a {\n\ttext-decoration: none;\n}\n.vp-sc-wrapper .wp_themeSkin table.mceLayout {\n\tbackground: white;\n\tborder-width: 1px;\n\tborder-style: solid;\n\t-webkit-border-top-right-radius: 3px;\n\t-webkit-border-top-left-radius: 3px;\n\tborder-top-right-radius: 3px;\n\tborder-top-left-radius: 3px;\n\tborder-color: #CCC #CCC #DFDFDF;\n}\n.vp-sc-wrapper .mceLayout span {\n\tdisplay: inline;\n}\n.vp-sc-wrapper .customEditor * {\n\t-webkit-box-sizing: content-box;\n\t-moz-box-sizing: content-box;\n\t-ms-box-sizing: content-box;\n\tbox-sizing: content-box;\n}\n.vp-sc-wrapper .vp-wpeditor .field .customEditor .mceIcon img {\n\tborder-width: 0;\n\tpadding: 0;\n}\n/* HTML PREVIEW */\n.vp-metabox .vp-html .field .input {\n\toverflow: auto;\n}\n.vp-metabox .vp-html .field .vp-field-loader {\n\tposition: absolute;\n\twidth: 100%;\n\theight: 100%;\n\tbackground-color: #f9f9f9;\n\ttext-align: center;\n\ttop: 0;\n}\n.vp-metabox .vp-wpa-loop .vp-html .field .vp-field-loader {\n\tbackground-color: #ffffff;\n}\n.vp-metabox .vp-html .field .vp-field-loader img {\n\tposition: absolute;\n\ttop: 50%;\n\tleft: 50%;\n\tmargin: -5px 0 0 -8px;\n}\n/**\n * Notebox styling\n * (normal, warning, info, error, success)\n */\n.vp-sc-wrapper .vp-notebox {\n\tborder-width: 1px;\n\tborder-style: solid;\n\tborder-radius: 3px;\n\tdisplay: block;\n\tpadding: 10px 20px 10px 55px;\n\tposition: relative;\n\tmargin: 10px 0;\n\tmin-height: 50px;\n\twidth: auto;\n}\n.vp-sc-wrapper .vp-notebox > i {\n\tdisplay: block;\n\tfont-size: 30px;\n\tline-height: 1em;\n\tleft: 0;\n\tmargin: 9px;\n\t-ms-filter: \"progid:DXImageTransform.Microsoft.Alpha(Opacity=30)\";\n\tfilter: alpha(opacity=30);\n\topacity: 0.3;\n\tposition: absolute;\n\ttext-align: center;\n\ttop: 0;\n\twidth: 30px;\n}\n.vp-sc-wrapper .vp-notebox > .label {\n\tdisplay: block;\n\twidth: auto;\n\tpadding: 0 !important;\n\tfont-weight: bold;\n}\n.vp-sc-wrapper .vp-notebox > .description {\n\tpadding: 0;\n\tcolor: inherit;\n}\n.vp-sc-wrapper .vp-notebox > .description p {\n\tmargin: 0;\n}\n.vp-sc-wrapper .vp-notebox.note-normal {\n\tbackground-color: #eeeeee;\n\tborder-color: #cccccc;\n\tcolor: #666666;\n}\n.vp-sc-wrapper .vp-notebox.note-info {\n\tbackground-color: #d1e4f3;\n\tborder-color: #a8b6c1;\n\tcolor: #5881a1;\n}\n.vp-sc-wrapper .vp-notebox.note-success {\n\tbackground-color: #c4ec94;\n\tborder-color: #70ad60;\n\tcolor: #4d751c;\n}\n.vp-sc-wrapper .vp-notebox.note-warning {\n\tbackground-color: #fee9a6;\n\tborder-color: #d9c183;\n\tcolor: #978138;\n}\n.vp-sc-wrapper .vp-notebox.note-error {\n\tbackground-color: #ffa2a3;\n\tborder-color: #bc515b;\n\tcolor: #9c1825;\n}\n.vp-sc-wrapper .vp-wpa-group .vp-notebox {\n\tmargin: 10px 10px;\n}\n/* jQuery UI Datepicker bottom div bug */\n#ui-datepicker-div {\n\tdisplay: none;\n}\n/**\n * Code Editor styling\n */\n.ace_editor {\n\tborder-width: 1px;\n\tborder-style: solid;\n\tborder-color: #dddddd;\n\tborder-radius: 3px;\n\theight: 200px;\n}\n/* Bootstrap Colorpicker */\n.dropdown-menu {\n\tposition: absolute;\n\ttop: 100%;\n\tleft: 0;\n\tz-index: 1000;\n\tdisplay: none;\n\tfloat: left;\n\tmin-width: 160px;\n\tmargin: 2px 0 0;\n\tlist-style: none;\n\tbackground-color: #ffffff;\n\tborder: 1px solid #cccccc;\n\tborder: 1px solid rgba(0,0,0,0.2);\n\t*border-right-width: 2px;\n\t*border-bottom-width: 2px;\n\tborder-radius: 3px;\n\t-webkit-box-shadow: 0 5px 10px rgba(0,0,0,0.2);\n\tbox-shadow: 0 5px 10px rgba(0,0,0,0.2);\n\t-webkit-background-clip: padding-box;\n\t-moz-background-clip: padding-box;\n\tbackground-clip: padding-box;\n}\n/* jQuery UI Datepicker bottom div bug */\n#ui-datepicker-div {\n\tdisplay: none;\n}\n/* jQuery UI widget overlay glitch */\n.ui-widget-overlay {\n\tbackground-repeat: repeat;\n}\n/* fontawesome chooser + select2 width */\n.select2-container .fontawesome,.select2-result-label .fontawesome {\n\tfont-size: 12px;\n\tvertical-align: middle;\n}\n.select2-container .fontawesome i,.select2-result-label .fontawesome i {\n\tfont-size: 14px;\n\tmargin-right: 8px;\n}\n.select2-container {\n\twidth: 100%;\n}\n.select2-drop.select2-drop-above {\n\tmargin-top: 4px;\n\tpadding-top: 0;\n\tpadding-bottom: 10px;\n\tborder-top-color: #cccccc;\n}\n.select2-drop input {\n\tborder-color: #cccccc;\n}\n.select2-results .select2-highlighted {\n\tbackground: #278ab7;\n}\n.reveal-modal {\n\ttop: 60px;\n\tbottom: 60px;\n\tposition: fixed;\n\tpadding-top: 4rem;\n}\n.reveal-modal .vp-sc-scroll-container {\n\theight: 100%;\n\toverflow-y: scroll;\n}\n.reveal-modal h1 {\n\tfont-size: 1.3rem;\n\tline-height: 2rem;\n\tfont-weight: bold;\n\tposition: absolute;\n\ttop: 0;\n\tmargin: 1.5rem 0 0.5rem;\n}\n.reveal-modal {\n\tz-index: 150006;\n}\n.select2-drop {\n\tz-index: 150008;\n}\n.select2-drop-mask {\n\tz-index: 150007;\n}\n.colorpicker.dropdown-menu {\n\tz-index: 150008;\n}\n/* lower tinymce native fullscreen z-index (it's hidden it's own add media) */\n#mce_fullscreen_container {\n\tz-index: 150005 !important;\n}"
  },
  {
    "path": "public/css/vendor/bootstrap-colorpicker.css",
    "content": " /*\n\tColorpicker for Bootstrap\n\tCopyright 2012 Stefan Petre \n\tLicensed under the Apache License v2.0\n\thttp://www.apache.org/licenses/LICENSE-2.0\n*/\n .colorpicker-saturation { width: 100px; height: 100px; background-image: url(../../img/bootstrap-colorpicker/saturation.png); cursor: crosshair; float: left; } .colorpicker-saturation i { display: block; height: 5px; width: 5px; border: 1px solid #000; -webkit-border-radius: 5px; -moz-border-radius: 5px; border-radius: 5px; position: absolute; top: 0; left: 0; margin: -4px 0 0 -4px; } .colorpicker-saturation i b { display: block; height: 5px; width: 5px; border: 1px solid #fff; -webkit-border-radius: 5px; -moz-border-radius: 5px; border-radius: 5px; } .colorpicker-hue, .colorpicker-alpha { width: 15px; height: 100px; float: left; cursor: row-resize; margin-left: 4px; margin-bottom: 4px; } .colorpicker-hue i, .colorpicker-alpha i { display: block; height: 1px; background: #000; border-top: 1px solid #fff; position: absolute; top: 0; left: 0; width: 100%; margin-top: -1px; } .colorpicker-hue { background-image: url(../../img/bootstrap-colorpicker/hue.png); } .colorpicker-alpha { background-image: url(../../img/bootstrap-colorpicker/alpha.png); display: none; } .colorpicker { *zoom: 1; top: 0; left: 0; padding: 4px; min-width: 120px; margin-top: 1px; -webkit-border-radius: 4px; -moz-border-radius: 4px; border-radius: 4px; } .colorpicker:before, .colorpicker:after { display: table; content: \"\"; } .colorpicker:after { clear: both; } .colorpicker:before { content: ''; display: inline-block; border-left: 7px solid transparent; border-right: 7px solid transparent; border-bottom: 7px solid #ccc; border-bottom-color: rgba(0, 0, 0, 0.2); position: absolute; top: -7px; left: 6px; } .colorpicker:after { content: ''; display: inline-block; border-left: 6px solid transparent; border-right: 6px solid transparent; border-bottom: 6px solid #ffffff; position: absolute; top: -6px; left: 7px; } .colorpicker div { position: relative; } .colorpicker.alpha { min-width: 140px; } .colorpicker.alpha .colorpicker-alpha { display: block; } .colorpicker-color { height: 10px; margin-top: 5px; clear: both; background-image: url(../../img/bootstrap-colorpicker/alpha.png); background-position: 0 100%; } .colorpicker-color div { height: 10px; } .input-append.color .add-on i, .input-prepend.color .add-on i { display: block; cursor: pointer; width: 16px; height: 16px; }"
  },
  {
    "path": "public/css/vendor/colorpicker.css",
    "content": ".colorpicker {\n\twidth: 356px;\n\theight: 176px;\n\toverflow: hidden;\n\tposition: absolute;\n\tbackground: url(../../img/colorpicker/colorpicker_background.png);\n\tfont-family: Arial, Helvetica, sans-serif;\n\tdisplay: none;\n}\n.colorpicker_color {\n\twidth: 150px;\n\theight: 150px;\n\tleft: 14px;\n\ttop: 13px;\n\tposition: absolute;\n\tbackground: #f00;\n\toverflow: hidden;\n\tcursor: crosshair;\n}\n.colorpicker_color div {\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\twidth: 150px;\n\theight: 150px;\n\tbackground: url(../../img/colorpicker/colorpicker_overlay.png);\n}\n.colorpicker_color div div {\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\twidth: 11px;\n\theight: 11px;\n\toverflow: hidden;\n\tbackground: url(../../img/colorpicker/colorpicker_select.gif);\n\tmargin: -5px 0 0 -5px;\n}\n.colorpicker_hue {\n\tposition: absolute;\n\ttop: 13px;\n\tleft: 171px;\n\twidth: 35px;\n\theight: 150px;\n\tcursor: n-resize;\n}\n.colorpicker_hue div {\n\tposition: absolute;\n\twidth: 35px;\n\theight: 9px;\n\toverflow: hidden;\n\tbackground: url(../../img/colorpicker/colorpicker_indic.gif) left top;\n\tmargin: -4px 0 0 0;\n\tleft: 0px;\n}\n.colorpicker_new_color {\n\tposition: absolute;\n\twidth: 60px;\n\theight: 30px;\n\tleft: 213px;\n\ttop: 13px;\n\tbackground: #f00;\n}\n.colorpicker_current_color {\n\tposition: absolute;\n\twidth: 60px;\n\theight: 30px;\n\tleft: 283px;\n\ttop: 13px;\n\tbackground: #f00;\n}\n.colorpicker input {\n\tbackground-color: transparent;\n\tborder: 1px solid transparent;\n\tposition: absolute;\n\tfont-size: 10px;\n\tfont-family: Arial, Helvetica, sans-serif;\n\tline-height: 1em;\n\tcolor: #898989;\n\ttop: 4px;\n\tright: 11px;\n\ttext-align: right;\n\tmargin: 0;\n\tpadding: 0;\n\theight: 14px;\n}\n.colorpicker_hex {\n\tposition: absolute;\n\twidth: 72px;\n\theight: 22px;\n\tbackground: url(../../img/colorpicker/colorpicker_hex.png) top;\n\tleft: 212px;\n\ttop: 142px;\n}\n.colorpicker_hex input {\n\tright: 6px;\n}\n.colorpicker_field {\n\theight: 22px;\n\twidth: 62px;\n\tbackground-position: top;\n\tposition: absolute;\n}\n.colorpicker_field span {\n\tposition: absolute;\n\twidth: 12px;\n\theight: 22px;\n\toverflow: hidden;\n\ttop: 0;\n\tright: 0;\n\tcursor: n-resize;\n}\n.colorpicker_rgb_r {\n\tbackground-image: url(../../img/colorpicker/colorpicker_rgb_r.png);\n\ttop: 52px;\n\tleft: 212px;\n}\n.colorpicker_rgb_g {\n\tbackground-image: url(../../img/colorpicker/colorpicker_rgb_g.png);\n\ttop: 82px;\n\tleft: 212px;\n}\n.colorpicker_rgb_b {\n\tbackground-image: url(../../img/colorpicker/colorpicker_rgb_b.png);\n\ttop: 112px;\n\tleft: 212px;\n}\n.colorpicker_hsb_h {\n\tbackground-image: url(../../img/colorpicker/colorpicker_hsb_h.png);\n\ttop: 52px;\n\tleft: 282px;\n}\n.colorpicker_hsb_s {\n\tbackground-image: url(../../img/colorpicker/colorpicker_hsb_s.png);\n\ttop: 82px;\n\tleft: 282px;\n}\n.colorpicker_hsb_b {\n\tbackground-image: url(../../img/colorpicker/colorpicker_hsb_b.png);\n\ttop: 112px;\n\tleft: 282px;\n}\n.colorpicker_submit {\n\tposition: absolute;\n\twidth: 22px;\n\theight: 22px;\n\tbackground: url(../../img/colorpicker/colorpicker_submit.png) top;\n\tleft: 322px;\n\ttop: 142px;\n\toverflow: hidden;\n}\n.colorpicker_focus {\n\tbackground-position: center;\n}\n.colorpicker_hex.colorpicker_focus {\n\tbackground-position: bottom;\n}\n.colorpicker_submit.colorpicker_focus {\n\tbackground-position: bottom;\n}\n.colorpicker_slider {\n\tbackground-position: bottom;\n}\n"
  },
  {
    "path": "public/css/vendor/jqueryui/themes/smoothness/jquery-ui-1.9.2.custom.css",
    "content": "/*! jQuery UI - v1.9.2 - 2012-11-28\n* http://jqueryui.com\n* Includes: jquery.ui.core.css, jquery.ui.resizable.css, jquery.ui.selectable.css, jquery.ui.accordion.css, jquery.ui.autocomplete.css, jquery.ui.button.css, jquery.ui.datepicker.css, jquery.ui.dialog.css, jquery.ui.menu.css, jquery.ui.progressbar.css, jquery.ui.slider.css, jquery.ui.spinner.css, jquery.ui.tabs.css, jquery.ui.tooltip.css\n* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Verdana%2CArial%2Csans-serif&fwDefault=normal&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=cccccc&bgTextureHeader=03_highlight_soft.png&bgImgOpacityHeader=75&borderColorHeader=aaaaaa&fcHeader=222222&iconColorHeader=222222&bgColorContent=ffffff&bgTextureContent=01_flat.png&bgImgOpacityContent=75&borderColorContent=aaaaaa&fcContent=222222&iconColorContent=222222&bgColorDefault=e6e6e6&bgTextureDefault=02_glass.png&bgImgOpacityDefault=75&borderColorDefault=d3d3d3&fcDefault=555555&iconColorDefault=888888&bgColorHover=dadada&bgTextureHover=02_glass.png&bgImgOpacityHover=75&borderColorHover=999999&fcHover=212121&iconColorHover=454545&bgColorActive=ffffff&bgTextureActive=02_glass.png&bgImgOpacityActive=65&borderColorActive=aaaaaa&fcActive=212121&iconColorActive=454545&bgColorHighlight=fbf9ee&bgTextureHighlight=02_glass.png&bgImgOpacityHighlight=55&borderColorHighlight=fcefa1&fcHighlight=363636&iconColorHighlight=2e83ff&bgColorError=fef1ec&bgTextureError=02_glass.png&bgImgOpacityError=95&borderColorError=cd0a0a&fcError=cd0a0a&iconColorError=cd0a0a&bgColorOverlay=aaaaaa&bgTextureOverlay=01_flat.png&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=01_flat.png&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px\n* Copyright (c) 2012 jQuery Foundation and other contributors Licensed MIT */\n\n/* Layout helpers\n----------------------------------*/\n.ui-helper-hidden { display: none; }\n.ui-helper-hidden-accessible { border: 0; clip: rect(0 0 0 0); height: 1px; margin: -1px; overflow: hidden; padding: 0; position: absolute; width: 1px; }\n.ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; }\n.ui-helper-clearfix:before, .ui-helper-clearfix:after { content: \"\"; display: table; }\n.ui-helper-clearfix:after { clear: both; }\n.ui-helper-clearfix { zoom: 1; }\n.ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); }\n\n\n/* Interaction Cues\n----------------------------------*/\n.ui-state-disabled { cursor: default !important; }\n\n\n/* Icons\n----------------------------------*/\n\n/* states and images */\n.ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; }\n\n\n/* Misc visuals\n----------------------------------*/\n\n/* Overlays */\n.ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }\n.ui-resizable { position: relative;}\n.ui-resizable-handle { position: absolute;font-size: 0.1px; display: block; }\n.ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle { display: none; }\n.ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0; }\n.ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0; }\n.ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0; height: 100%; }\n.ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0; height: 100%; }\n.ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; }\n.ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; }\n.ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; }\n.ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;}.ui-selectable-helper { position: absolute; z-index: 100; border:1px dotted black; }\n.ui-accordion .ui-accordion-header { display: block; cursor: pointer; position: relative; margin-top: 2px; padding: .5em .5em .5em .7em; zoom: 1; }\n.ui-accordion .ui-accordion-icons { padding-left: 2.2em; }\n.ui-accordion .ui-accordion-noicons { padding-left: .7em; }\n.ui-accordion .ui-accordion-icons .ui-accordion-icons { padding-left: 2.2em; }\n.ui-accordion .ui-accordion-header .ui-accordion-header-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; }\n.ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; overflow: auto; zoom: 1; }\n.ui-autocomplete {\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\tcursor: default;\n}\n\n/* workarounds */\n* html .ui-autocomplete { width:1px; } /* without this, the menu expands to 100% in IE6 */\n.ui-button { display: inline-block; position: relative; padding: 0; margin-right: .1em; cursor: pointer; text-align: center; zoom: 1; overflow: visible; } /* the overflow property removes extra width in IE */\n.ui-button, .ui-button:link, .ui-button:visited, .ui-button:hover, .ui-button:active { text-decoration: none; }\n.ui-button-icon-only { width: 2.2em; } /* to make room for the icon, a width needs to be set here */\nbutton.ui-button-icon-only { width: 2.4em; } /* button elements seem to need a little more width */\n.ui-button-icons-only { width: 3.4em; } \nbutton.ui-button-icons-only { width: 3.7em; } \n\n/*button text element */\n.ui-button .ui-button-text { display: block; line-height: 1.4;  }\n.ui-button-text-only .ui-button-text { padding: .4em 1em; }\n.ui-button-icon-only .ui-button-text, .ui-button-icons-only .ui-button-text { padding: .4em; text-indent: -9999999px; }\n.ui-button-text-icon-primary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 1em .4em 2.1em; }\n.ui-button-text-icon-secondary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 2.1em .4em 1em; }\n.ui-button-text-icons .ui-button-text { padding-left: 2.1em; padding-right: 2.1em; }\n/* no icon support for input elements, provide padding by default */\ninput.ui-button { padding: .4em 1em; }\n\n/*button icon element(s) */\n.ui-button-icon-only .ui-icon, .ui-button-text-icon-primary .ui-icon, .ui-button-text-icon-secondary .ui-icon, .ui-button-text-icons .ui-icon, .ui-button-icons-only .ui-icon { position: absolute; top: 50%; margin-top: -8px; }\n.ui-button-icon-only .ui-icon { left: 50%; margin-left: -8px; }\n.ui-button-text-icon-primary .ui-button-icon-primary, .ui-button-text-icons .ui-button-icon-primary, .ui-button-icons-only .ui-button-icon-primary { left: .5em; }\n.ui-button-text-icon-secondary .ui-button-icon-secondary, .ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }\n.ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }\n\n/*button sets*/\n.ui-buttonset { margin-right: 7px; }\n.ui-buttonset .ui-button { margin-left: 0; margin-right: -.3em; }\n\n/* workarounds */\nbutton.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra padding in Firefox */\n.ui-datepicker { width: 17em; padding: .2em .2em 0; display: none; }\n.ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; }\n.ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; }\n.ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover { top: 1px; }\n.ui-datepicker .ui-datepicker-prev { left:2px; }\n.ui-datepicker .ui-datepicker-next { right:2px; }\n.ui-datepicker .ui-datepicker-prev-hover { left:1px; }\n.ui-datepicker .ui-datepicker-next-hover { right:1px; }\n.ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px;  }\n.ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; }\n.ui-datepicker .ui-datepicker-title select { font-size:1em; margin:1px 0; }\n.ui-datepicker select.ui-datepicker-month-year {width: 100%;}\n.ui-datepicker select.ui-datepicker-month, \n.ui-datepicker select.ui-datepicker-year { width: 49%;}\n.ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; }\n.ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0;  }\n.ui-datepicker td { border: 0; padding: 1px; }\n.ui-datepicker td span, .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; }\n.ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; }\n.ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; }\n.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; }\n\n/* with multiple calendars */\n.ui-datepicker.ui-datepicker-multi { width:auto; }\n.ui-datepicker-multi .ui-datepicker-group { float:left; }\n.ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; }\n.ui-datepicker-multi-2 .ui-datepicker-group { width:50%; }\n.ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; }\n.ui-datepicker-multi-4 .ui-datepicker-group { width:25%; }\n.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; }\n.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; }\n.ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; }\n.ui-datepicker-row-break { clear:both; width:100%; font-size:0em; }\n\n/* RTL support */\n.ui-datepicker-rtl { direction: rtl; }\n.ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; }\n.ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; }\n.ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; }\n.ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; }\n.ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; }\n.ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; }\n.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; }\n.ui-datepicker-rtl .ui-datepicker-group { float:right; }\n.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; }\n.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; }\n\n/* IE6 IFRAME FIX (taken from datepicker 1.5.3 */\n.ui-datepicker-cover {\n    position: absolute; /*must have*/\n    z-index: -1; /*must have*/\n    filter: mask(); /*must have*/\n    top: -4px; /*must have*/\n    left: -4px; /*must have*/\n    width: 200px; /*must have*/\n    height: 200px; /*must have*/\n}.ui-dialog { position: absolute; top: 0; left: 0; padding: .2em; width: 300px; overflow: hidden; }\n.ui-dialog .ui-dialog-titlebar { padding: .4em 1em; position: relative;  }\n.ui-dialog .ui-dialog-title { float: left; margin: .1em 16px .1em 0; }\n.ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .3em; top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px; }\n.ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; }\n.ui-dialog .ui-dialog-titlebar-close:hover, .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; }\n.ui-dialog .ui-dialog-content { position: relative; border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; }\n.ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em .4em; }\n.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { float: right; }\n.ui-dialog .ui-dialog-buttonpane button { margin: .5em .4em .5em 0; cursor: pointer; }\n.ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; }\n.ui-draggable .ui-dialog-titlebar { cursor: move; }\n.ui-menu { list-style:none; padding: 2px; margin: 0; display:block; outline: none; }\n.ui-menu .ui-menu { margin-top: -3px; position: absolute; }\n.ui-menu .ui-menu-item { margin: 0; padding: 0; zoom: 1; width: 100%; }\n.ui-menu .ui-menu-divider { margin: 5px -2px 5px -2px; height: 0; font-size: 0; line-height: 0; border-width: 1px 0 0 0; }\n.ui-menu .ui-menu-item a { text-decoration: none; display: block; padding: 2px .4em; line-height: 1.5; zoom: 1; font-weight: normal; }\n.ui-menu .ui-menu-item a.ui-state-focus,\n.ui-menu .ui-menu-item a.ui-state-active { font-weight: normal; margin: -1px; }\n\n.ui-menu .ui-state-disabled { font-weight: normal; margin: .4em 0 .2em; line-height: 1.5; }\n.ui-menu .ui-state-disabled a { cursor: default; }\n\n/* icon support */\n.ui-menu-icons { position: relative; }\n.ui-menu-icons .ui-menu-item a { position: relative; padding-left: 2em; }\n\n/* left-aligned */\n.ui-menu .ui-icon { position: absolute; top: .2em; left: .2em; }\n\n/* right-aligned */\n.ui-menu .ui-menu-icon { position: static; float: right; }\n.ui-progressbar { height:2em; text-align: left; overflow: hidden; }\n.ui-progressbar .ui-progressbar-value {margin: -1px; height:100%; }.ui-slider { position: relative; text-align: left; }\n.ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; }\n.ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; background-position: 0 0; }\n\n.ui-slider-horizontal { height: .8em; }\n.ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; }\n.ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; }\n.ui-slider-horizontal .ui-slider-range-min { left: 0; }\n.ui-slider-horizontal .ui-slider-range-max { right: 0; }\n\n.ui-slider-vertical { width: .8em; height: 100px; }\n.ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; }\n.ui-slider-vertical .ui-slider-range { left: 0; width: 100%; }\n.ui-slider-vertical .ui-slider-range-min { bottom: 0; }\n.ui-slider-vertical .ui-slider-range-max { top: 0; }.ui-spinner { position:relative; display: inline-block; overflow: hidden; padding: 0; vertical-align: middle; }\n.ui-spinner-input { border: none; background: none; padding: 0; margin: .2em 0; vertical-align: middle; margin-left: .4em; margin-right: 22px; }\n.ui-spinner-button { width: 16px; height: 50%; font-size: .5em; padding: 0; margin: 0; text-align: center; position: absolute; cursor: default; display: block; overflow: hidden; right: 0; }\n.ui-spinner a.ui-spinner-button { border-top: none; border-bottom: none; border-right: none; } /* more specificity required here to overide default borders */\n.ui-spinner .ui-icon { position: absolute; margin-top: -8px; top: 50%; left: 0; } /* vertical centre icon */\n.ui-spinner-up { top: 0; }\n.ui-spinner-down { bottom: 0; }\n\n/* TR overrides */\n.ui-spinner .ui-icon-triangle-1-s {\n\t/* need to fix icons sprite */\n\tbackground-position:-65px -16px;\n}\n.ui-tabs { position: relative; padding: .2em; zoom: 1; } /* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as \"fixed\") */\n.ui-tabs .ui-tabs-nav { margin: 0; padding: .2em .2em 0; }\n.ui-tabs .ui-tabs-nav li { list-style: none; float: left; position: relative; top: 0; margin: 1px .2em 0 0; border-bottom: 0; padding: 0; white-space: nowrap; }\n.ui-tabs .ui-tabs-nav li a { float: left; padding: .5em 1em; text-decoration: none; }\n.ui-tabs .ui-tabs-nav li.ui-tabs-active { margin-bottom: -1px; padding-bottom: 1px; }\n.ui-tabs .ui-tabs-nav li.ui-tabs-active a, .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .ui-tabs .ui-tabs-nav li.ui-tabs-loading a { cursor: text; }\n.ui-tabs .ui-tabs-nav li a, .ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */\n.ui-tabs .ui-tabs-panel { display: block; border-width: 0; padding: 1em 1.4em; background: none; }\n.ui-tooltip {\n\tpadding: 8px;\n\tposition: absolute;\n\tz-index: 9999;\n\tmax-width: 300px;\n\t-webkit-box-shadow: 0 0 5px #aaa;\n\tbox-shadow: 0 0 5px #aaa;\n}\n/* Fades and background-images don't work well together in IE6, drop the image */\n* html .ui-tooltip {\n\tbackground-image: none;\n}\nbody .ui-tooltip { border-width: 2px; }\n\n/* Component containers\n----------------------------------*/\n.ui-widget { font-family: Verdana,Arial,sans-serif; font-size: 1.1em; }\n.ui-widget .ui-widget { font-size: 1em; }\n.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Verdana,Arial,sans-serif; font-size: 1em; }\n.ui-widget-content { border: 1px solid #aaaaaa; background: #ffffff url(images/ui-bg_flat_75_ffffff_40x100.png) 50% 50% repeat-x; color: #222222; }\n.ui-widget-content a { color: #222222; }\n.ui-widget-header { border: 1px solid #aaaaaa; background: #cccccc url(images/ui-bg_highlight-soft_75_cccccc_1x100.png) 50% 50% repeat-x; color: #222222; font-weight: bold; }\n.ui-widget-header a { color: #222222; }\n\n/* Interaction states\n----------------------------------*/\n.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #d3d3d3; background: #e6e6e6 url(images/ui-bg_glass_75_e6e6e6_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #555555; }\n.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #555555; text-decoration: none; }\n.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #999999; background: #dadada url(images/ui-bg_glass_75_dadada_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #212121; }\n.ui-state-hover a, .ui-state-hover a:hover, .ui-state-hover a:link, .ui-state-hover a:visited { color: #212121; text-decoration: none; }\n.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #aaaaaa; background: #ffffff url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #212121; }\n.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #212121; text-decoration: none; }\n\n/* Interaction Cues\n----------------------------------*/\n.ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight  {border: 1px solid #fcefa1; background: #fbf9ee url(images/ui-bg_glass_55_fbf9ee_1x400.png) 50% 50% repeat-x; color: #363636; }\n.ui-state-highlight a, .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #363636; }\n.ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error {border: 1px solid #cd0a0a; background: #fef1ec url(images/ui-bg_glass_95_fef1ec_1x400.png) 50% 50% repeat-x; color: #cd0a0a; }\n.ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #cd0a0a; }\n.ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #cd0a0a; }\n.ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; }\n.ui-priority-secondary, .ui-widget-content .ui-priority-secondary,  .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; }\n.ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; }\n.ui-state-disabled .ui-icon { filter:Alpha(Opacity=35); } /* For IE8 - See #6059 */\n\n/* Icons\n----------------------------------*/\n\n/* states and images */\n.ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_222222_256x240.png); }\n.ui-widget-content .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); }\n.ui-widget-header .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); }\n.ui-state-default .ui-icon { background-image: url(images/ui-icons_888888_256x240.png); }\n.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_454545_256x240.png); }\n.ui-state-active .ui-icon {background-image: url(images/ui-icons_454545_256x240.png); }\n.ui-state-highlight .ui-icon {background-image: url(images/ui-icons_2e83ff_256x240.png); }\n.ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_cd0a0a_256x240.png); }\n\n/* positioning */\n.ui-icon-carat-1-n { background-position: 0 0; }\n.ui-icon-carat-1-ne { background-position: -16px 0; }\n.ui-icon-carat-1-e { background-position: -32px 0; }\n.ui-icon-carat-1-se { background-position: -48px 0; }\n.ui-icon-carat-1-s { background-position: -64px 0; }\n.ui-icon-carat-1-sw { background-position: -80px 0; }\n.ui-icon-carat-1-w { background-position: -96px 0; }\n.ui-icon-carat-1-nw { background-position: -112px 0; }\n.ui-icon-carat-2-n-s { background-position: -128px 0; }\n.ui-icon-carat-2-e-w { background-position: -144px 0; }\n.ui-icon-triangle-1-n { background-position: 0 -16px; }\n.ui-icon-triangle-1-ne { background-position: -16px -16px; }\n.ui-icon-triangle-1-e { background-position: -32px -16px; }\n.ui-icon-triangle-1-se { background-position: -48px -16px; }\n.ui-icon-triangle-1-s { background-position: -64px -16px; }\n.ui-icon-triangle-1-sw { background-position: -80px -16px; }\n.ui-icon-triangle-1-w { background-position: -96px -16px; }\n.ui-icon-triangle-1-nw { background-position: -112px -16px; }\n.ui-icon-triangle-2-n-s { background-position: -128px -16px; }\n.ui-icon-triangle-2-e-w { background-position: -144px -16px; }\n.ui-icon-arrow-1-n { background-position: 0 -32px; }\n.ui-icon-arrow-1-ne { background-position: -16px -32px; }\n.ui-icon-arrow-1-e { background-position: -32px -32px; }\n.ui-icon-arrow-1-se { background-position: -48px -32px; }\n.ui-icon-arrow-1-s { background-position: -64px -32px; }\n.ui-icon-arrow-1-sw { background-position: -80px -32px; }\n.ui-icon-arrow-1-w { background-position: -96px -32px; }\n.ui-icon-arrow-1-nw { background-position: -112px -32px; }\n.ui-icon-arrow-2-n-s { background-position: -128px -32px; }\n.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }\n.ui-icon-arrow-2-e-w { background-position: -160px -32px; }\n.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }\n.ui-icon-arrowstop-1-n { background-position: -192px -32px; }\n.ui-icon-arrowstop-1-e { background-position: -208px -32px; }\n.ui-icon-arrowstop-1-s { background-position: -224px -32px; }\n.ui-icon-arrowstop-1-w { background-position: -240px -32px; }\n.ui-icon-arrowthick-1-n { background-position: 0 -48px; }\n.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }\n.ui-icon-arrowthick-1-e { background-position: -32px -48px; }\n.ui-icon-arrowthick-1-se { background-position: -48px -48px; }\n.ui-icon-arrowthick-1-s { background-position: -64px -48px; }\n.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }\n.ui-icon-arrowthick-1-w { background-position: -96px -48px; }\n.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }\n.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }\n.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }\n.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }\n.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }\n.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }\n.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }\n.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }\n.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }\n.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }\n.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }\n.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }\n.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }\n.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }\n.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }\n.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }\n.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }\n.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }\n.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }\n.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }\n.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }\n.ui-icon-arrow-4 { background-position: 0 -80px; }\n.ui-icon-arrow-4-diag { background-position: -16px -80px; }\n.ui-icon-extlink { background-position: -32px -80px; }\n.ui-icon-newwin { background-position: -48px -80px; }\n.ui-icon-refresh { background-position: -64px -80px; }\n.ui-icon-shuffle { background-position: -80px -80px; }\n.ui-icon-transfer-e-w { background-position: -96px -80px; }\n.ui-icon-transferthick-e-w { background-position: -112px -80px; }\n.ui-icon-folder-collapsed { background-position: 0 -96px; }\n.ui-icon-folder-open { background-position: -16px -96px; }\n.ui-icon-document { background-position: -32px -96px; }\n.ui-icon-document-b { background-position: -48px -96px; }\n.ui-icon-note { background-position: -64px -96px; }\n.ui-icon-mail-closed { background-position: -80px -96px; }\n.ui-icon-mail-open { background-position: -96px -96px; }\n.ui-icon-suitcase { background-position: -112px -96px; }\n.ui-icon-comment { background-position: -128px -96px; }\n.ui-icon-person { background-position: -144px -96px; }\n.ui-icon-print { background-position: -160px -96px; }\n.ui-icon-trash { background-position: -176px -96px; }\n.ui-icon-locked { background-position: -192px -96px; }\n.ui-icon-unlocked { background-position: -208px -96px; }\n.ui-icon-bookmark { background-position: -224px -96px; }\n.ui-icon-tag { background-position: -240px -96px; }\n.ui-icon-home { background-position: 0 -112px; }\n.ui-icon-flag { background-position: -16px -112px; }\n.ui-icon-calendar { background-position: -32px -112px; }\n.ui-icon-cart { background-position: -48px -112px; }\n.ui-icon-pencil { background-position: -64px -112px; }\n.ui-icon-clock { background-position: -80px -112px; }\n.ui-icon-disk { background-position: -96px -112px; }\n.ui-icon-calculator { background-position: -112px -112px; }\n.ui-icon-zoomin { background-position: -128px -112px; }\n.ui-icon-zoomout { background-position: -144px -112px; }\n.ui-icon-search { background-position: -160px -112px; }\n.ui-icon-wrench { background-position: -176px -112px; }\n.ui-icon-gear { background-position: -192px -112px; }\n.ui-icon-heart { background-position: -208px -112px; }\n.ui-icon-star { background-position: -224px -112px; }\n.ui-icon-link { background-position: -240px -112px; }\n.ui-icon-cancel { background-position: 0 -128px; }\n.ui-icon-plus { background-position: -16px -128px; }\n.ui-icon-plusthick { background-position: -32px -128px; }\n.ui-icon-minus { background-position: -48px -128px; }\n.ui-icon-minusthick { background-position: -64px -128px; }\n.ui-icon-close { background-position: -80px -128px; }\n.ui-icon-closethick { background-position: -96px -128px; }\n.ui-icon-key { background-position: -112px -128px; }\n.ui-icon-lightbulb { background-position: -128px -128px; }\n.ui-icon-scissors { background-position: -144px -128px; }\n.ui-icon-clipboard { background-position: -160px -128px; }\n.ui-icon-copy { background-position: -176px -128px; }\n.ui-icon-contact { background-position: -192px -128px; }\n.ui-icon-image { background-position: -208px -128px; }\n.ui-icon-video { background-position: -224px -128px; }\n.ui-icon-script { background-position: -240px -128px; }\n.ui-icon-alert { background-position: 0 -144px; }\n.ui-icon-info { background-position: -16px -144px; }\n.ui-icon-notice { background-position: -32px -144px; }\n.ui-icon-help { background-position: -48px -144px; }\n.ui-icon-check { background-position: -64px -144px; }\n.ui-icon-bullet { background-position: -80px -144px; }\n.ui-icon-radio-on { background-position: -96px -144px; }\n.ui-icon-radio-off { background-position: -112px -144px; }\n.ui-icon-pin-w { background-position: -128px -144px; }\n.ui-icon-pin-s { background-position: -144px -144px; }\n.ui-icon-play { background-position: 0 -160px; }\n.ui-icon-pause { background-position: -16px -160px; }\n.ui-icon-seek-next { background-position: -32px -160px; }\n.ui-icon-seek-prev { background-position: -48px -160px; }\n.ui-icon-seek-end { background-position: -64px -160px; }\n.ui-icon-seek-start { background-position: -80px -160px; }\n/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */\n.ui-icon-seek-first { background-position: -80px -160px; }\n.ui-icon-stop { background-position: -96px -160px; }\n.ui-icon-eject { background-position: -112px -160px; }\n.ui-icon-volume-off { background-position: -128px -160px; }\n.ui-icon-volume-on { background-position: -144px -160px; }\n.ui-icon-power { background-position: 0 -176px; }\n.ui-icon-signal-diag { background-position: -16px -176px; }\n.ui-icon-signal { background-position: -32px -176px; }\n.ui-icon-battery-0 { background-position: -48px -176px; }\n.ui-icon-battery-1 { background-position: -64px -176px; }\n.ui-icon-battery-2 { background-position: -80px -176px; }\n.ui-icon-battery-3 { background-position: -96px -176px; }\n.ui-icon-circle-plus { background-position: 0 -192px; }\n.ui-icon-circle-minus { background-position: -16px -192px; }\n.ui-icon-circle-close { background-position: -32px -192px; }\n.ui-icon-circle-triangle-e { background-position: -48px -192px; }\n.ui-icon-circle-triangle-s { background-position: -64px -192px; }\n.ui-icon-circle-triangle-w { background-position: -80px -192px; }\n.ui-icon-circle-triangle-n { background-position: -96px -192px; }\n.ui-icon-circle-arrow-e { background-position: -112px -192px; }\n.ui-icon-circle-arrow-s { background-position: -128px -192px; }\n.ui-icon-circle-arrow-w { background-position: -144px -192px; }\n.ui-icon-circle-arrow-n { background-position: -160px -192px; }\n.ui-icon-circle-zoomin { background-position: -176px -192px; }\n.ui-icon-circle-zoomout { background-position: -192px -192px; }\n.ui-icon-circle-check { background-position: -208px -192px; }\n.ui-icon-circlesmall-plus { background-position: 0 -208px; }\n.ui-icon-circlesmall-minus { background-position: -16px -208px; }\n.ui-icon-circlesmall-close { background-position: -32px -208px; }\n.ui-icon-squaresmall-plus { background-position: -48px -208px; }\n.ui-icon-squaresmall-minus { background-position: -64px -208px; }\n.ui-icon-squaresmall-close { background-position: -80px -208px; }\n.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }\n.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }\n.ui-icon-grip-solid-vertical { background-position: -32px -224px; }\n.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }\n.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }\n.ui-icon-grip-diagonal-se { background-position: -80px -224px; }\n\n\n/* Misc visuals\n----------------------------------*/\n\n/* Corner radius */\n.ui-corner-all, .ui-corner-top, .ui-corner-left, .ui-corner-tl { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; -khtml-border-top-left-radius: 4px; border-top-left-radius: 4px; }\n.ui-corner-all, .ui-corner-top, .ui-corner-right, .ui-corner-tr { -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; -khtml-border-top-right-radius: 4px; border-top-right-radius: 4px; }\n.ui-corner-all, .ui-corner-bottom, .ui-corner-left, .ui-corner-bl { -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; -khtml-border-bottom-left-radius: 4px; border-bottom-left-radius: 4px; }\n.ui-corner-all, .ui-corner-bottom, .ui-corner-right, .ui-corner-br { -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; -khtml-border-bottom-right-radius: 4px; border-bottom-right-radius: 4px; }\n\n/* Overlays */\n.ui-widget-overlay { background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .3;filter:Alpha(Opacity=30); }\n.ui-widget-shadow { margin: -8px 0 0 -8px; padding: 8px; background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .3;filter:Alpha(Opacity=30); -moz-border-radius: 8px; -khtml-border-radius: 8px; -webkit-border-radius: 8px; border-radius: 8px; }"
  },
  {
    "path": "public/css/vendor/reveal.css",
    "content": "/*\t--------------------------------------------------\n\tReveal Modals\n\t-------------------------------------------------- */\n\t\t\n\t.reveal-modal-bg { \n\t\tposition: fixed; \n\t\theight: 100%;\n\t\twidth: 100%;\n\t\tbackground: #000;\n\t\tbackground: rgba(0,0,0,.8);\n\t\tz-index: 100;\n\t\tdisplay: none;\n\t\ttop: 0;\n\t\tleft: 0; \n\t\t}\n\t\n\t.reveal-modal {\n\t\tvisibility: hidden;\n\t\ttop: 100px; \n\t\tleft: 50%;\n\t\tmargin-left: -300px;\n\t\twidth: 520px;\n\t\tbackground: #fff;\n\t\tposition: absolute;\n\t\tz-index: 101;\n\t\tpadding: 30px 40px 34px;\n\t\t-moz-border-radius: 5px;\n\t\t-webkit-border-radius: 5px;\n\t\tborder-radius: 5px;\n\t\t-moz-box-shadow: 0 0 10px rgba(0,0,0,.4);\n\t\t-webkit-box-shadow: 0 0 10px rgba(0,0,0,.4);\n\t\t-box-shadow: 0 0 10px rgba(0,0,0,.4);\n\t\t}\n\t\t\n\t.reveal-modal.small \t\t{ width: 200px; margin-left: -140px;}\n\t.reveal-modal.medium \t\t{ width: 400px; margin-left: -240px;}\n\t.reveal-modal.large \t\t{ width: 600px; margin-left: -340px;}\n\t.reveal-modal.xlarge \t\t{ width: 800px; margin-left: -440px;}\n\t\n\t.reveal-modal .close-reveal-modal {\n\t\tfont-size: 22px;\n\t\tline-height: .5;\n\t\tposition: absolute;\n\t\ttop: 8px;\n\t\tright: 11px;\n\t\tcolor: #aaa;\n\t\ttext-shadow: 0 -1px 1px rbga(0,0,0,.6);\n\t\tfont-weight: bold;\n\t\tcursor: pointer;\n\t\t} \n\t/*\n\t\t\n\tNOTES\n\t\n\tClose button entity is &#215;\n\t\n\tExample markup\n\t\n\t<div id=\"myModal\" class=\"reveal-modal\">\n\t\t<h2>Awesome. I have it.</h2>\n\t\t<p class=\"lead\">Your couch.  I it's mine.</p>\n\t\t<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. In ultrices aliquet placerat. Duis pulvinar orci et nisi euismod vitae tempus lorem consectetur. Duis at magna quis turpis mattis venenatis eget id diam. </p>\n\t\t<a class=\"close-reveal-modal\">&#215;</a>\n\t</div>\n\t\n\t*/\n"
  },
  {
    "path": "public/css/vendor/select2.css",
    "content": "/*\nVersion: 3.3.2 Timestamp: Mon Mar 25 12:14:18 PDT 2013\n*/\n.select2-container {\n    position: relative;\n    display: inline-block;\n    /* inline-block for ie7 */\n    zoom: 1;\n    *display: inline;\n    vertical-align: middle;\n}\n\n.select2-container,\n.select2-drop,\n.select2-search,\n.select2-search input{\n  /*\n    Force border-box so that % widths fit the parent\n    container without overlap because of margin/padding.\n\n    More Info : http://www.quirksmode.org/css/box.html\n  */\n  -webkit-box-sizing: border-box; /* webkit */\n   -khtml-box-sizing: border-box; /* konqueror */\n     -moz-box-sizing: border-box; /* firefox */\n      -ms-box-sizing: border-box; /* ie */\n          box-sizing: border-box; /* css3 */\n}\n\n.select2-container .select2-choice {\n    display: block;\n    height: 26px;\n    padding: 0 0 0 8px;\n    overflow: hidden;\n    position: relative;\n\n    border: 1px solid #aaa;\n    white-space: nowrap;\n    line-height: 26px;\n    color: #444;\n    text-decoration: none;\n\n    -webkit-border-radius: 4px;\n       -moz-border-radius: 4px;\n            border-radius: 4px;\n\n    -webkit-background-clip: padding-box;\n       -moz-background-clip: padding;\n            background-clip: padding-box;\n\n    -webkit-touch-callout: none;\n      -webkit-user-select: none;\n       -khtml-user-select: none;\n         -moz-user-select: none;\n          -ms-user-select: none;\n              user-select: none;\n\n    background-color: #fff;\n    background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #eeeeee), color-stop(0.5, white));\n    background-image: -webkit-linear-gradient(center bottom, #eeeeee 0%, white 50%);\n    background-image: -moz-linear-gradient(center bottom, #eeeeee 0%, white 50%);\n    background-image: -o-linear-gradient(bottom, #eeeeee 0%, #ffffff 50%);\n    background-image: -ms-linear-gradient(top, #ffffff 0%, #eeeeee 50%);\n    filter: progid:DXImageTransform.Microsoft.gradient(startColorstr = '#ffffff', endColorstr = '#eeeeee', GradientType = 0);\n    background-image: linear-gradient(top, #ffffff 0%, #eeeeee 50%);\n}\n\n.select2-container.select2-drop-above .select2-choice {\n    border-bottom-color: #aaa;\n\n    -webkit-border-radius:0 0 4px 4px;\n       -moz-border-radius:0 0 4px 4px;\n            border-radius:0 0 4px 4px;\n\n    background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #eeeeee), color-stop(0.9, white));\n    background-image: -webkit-linear-gradient(center bottom, #eeeeee 0%, white 90%);\n    background-image: -moz-linear-gradient(center bottom, #eeeeee 0%, white 90%);\n    background-image: -o-linear-gradient(bottom, #eeeeee 0%, white 90%);\n    background-image: -ms-linear-gradient(top, #eeeeee 0%,#ffffff 90%);\n    filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffffff', endColorstr='#eeeeee',GradientType=0 );\n    background-image: linear-gradient(top, #eeeeee 0%,#ffffff 90%);\n}\n\n.select2-container .select2-choice span {\n    margin-right: 26px;\n    display: block;\n    overflow: hidden;\n\n    white-space: nowrap;\n\n    -ms-text-overflow: ellipsis;\n     -o-text-overflow: ellipsis;\n        text-overflow: ellipsis;\n}\n\n.select2-container .select2-choice abbr {\n    display: block;\n    width: 12px;\n    height: 12px;\n    position: absolute;\n    right: 26px;\n    top: 8px;\n\n    font-size: 1px;\n    text-decoration: none;\n\n    border: 0;\n    background: url('../../img/select2/select2.png') right top no-repeat;\n    cursor: pointer;\n    outline: 0;\n}\n.select2-container .select2-choice abbr:hover {\n    background-position: right -11px;\n    cursor: pointer;\n}\n\n.select2-drop-mask {\n    position: absolute;\n    left: 0;\n    top: 0;\n    z-index: 9998;\n    background-color: #fff;\n    opacity: 0;\n    -ms-filter: \"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)\"; /* works in IE 8 */\n        filter: \"alpha(opacity=0)\"; /* expected to work in IE 8 */\n        filter: alpha(opacity=0); /* IE 4-7 */\n}\n\n.select2-drop {\n    width: 100%;\n    margin-top:-1px;\n    position: absolute;\n    z-index: 9999;\n    top: 100%;\n\n    background: #fff;\n    color: #000;\n    border: 1px solid #aaa;\n    border-top: 0;\n\n    -webkit-border-radius: 0 0 4px 4px;\n       -moz-border-radius: 0 0 4px 4px;\n            border-radius: 0 0 4px 4px;\n\n    -webkit-box-shadow: 0 4px 5px rgba(0, 0, 0, .15);\n       -moz-box-shadow: 0 4px 5px rgba(0, 0, 0, .15);\n            box-shadow: 0 4px 5px rgba(0, 0, 0, .15);\n}\n\n.select2-drop.select2-drop-above {\n    margin-top: 1px;\n    border-top: 1px solid #aaa;\n    border-bottom: 0;\n\n    -webkit-border-radius: 4px 4px 0 0;\n       -moz-border-radius: 4px 4px 0 0;\n            border-radius: 4px 4px 0 0;\n\n    -webkit-box-shadow: 0 -4px 5px rgba(0, 0, 0, .15);\n       -moz-box-shadow: 0 -4px 5px rgba(0, 0, 0, .15);\n            box-shadow: 0 -4px 5px rgba(0, 0, 0, .15);\n}\n\n.select2-container .select2-choice div {\n    display: block;\n    width: 18px;\n    height: 100%;\n    position: absolute;\n    right: 0;\n    top: 0;\n\n    border-left: 1px solid #aaa;\n    -webkit-border-radius: 0 4px 4px 0;\n       -moz-border-radius: 0 4px 4px 0;\n            border-radius: 0 4px 4px 0;\n\n    -webkit-background-clip: padding-box;\n       -moz-background-clip: padding;\n            background-clip: padding-box;\n\n    background: #ccc;\n    background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #ccc), color-stop(0.6, #eee));\n    background-image: -webkit-linear-gradient(center bottom, #ccc 0%, #eee 60%);\n    background-image: -moz-linear-gradient(center bottom, #ccc 0%, #eee 60%);\n    background-image: -o-linear-gradient(bottom, #ccc 0%, #eee 60%);\n    background-image: -ms-linear-gradient(top, #cccccc 0%, #eeeeee 60%);\n    filter: progid:DXImageTransform.Microsoft.gradient(startColorstr = '#eeeeee', endColorstr = '#cccccc', GradientType = 0);\n    background-image: linear-gradient(top, #cccccc 0%, #eeeeee 60%);\n}\n\n.select2-container .select2-choice div b {\n    display: block;\n    width: 100%;\n    height: 100%;\n    background: url('../../img/select2/select2.png') no-repeat 0 1px;\n}\n\n.select2-search {\n    display: inline-block;\n    width: 100%;\n    min-height: 26px;\n    margin: 0;\n    padding-left: 4px;\n    padding-right: 4px;\n\n    position: relative;\n    z-index: 10000;\n\n    white-space: nowrap;\n}\n\n.select2-search-hidden {\n    display: block;\n    position: absolute;\n    left: -10000px;\n}\n\n.select2-search input {\n    width: 100%;\n    height: auto !important;\n    min-height: 26px;\n    padding: 4px 20px 4px 5px;\n    margin: 0;\n\n    outline: 0;\n    font-family: sans-serif;\n    font-size: 1em;\n\n    border: 1px solid #aaa;\n    -webkit-border-radius: 0;\n       -moz-border-radius: 0;\n            border-radius: 0;\n\n    -webkit-box-shadow: none;\n       -moz-box-shadow: none;\n            box-shadow: none;\n\n    background: #fff url('../../img/select2/select2.png') no-repeat 100% -22px;\n    background: url('../../img/select2/select2.png') no-repeat 100% -22px, -webkit-gradient(linear, left bottom, left top, color-stop(0.85, white), color-stop(0.99, #eeeeee));\n    background: url('../../img/select2/select2.png') no-repeat 100% -22px, -webkit-linear-gradient(center bottom, white 85%, #eeeeee 99%);\n    background: url('../../img/select2/select2.png') no-repeat 100% -22px, -moz-linear-gradient(center bottom, white 85%, #eeeeee 99%);\n    background: url('../../img/select2/select2.png') no-repeat 100% -22px, -o-linear-gradient(bottom, white 85%, #eeeeee 99%);\n    background: url('../../img/select2/select2.png') no-repeat 100% -22px, -ms-linear-gradient(top, #ffffff 85%, #eeeeee 99%);\n    background: url('../../img/select2/select2.png') no-repeat 100% -22px, linear-gradient(top, #ffffff 85%, #eeeeee 99%);\n}\n\n.select2-drop.select2-drop-above .select2-search input {\n    margin-top: 4px;\n}\n\n.select2-search input.select2-active {\n    background: #fff url('../../img/select2/select2-spinner.gif') no-repeat 100%;\n    background: url('../../img/select2/select2-spinner.gif') no-repeat 100%, -webkit-gradient(linear, left bottom, left top, color-stop(0.85, white), color-stop(0.99, #eeeeee));\n    background: url('../../img/select2/select2-spinner.gif') no-repeat 100%, -webkit-linear-gradient(center bottom, white 85%, #eeeeee 99%);\n    background: url('../../img/select2/select2-spinner.gif') no-repeat 100%, -moz-linear-gradient(center bottom, white 85%, #eeeeee 99%);\n    background: url('../../img/select2/select2-spinner.gif') no-repeat 100%, -o-linear-gradient(bottom, white 85%, #eeeeee 99%);\n    background: url('../../img/select2/select2-spinner.gif') no-repeat 100%, -ms-linear-gradient(top, #ffffff 85%, #eeeeee 99%);\n    background: url('../../img/select2/select2-spinner.gif') no-repeat 100%, linear-gradient(top, #ffffff 85%, #eeeeee 99%);\n}\n\n.select2-container-active .select2-choice,\n.select2-container-active .select2-choices {\n    border: 1px solid #5897fb;\n    outline: none;\n\n    -webkit-box-shadow: 0 0 5px rgba(0,0,0,.3);\n       -moz-box-shadow: 0 0 5px rgba(0,0,0,.3);\n            box-shadow: 0 0 5px rgba(0,0,0,.3);\n}\n\n.select2-dropdown-open .select2-choice {\n    border-bottom-color: transparent;\n    -webkit-box-shadow: 0 1px 0 #fff inset;\n       -moz-box-shadow: 0 1px 0 #fff inset;\n            box-shadow: 0 1px 0 #fff inset;\n\n    -webkit-border-bottom-left-radius: 0;\n        -moz-border-radius-bottomleft: 0;\n            border-bottom-left-radius: 0;\n\n    -webkit-border-bottom-right-radius: 0;\n        -moz-border-radius-bottomright: 0;\n            border-bottom-right-radius: 0;\n\n    background-color: #eee;\n    background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, white), color-stop(0.5, #eeeeee));\n    background-image: -webkit-linear-gradient(center bottom, white 0%, #eeeeee 50%);\n    background-image: -moz-linear-gradient(center bottom, white 0%, #eeeeee 50%);\n    background-image: -o-linear-gradient(bottom, white 0%, #eeeeee 50%);\n    background-image: -ms-linear-gradient(top, #ffffff 0%,#eeeeee 50%);\n    filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#eeeeee', endColorstr='#ffffff',GradientType=0 );\n    background-image: linear-gradient(top, #ffffff 0%,#eeeeee 50%);\n}\n\n.select2-dropdown-open .select2-choice div {\n    background: transparent;\n    border-left: none;\n    filter: none;\n}\n.select2-dropdown-open .select2-choice div b {\n    background-position: -18px 1px;\n}\n\n/* results */\n.select2-results {\n    max-height: 200px;\n    padding: 0 0 0 4px;\n    margin: 4px 4px 4px 0;\n    position: relative;\n    overflow-x: hidden;\n    overflow-y: auto;\n    -webkit-tap-highlight-color: rgba(0,0,0,0);\n}\n\n.select2-results ul.select2-result-sub {\n    margin: 0;\n}\n\n.select2-results ul.select2-result-sub > li .select2-result-label { padding-left: 20px }\n.select2-results ul.select2-result-sub ul.select2-result-sub > li .select2-result-label { padding-left: 40px }\n.select2-results ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub > li .select2-result-label { padding-left: 60px }\n.select2-results ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub > li .select2-result-label { padding-left: 80px }\n.select2-results ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub > li .select2-result-label { padding-left: 100px }\n.select2-results ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub > li .select2-result-label { padding-left: 110px }\n.select2-results ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub > li .select2-result-label { padding-left: 120px }\n\n.select2-results li {\n    list-style: none;\n    display: list-item;\n    background-image: none;\n}\n\n.select2-results li.select2-result-with-children > .select2-result-label {\n    font-weight: bold;\n}\n\n.select2-results .select2-result-label {\n    padding: 3px 7px 4px;\n    margin: 0;\n    cursor: pointer;\n\n    min-height: 1em;\n\n    -webkit-touch-callout: none;\n      -webkit-user-select: none;\n       -khtml-user-select: none;\n         -moz-user-select: none;\n          -ms-user-select: none;\n              user-select: none;\n}\n\n.select2-results .select2-highlighted {\n    background: #3875d7;\n    color: #fff;\n}\n\n.select2-results li em {\n    background: #feffde;\n    font-style: normal;\n}\n\n.select2-results .select2-highlighted em {\n    background: transparent;\n}\n\n.select2-results .select2-highlighted ul {\n    background: white;\n    color: #000;\n}\n\n\n.select2-results .select2-no-results,\n.select2-results .select2-searching,\n.select2-results .select2-selection-limit {\n    background: #f4f4f4;\n    display: list-item;\n}\n\n/*\ndisabled look for disabled choices in the results dropdown\n*/\n.select2-results .select2-disabled.select2-highlighted {\n    color: #666;\n    background: #f4f4f4;\n    display: list-item;\n    cursor: default;\n}\n.select2-results .select2-disabled {\n  background: #f4f4f4;\n  display: list-item;\n  cursor: default;\n}\n\n.select2-results .select2-selected {\n    display: none;\n}\n\n.select2-more-results.select2-active {\n    background: #f4f4f4 url('../../img/select2/select2-spinner.gif') no-repeat 100%;\n}\n\n.select2-more-results {\n    background: #f4f4f4;\n    display: list-item;\n}\n\n/* disabled styles */\n\n.select2-container.select2-container-disabled .select2-choice {\n    background-color: #f4f4f4;\n    background-image: none;\n    border: 1px solid #ddd;\n    cursor: default;\n}\n\n.select2-container.select2-container-disabled .select2-choice div {\n    background-color: #f4f4f4;\n    background-image: none;\n    border-left: 0;\n}\n\n.select2-container.select2-container-disabled .select2-choice abbr {\n    display: none\n}\n\n\n/* multiselect */\n\n.select2-container-multi .select2-choices {\n    height: auto !important;\n    height: 1%;\n    margin: 0;\n    padding: 0;\n    position: relative;\n\n    border: 1px solid #aaa;\n    cursor: text;\n    overflow: hidden;\n\n    background-color: #fff;\n    background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, color-stop(1%, #eeeeee), color-stop(15%, #ffffff));\n    background-image: -webkit-linear-gradient(top, #eeeeee 1%, #ffffff 15%);\n    background-image: -moz-linear-gradient(top, #eeeeee 1%, #ffffff 15%);\n    background-image: -o-linear-gradient(top, #eeeeee 1%, #ffffff 15%);\n    background-image: -ms-linear-gradient(top, #eeeeee 1%, #ffffff 15%);\n    background-image: linear-gradient(top, #eeeeee 1%, #ffffff 15%);\n}\n\n.select2-locked {\n  padding: 3px 5px 3px 5px !important;\n}\n\n.select2-container-multi .select2-choices {\n    min-height: 26px;\n}\n\n.select2-container-multi.select2-container-active .select2-choices {\n    border: 1px solid #5897fb;\n    outline: none;\n\n    -webkit-box-shadow: 0 0 5px rgba(0,0,0,.3);\n       -moz-box-shadow: 0 0 5px rgba(0,0,0,.3);\n            box-shadow: 0 0 5px rgba(0,0,0,.3);\n}\n.select2-container-multi .select2-choices li {\n    float: left;\n    list-style: none;\n}\n.select2-container-multi .select2-choices .select2-search-field {\n    margin: 0;\n    padding: 0;\n    white-space: nowrap;\n}\n\n.select2-container-multi .select2-choices .select2-search-field input {\n    padding: 5px;\n    margin: 1px 0;\n\n    font-family: sans-serif;\n    font-size: 100%;\n    color: #666;\n    outline: 0;\n    border: 0;\n    -webkit-box-shadow: none;\n       -moz-box-shadow: none;\n            box-shadow: none;\n    background: transparent !important;\n}\n\n.select2-container-multi .select2-choices .select2-search-field input.select2-active {\n    background: #fff url('../../img/select2/select2-spinner.gif') no-repeat 100% !important;\n}\n\n.select2-default {\n    color: #999 !important;\n}\n\n.select2-container-multi .select2-choices .select2-search-choice {\n    padding: 3px 5px 3px 18px;\n    margin: 3px 0 3px 5px;\n    position: relative;\n\n    line-height: 13px;\n    color: #333;\n    cursor: default;\n    border: 1px solid #aaaaaa;\n\n    -webkit-border-radius: 3px;\n       -moz-border-radius: 3px;\n            border-radius: 3px;\n\n    -webkit-box-shadow: 0 0 2px #ffffff inset, 0 1px 0 rgba(0,0,0,0.05);\n       -moz-box-shadow: 0 0 2px #ffffff inset, 0 1px 0 rgba(0,0,0,0.05);\n            box-shadow: 0 0 2px #ffffff inset, 0 1px 0 rgba(0,0,0,0.05);\n\n    -webkit-background-clip: padding-box;\n       -moz-background-clip: padding;\n            background-clip: padding-box;\n\n    -webkit-touch-callout: none;\n      -webkit-user-select: none;\n       -khtml-user-select: none;\n         -moz-user-select: none;\n          -ms-user-select: none;\n              user-select: none;\n\n    background-color: #e4e4e4;\n    filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#eeeeee', endColorstr='#f4f4f4', GradientType=0 );\n    background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, color-stop(20%, #f4f4f4), color-stop(50%, #f0f0f0), color-stop(52%, #e8e8e8), color-stop(100%, #eeeeee));\n    background-image: -webkit-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);\n    background-image: -moz-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);\n    background-image: -o-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);\n    background-image: -ms-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);\n    background-image: linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);\n}\n.select2-container-multi .select2-choices .select2-search-choice span {\n    cursor: default;\n}\n.select2-container-multi .select2-choices .select2-search-choice-focus {\n    background: #d4d4d4;\n}\n\n.select2-search-choice-close {\n    display: block;\n    width: 12px;\n    height: 13px;\n    position: absolute;\n    right: 3px;\n    top: 4px;\n\n    font-size: 1px;\n    outline: none;\n    background: url('../../img/select2/select2.png') right top no-repeat;\n}\n\n.select2-container-multi .select2-search-choice-close {\n    left: 3px;\n}\n\n.select2-container-multi .select2-choices .select2-search-choice .select2-search-choice-close:hover {\n  background-position: right -11px;\n}\n.select2-container-multi .select2-choices .select2-search-choice-focus .select2-search-choice-close {\n    background-position: right -11px;\n}\n\n/* disabled styles */\n.select2-container-multi.select2-container-disabled .select2-choices{\n    background-color: #f4f4f4;\n    background-image: none;\n    border: 1px solid #ddd;\n    cursor: default;\n}\n\n.select2-container-multi.select2-container-disabled .select2-choices .select2-search-choice {\n    padding: 3px 5px 3px 5px;\n    border: 1px solid #ddd;\n    background-image: none;\n    background-color: #f4f4f4;\n}\n\n.select2-container-multi.select2-container-disabled .select2-choices .select2-search-choice .select2-search-choice-close {\n    display: none;\n}\n/* end multiselect */\n\n\n.select2-result-selectable .select2-match,\n.select2-result-unselectable .select2-match {\n    text-decoration: underline;\n}\n\n.select2-offscreen {\n    border: 0;\n    clip: rect(0 0 0 0);\n    height: 1px;\n    margin: -1px;\n    overflow: hidden;\n    padding: 0;\n    position: absolute;\n    width: 1px;\n}\n\n/* Retina-ize icons */\n\n@media only screen and (-webkit-min-device-pixel-ratio: 1.5), only screen and (min-resolution: 144dpi)  {\n  .select2-search input, .select2-search-choice-close, .select2-container .select2-choice abbr, .select2-container .select2-choice div b {\n      background-image: url('../../img/select2/select2x2.png') !important;\n      background-repeat: no-repeat !important;\n      background-size: 60px 40px !important;\n  }\n  .select2-search input {\n      background-position: 100% -21px !important;\n  }\n}\n"
  },
  {
    "path": "public/css/vendor/tipsy.css",
    "content": ".tipsy { font-size: 11px; line-height: 1.4em; position: absolute; padding: 5px; z-index: 100000; }\n  .tipsy-inner { background-color: #000; color: #FFF; max-width: 200px; padding: 5px 8px 4px 8px; text-align: center; }\n\n  /* Rounded corners */\n  .tipsy-inner { border-radius: 3px; -moz-border-radius: 3px; -webkit-border-radius: 3px; }\n  \n  /* Uncomment for shadow */\n  /*.tipsy-inner { box-shadow: 0 0 5px #000000; -webkit-box-shadow: 0 0 5px #000000; -moz-box-shadow: 0 0 5px #000000; }*/\n  \n  .tipsy-arrow { position: absolute; width: 0; height: 0; line-height: 0; border: 5px dashed #000; }\n  \n  /* Rules to colour arrows */\n  .tipsy-arrow-n { border-bottom-color: #000; }\n  .tipsy-arrow-s { border-top-color: #000; }\n  .tipsy-arrow-e { border-left-color: #000; }\n  .tipsy-arrow-w { border-right-color: #000; }\n  \n\t.tipsy-n .tipsy-arrow { top: 0px; left: 50%; margin-left: -5px; border-bottom-style: solid; border-top: none; border-left-color: transparent; border-right-color: transparent; }\n    .tipsy-nw .tipsy-arrow { top: 0; left: 10px; border-bottom-style: solid; border-top: none; border-left-color: transparent; border-right-color: transparent;}\n    .tipsy-ne .tipsy-arrow { top: 0; right: 10px; border-bottom-style: solid; border-top: none;  border-left-color: transparent; border-right-color: transparent;}\n  .tipsy-s .tipsy-arrow { bottom: 0; left: 50%; margin-left: -5px; border-top-style: solid; border-bottom: none;  border-left-color: transparent; border-right-color: transparent; }\n    .tipsy-sw .tipsy-arrow { bottom: 0; left: 10px; border-top-style: solid; border-bottom: none;  border-left-color: transparent; border-right-color: transparent; }\n    .tipsy-se .tipsy-arrow { bottom: 0; right: 10px; border-top-style: solid; border-bottom: none; border-left-color: transparent; border-right-color: transparent; }\n  .tipsy-e .tipsy-arrow { right: 0; top: 50%; margin-top: -5px; border-left-style: solid; border-right: none; border-top-color: transparent; border-bottom-color: transparent; }\n  .tipsy-w .tipsy-arrow { left: 0; top: 50%; margin-top: -5px; border-right-style: solid; border-left: none; border-top-color: transparent; border-bottom-color: transparent; }\n"
  },
  {
    "path": "public/js/dummy.js",
    "content": ";"
  },
  {
    "path": "public/js/kia-metabox.js",
    "content": "/*-----------------------------------------------------------------------------------*/\n/* KIA Metabox scripts\n/*\n/* upload media buttons, sort, repeatable tinyMCE fields \n/* requires jquery 1.7\n/* tested on WordPress 3.3.1\n/*\n/* © Kathy Darling http://www.kathyisawesome.com\n/* 2012-03-07.\n/*\n/* A bit modification to work with Vafpress (http://vafpress.com)\n/*-----------------------------------------------------------------------------------*/\n\nvar KIA_metabox, tinyMCEbackupConfig = null;\n\n;(function ($) {\n\n\tKIA_metabox = {\n\n/*-----------------------------------------------------------------------------------*/\n/* Repeatable TinyMCE-enhanced textareas\n/*-----------------------------------------------------------------------------------*/\n\n\trunTinyMCE: function($textareas) {\n\n\t\t// some settings for a more minimal tinyMCE editor\n\t\ttinyMCEminConfig = {\n\t\t\ttheme : \"advanced\",\n\t\t\tskin:\"wp_theme\",\n\t\t\tmode : \"none\",\n\t\t\tlanguage : \"en\",\n\t\t\ttheme_advanced_resizing:\"1\",\n\t\t\twidth  :\"100%\",\n\t\t\theight : \"250\",\n\t\t\ttheme_advanced_layout_manager : \"SimpleLayout\",\n\t\t\ttheme_advanced_toolbar_location : \"top\",\n\t\t\ttheme_advanced_toolbar_align : \"left\",\n\t\t\ttheme_advanced_buttons1:\"styleselect,formatselect,bold,italic,strikethrough,underline,|,link,unlink,|,forecolor,|undo,redo,|,code\",\n\t\t\ttheme_advanced_buttons2 : \"\",\n\t\t\ttheme_advanced_buttons3 : \"\",\n\t\t\ttheme_advanced_statusbar_location:\"\",\n\t\t\tremove_linebreaks: true,\n\t\t\tplugins:\"safari,inlinepopups,spellchecker,paste,wordpress,tabfocus\"\n\t\t};\n\n\t\tif(tinyMCEbackupConfig === null)\n\t\t{\n\t\t\ttinyMCEbackupConfig  =  $.extend(true, {}, tinyMCE.settings);\n\t\t}\n\n\t\t//store the default settings\n\t\ttry {\n\t\t\ttinyMCEdefaultConfig = $.extend(true, {}, tinyMCE.settings);\n\n\t\t\t//tweak the setting just a litte to set the height and to add an HTML code button (since toggling editors is crazy difficult)\n\t\t\ttinyMCEdefaultConfig.height = \"250\";\n\t\t\ttinyMCEdefaultConfig.theme_advanced_buttons1 = tinyMCEdefaultConfig.theme_advanced_buttons1 + ',|,code';\n\n\t\t} catch(e) {\n\t\t\ttinyMCEdefaultConfig = tinyMCEminConfig;\n\t\t}\n\n\t\t$textareas.each(function(){\n\n\t\t\t//give each a unique ID so we can apply TinyMCE to each \n\t\t\tvar id = $(this).attr('id');\n\t\t\ttry {\n\t\t\t\t//if the customEditor div has the minimal class, serve up the minimal tinyMCE configuration\n\t\t\t\tif($(this).parent().hasClass('minimal')){\n\t\t\t\t\ttinyMCE.settings = tinyMCEminConfig;\n\t\t\t\t} else {\n\t\t\t\t\ttinyMCE.settings = tinyMCEdefaultConfig;\n\t\t\t\t}\n\n\t\t\t\tvar options  = $(this).getDatas();\n\t\t\t\toptions      = vp.parseOpt(options.opt);\n\t\t\t\toptions.use_external_plugins = options.use_external_plugins ? true : false;\n\n\t\t\t\tvar plugins                 = tinyMCE.settings.plugins;\n\t\t\t\tvar theme_advanced_buttons1 = tinyMCE.settings.theme_advanced_buttons1;\n\n\t\t\t\t// remove `wpfullscreen` plugin\n\t\t\t\tplugins                 = plugins.replace(/,wpfullscreen/gm, '');\n\t\t\t\t// remove `wp_fullscreen` button\n\t\t\t\ttheme_advanced_buttons1 = theme_advanced_buttons1.replace(/wp_fullscreen/gm, '');\n\n\t\t\t\tif(options.use_external_plugins === false)\n\t\t\t\t{\n\t\t\t\t\tplugins = plugins.replace(/\\-(.*?)(,|$)+?/gm, '');\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tvar dep = options.disabled_externals_plugins,\n\t\t\t\t\t    dip = options.disabled_internals_plugins,\n\t\t\t\t\t\treg;\n\n\t\t\t\t\tdep = dep.trim();\n\t\t\t\t\tdep = dep.split(/[\\s,]+/).join(\"|\");\n\t\t\t\t\tif(dep !== \"\")\n\t\t\t\t\t{\n\t\t\t\t\t\treg = new RegExp('\\\\-(' + dep + ')(,|$)+?', 'gmi');\n\t\t\t\t\t\tplugins = plugins.replace(reg, '');\n\t\t\t\t\t}\n\n\t\t\t\t\tdip = dip.trim();\n\t\t\t\t\tdip = dip.split(/[\\s,]+/).join(\"|\");\n\t\t\t\t\tif(dip !== \"\")\n\t\t\t\t\t{\n\t\t\t\t\t\treg = new RegExp('\\\\-(' + dip + ')(,|$)+?', 'gmi');\n\t\t\t\t\t\tplugins = plugins.replace(reg, '');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\ttinyMCE.settings.plugins                 = plugins;\n\t\t\t\ttinyMCE.settings.theme_advanced_buttons1 = theme_advanced_buttons1;\n\n\t\t\t\ttinyMCE.execCommand('mceAddEditor', false, id);\n\t\t\t} catch(e){}\n\n\t\t});\n\t\t// restore default settings\n\t\ttinyMCE.settings = $.extend(true, {}, tinyMCEbackupConfig);\n\n\t} , //end runTinyMCE text areas \n\n/*-----------------------------------------------------------------------------------*/\n/* Custom Media Upload Buttons for tinyMCE textareas\n/*-----------------------------------------------------------------------------------*/\n\n\tmediaButtons: function() {\n\n\t\t$('body').on('click','.custom_upload_buttons a',function(){\n\t\t\ttextarea = $(this).closest('.customEditor').find('textarea');\n\t\t\tmceID = textarea.attr('id');\n\t\t\tkia_backup = window.send_to_editor; // backup the original 'send_to_editor' function\n\t\t\twindow.send_to_editor = window.send_to_editor_clone;\n\t\t});\n\n\t\t//borrow the send to editor function\n\t\twindow.send_to_editor_clone = function(html){\n\n\t\t\ttry {\n\t\t\t\ttinyMCE.get(mceID).insertContent(html);\n\t\t\t} catch(e) {\n\t\t\t\t$(textarea).insertAtCaret(html);\n\t\t\t}\n\n\t\t\ttb_remove();\n\n\t\t\t// restore the default behavior\n\t\t\twindow.send_to_editor = kia_backup;\n\t\t};\n\n\t}, //end mediaButtons\n\n\t}; // End KIA_metabox Object // Don't remove this, or the sky will fall on your head.\n\n})(jQuery);\n\n// jQuery insertAtCaret plugin\n// http://stackoverflow.com/questions/946534/insert-text-into-textarea-with-jquery#answer-2819568\nif(!jQuery.fn.insertAtCaret)\n{\n\tjQuery.fn.extend({\n\t\tinsertAtCaret: function(myValue){\n\t\t\treturn this.each(function(i) {\n\t\t\t\tif (document.selection) {\n\t\t\t\t\t//For browsers like Internet Explorer\n\t\t\t\t\tthis.focus();\n\t\t\t\t\tsel = document.selection.createRange();\n\t\t\t\t\tsel.text = myValue;\n\t\t\t\t\tthis.focus();\n\t\t\t\t}\n\t\t\t\telse if (this.selectionStart || this.selectionStart == '0') {\n\t\t\t\t\t//For browsers like Firefox and Webkit based\n\t\t\t\t\tvar startPos = this.selectionStart;\n\t\t\t\t\tvar endPos = this.selectionEnd;\n\t\t\t\t\tvar scrollTop = this.scrollTop;\n\t\t\t\t\tthis.value = this.value.substring(0, startPos)+myValue+this.value.substring(endPos,this.value.length);\n\t\t\t\t\tthis.focus();\n\t\t\t\t\tthis.selectionStart = startPos + myValue.length;\n\t\t\t\t\tthis.selectionEnd = startPos + myValue.length;\n\t\t\t\t\tthis.scrollTop = scrollTop;\n\t\t\t\t} else {\n\t\t\t\t\tthis.value += myValue;\n\t\t\t\t\tthis.focus();\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n}"
  },
  {
    "path": "public/js/metabox.js",
    "content": ";(function($) {\n\n\t\"use strict\";\n\n\tvar validation    = [];\n\tvar bindings      = [];\n\tvar items_binding = [];\n\tvar dependencies  = [];\n\n\t$(document).on('click', '.vp-wpa-group-title', function(e){\n\t\te.preventDefault();\n\t\tvar group     = $(this).parents('.wpa_group:first');\n\t\tvar control   = group.find('.vp-controls:first');\n\t\tvar siblings  = group.siblings('.wpa_group:not(.tocopy)');\n\t\tvar container = $('html, body');\n\t\tif(control.hasClass('vp-hide'))\n\t\t{\n\t\t\tif(siblings.exists())\n\t\t\t{\n\t\t\t\tsiblings.each(function(i, el){\n\t\t\t\t\t$(this).find('.vp-controls').first().slideUp('fast', function() {\n\t\t\t\t\t\t$(this).addClass('vp-hide')\n\t\t\t\t\t\t.slideDown(0, function(){\n\t\t\t\t\t\t\tif(i == siblings.length - 1)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tcontainer.animate({\n\t\t\t\t\t\t\t\t\tscrollTop: group.offset().top - $('#wpadminbar').height()\n\t\t\t\t\t\t\t\t}).promise().done(function(){\n\t\t\t\t\t\t\t\t\tcontrol.slideUp(0,function() {\n\t\t\t\t\t\t\t\t\t\t$(this).removeClass('vp-hide')\n\t\t\t\t\t\t\t\t\t\t.slideDown('fast');\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tcontainer.animate({\n\t\t\t\t\tscrollTop: group.offset().top - $('#wpadminbar').height()\n\t\t\t\t}).promise().done(function(){\n\t\t\t\t\tcontrol.slideUp(0,function() {\n\t\t\t\t\t\t$(this).removeClass('vp-hide')\n\t\t\t\t\t\t.slideDown('fast');\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\tcontrol.slideUp('fast', function() {\n\t\t\t\t$(this).addClass('vp-hide')\n\t\t\t\t.slideDown(0);\n\t\t\t});\n\t\t}\n\t\treturn false;\n\t});\n\n\tfunction vp_init_fields($elements)\n\t{\n\t\t$elements.each(function(){\n\t\t\tif($(this).parents('.tocopy').length <= 0)\n\t\t\t{\n\t\t\t\tvp.init_controls($(this));\n\n\t\t\t\tvar id         = $(this).attr('id'),\n\t\t\t\t\tname       = $(this).attr('id'),\n\t\t\t\t\trules      = $(this).attr('data-vp-validation'),\n\t\t\t\t\tbind       = $(this).attr('data-vp-bind'),\n\t\t\t\t\titems_bind = $(this).attr('data-vp-items-bind'),\n\t\t\t\t\tdep        = $(this).attr('data-vp-dependency'),\n\t\t\t\t\ttype       = $(this).getDatas().type;\n\n\t\t\t\t// init validation\n\t\t\t\trules && validation.push({name: id, rules: rules, type: type});\n\t\t\t\t// init binding\n\t\t\t\tif(typeof bind !== 'undefined' && bind !== false)\n\t\t\t\t{\n\t\t\t\t\tbind && bindings.push({bind: bind, type: type, source: id});\n\t\t\t\t}\n\t\t\t\t// init items binding\n\t\t\t\tif(typeof items_bind !== 'undefined' && items_bind !== false)\n\t\t\t\t{\n\t\t\t\t\titems_bind && items_binding.push({bind: items_bind, type: type, source: id});\n\t\t\t\t}\n\t\t\t\t// init dependancies\n\t\t\t\tif(typeof dep !== 'undefined' && dep !== false)\n\t\t\t\t{\n\t\t\t\t\tdep && dependencies.push({dep: dep, type: 'field', source: id});\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\tfunction vp_init_groups($elements)\n\t{\n\t\t$elements.each(function(){\n\t\t\tif($(this).parents('.tocopy').length <= 0 && !$(this).hasClass('.tocopy'))\n\t\t\t{\n\t\t\t\tvar dep  = $(this).attr('data-vp-dependency'),\n\t\t\t\t\ttype = $(this).getDatas().type,\n\t\t\t\t\tid   = $(this).attr('id');\n\t\t\t\tif(typeof dep !== 'undefined' && dep !== false)\n\t\t\t\t{\n\t\t\t\t\tdep && dependencies.push({dep: dep, type: 'section', source: id});\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\tfunction vp_mb_sortable()\n\t{\n\t\tvar textareaIDs = [];\n\t\t$('.wpa_loop.vp-sortable').sortable({\n\t\t\titems: '>.wpa_group',\n\t\t\thandle: '.vp-wpa-group-heading',\n\t\t\taxis: 'y',\n\t\t\topacity: 0.5,\n\t\t\ttolerance: 'pointer',\n\t\t\tstart: function(event, ui) { // turn TinyMCE off while sorting (if not, it won't work when resorted)\n\t\t\t\tif(typeof window.KIA_metabox !== 'undefined')\n\t\t\t\t{\n\t\t\t\t\ttextareaIDs = [];\n\t\t\t\t\tvp.tinyMCE_save();\n\t\t\t\t\t$(ui.item).find('.customEditor textarea').each(function(){\n\t\t\t\t\t\tif($(this).parents('.tocopy').length <= 0)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttry { tinyMCE.execCommand('mceRemoveControl', false, this.id); } catch(e){}\n\t\t\t\t\t\t\ttextareaIDs.push(vp.jqid(this.id));\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\t\t\tstop: function(event, ui) { // re-initialize TinyMCE when sort is completed\n\t\t\t\tif(typeof window.KIA_metabox !== 'undefined')\n\t\t\t\t{\n\t\t\t\t\tfor (var i = textareaIDs.length - 1; i >= 0; i--) {\n\t\t\t\t\t\tvar $textarea = $(textareaIDs[i]);\n\t\t\t\t\t\t$textarea.val(switchEditors.wpautop($textarea.val()));\n\t\t\t\t\t}\n\t\t\t\t\ttextareaIDs = textareaIDs.join(\", \");\n\t\t\t\t\ttry {\n\t\t\t\t\t\tKIA_metabox.runTinyMCE($(textareaIDs));\n\t\t\t\t\t\tvp.tinyMCE_save();\n\t\t\t\t\t\tfor (var i = textareaIDs.length - 1; i >= 0; i--) {\n\t\t\t\t\t\t\tvar $textarea = $(textareaIDs[i]);\n\t\t\t\t\t\t\t$textarea.val(switchEditors.pre_wpautop($textarea.val()));\n\t\t\t\t\t\t}\n\t\t\t\t\t} catch(e){}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\t$(document).ready(function () {\n\t\tvp_init_fields(jQuery('.vp-metabox .vp-field'));\n\t\tvp_init_groups(jQuery('.vp-metabox .vp-meta-group'));\n\t\tprocess_binding(bindings);\n\t\tprocess_items_binding(items_binding);\n\t\tprocess_dependency(dependencies);\n\t\tvp_mb_sortable();\n\t});\n\n\tvp.is_multianswer = function(type){\n\t\tvar multi = ['vp-checkbox', 'vp-checkimage', 'vp-multiselect'];\n\t\tif(jQuery.inArray(type, multi) !== -1 )\n\t\t{\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t};\n\n\t// image controls event bind\n\tvp.custom_check_radio_event(\".vp-metabox\", \".vp-field.vp-checkimage .field .input label\");\n\tvp.custom_check_radio_event(\".vp-metabox\", \".vp-field.vp-radioimage .field .input label\");\n\n\t// Bind event to WP publish button to process metabox validation\n\t$('#post').on( 'submit', function(e){\n\n\t\tvar submitter = $(\"input[type=submit][clicked=true]\"),\n\t\t    action    = submitter.val(),\n\t\t    errors    = 0;\n\n\t\t// update tinyMCE textarea content\n\t\tvp.tinyMCE_save();\n\n\t\t$('.vp-field').removeClass('vp-error');\n\t\t$('.validation-msg.vp-error').remove();\n\t\t$('.vp-metabox-error').remove();\n\n\t\terrors = vp.fields_validation_loop(validation);\n\n\t\tif(errors > 0)\n\t\t{\n\t\t\t$notif = $('<span class=\"vp-metabox-error vp-js-tipsy\" original-title=\"' + errors + ' error(s) found in metabox\"></span>');\n\n\t\t\tif(action === 'Save Draft')\n\t\t\t{\n\t\t\t\t$('#minor-publishing-actions .spinner, #minor-publishing-actions .ajax-loading').hide();\n\t\t\t\t$notif.tipsy();\n\t\t\t\t$notif.insertAfter('#minor-publishing-actions .spinner, #minor-publishing-actions .ajax-loading');\n\t\t\t\t$('#save-post').prop('disabled', false).removeClass('button-disabled');\n\t\t\t}\n\t\t\telse if(action === 'Publish' || action === 'Update')\n\t\t\t{\n\t\t\t\t$('#publishing-action .spinner, #publishing-action .ajax-loading').hide();\n\t\t\t\t$notif.tipsy();\n\t\t\t\t$notif.insertAfter('#publishing-action .spinner, #publishing-action .ajax-loading');\n\t\t\t\t$('#publish').prop('disabled', false).removeClass('button-primary-disabled');\n\t\t\t}\n\n\t\t\tvar margin_top = Math.ceil((submitter.outerHeight() - $notif.height()) / 2);\n\t\t\tif(margin_top > 0)\n\t\t\t\t$notif.css('margin-top', margin_top);\n\t\t\te.preventDefault();\n\t\t\treturn;\n\t\t}\n\n\t\t// add hidden field before toggle to force submit\n\t\t$(this).find('.vp-toggle .vp-input').each(function(){\n\t\t\tvar hidden = $('<input>', {type: 'hidden', name: this.name, value: 0});\n\t\t\t$(this).before(hidden);\n\t\t});\n\n\t});\n\n\t$(\"#post input[type=submit]\").click(function() {\n\t\t$(\"input[type=submit]\", $(this).parents(\"form\")).removeAttr(\"clicked\");\n\t\t$(this).attr(\"clicked\", \"true\");\n\t});\n\n\tfunction process_binding(bindings)\n\t{\n\t\tfor (var i = 0; i < bindings.length; i++)\n\t\t{\n\t\t\tvar field   = bindings[i];\n\t\t\tvar temp    = field.bind.split('|');\n\t\t\tvar func    = temp[0];\n\t\t\tvar dest    = temp[1];\n\t\t\tvar ids     = [];\n\n\t\t\tvar prefix  = '';\n\t\t\tprefix      = field.source.replace('[]', '');\n\t\t\tprefix      = prefix.substring(0, prefix.lastIndexOf('['));\n\n\t\t\tdest = dest.split(/[\\s,]+/);\n\n\t\t\tfor (var j = 0; j < dest.length; j++)\n\t\t\t{\n\t\t\t\tdest[j] = prefix + '[' + dest[j] + ']';\n\t\t\t\tids.push(dest[j]);\n\t\t\t}\n\n\t\t\tfor (j = 0; j < ids.length; j++)\n\t\t\t{\n\t\t\t\tvp.binding_event(ids, j, field, func, '.vp-metabox', 'metabox');\n\t\t\t}\n\t\t}\n\t}\n\n\tfunction process_items_binding(items_binding)\n\t{\n\t\tfor (var i = 0; i < items_binding.length; i++)\n\t\t{\n\t\t\tvar field   = items_binding[i];\n\t\t\tvar temp    = field.bind.split('|');\n\t\t\tvar func    = temp[0];\n\t\t\tvar dest    = temp[1];\n\t\t\tvar ids     = [];\n\n\t\t\tvar prefix  = '';\n\t\t\tprefix      = field.source.replace('[]', '');\n\t\t\tprefix      = prefix.substring(0, prefix.lastIndexOf('['));\n\n\t\t\tdest = dest.split(/[\\s,]+/);\n\n\t\t\tfor (var j = 0; j < dest.length; j++)\n\t\t\t{\n\t\t\t\tdest[j] = prefix + '[' + dest[j] + ']';\n\t\t\t\tids.push(dest[j]);\n\t\t\t}\n\n\t\t\tfor (j = 0; j < ids.length; j++)\n\t\t\t{\n\t\t\t\tvp.items_binding_event(ids, j, field, func, '.vp-metabox', 'metabox');\n\t\t\t}\n\t\t}\n\t}\n\n\tfunction process_dependency(dependencies)\n\t{\n\t\tfor (var i = 0; i < dependencies.length; i++)\n\t\t{\n\t\t\tvar field  = dependencies[i];\n\t\t\tvar temp   = field.dep.split('|');\n\t\t\tvar func   = temp[0];\n\t\t\tvar dest   = temp[1];\n\t\t\tvar ids    = [];\n\t\t\tvar prefix = '';\n\n\t\t\tif(field.type === 'field')\n\t\t\t{\n\t\t\t\t// strip [] (which multiple option field has)\n\t\t\t\tprefix = field.source.replace('[]', '');\n\t\t\t\tprefix = prefix.substring(0, prefix.lastIndexOf('['));\n\t\t\t}\n\t\t\telse if(field.type === 'section')\n\t\t\t{\n\t\t\t\tvar $source = jQuery(vp.jqid(field.source));\n\t\t\t\tif($source.parents('.wpa_group').length > 0)\n\t\t\t\t{\n\t\t\t\t\tprefix = jQuery(vp.jqid(field.source)).parents('.wpa_group').first().attr('id');\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\t// get the closest 'postbox' class parent id\n\t\t\t\t\tprefix = jQuery(vp.jqid(field.source)).parents('.postbox').attr('id');\n\t\t\t\t\t// strip the '_metabox'\n\t\t\t\t\tprefix = prefix.substring(0, prefix.lastIndexOf('_'));\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tdest = dest.split(',');\n\n\t\t\tfor (var j = 0; j < dest.length; j++)\n\t\t\t{\n\t\t\t\tdest[j] = prefix + '[' + dest[j] + ']';\n\t\t\t\tids.push(dest[j]);\n\t\t\t}\n\n\t\t\tfor (j = 0; j < ids.length; j++)\n\t\t\t{\n\t\t\t\tvp.dependency_event(ids, j, field, func, '.vp-metabox');\n\t\t\t}\n\t\t}\n\t}\n\n\t$.wpalchemy.on('wpa_copy', function(event, clone){\n\n\t\tbindings      = [];\n\t\tdependencies  = [];\n\t\titems_binding  = [];\n\n\t\t// delete tocopy hidden field\n\t\tclone.find('input[class=\"tocopy-hidden\"]').first().remove();\n\n\t\tvp_init_fields(clone.find('.vp-field'));\n\t\tvp_init_groups(clone.find('.vp-meta-group'));\n\n\t\tclone.find('.vp-wpa-group-title:first').click();\n\n\t\tprocess_binding(bindings);\n\t\tprocess_items_binding(items_binding);\n\t\tprocess_dependency(dependencies);\n\t});\n\n}(jQuery));"
  },
  {
    "path": "public/js/option.js",
    "content": ";(function($) {\n\n\t\"use strict\";\n\n\t// jQuery hacks\n\tvar _addClass = $.fn.addClass;\n\t$.fn.addClass = function() {\n\t\tvar result = _addClass.apply( this, arguments );\n\t\tif (this.prop('tagName') == 'BODY' && arguments[0] == 'folded') { calculatePositionAndSize(); }\n\t\treturn result;\n\t};\n\tvar _removeClass = $.fn.removeClass;\n\t$.fn.removeClass = function() {\n\t\tvar result = _removeClass.apply( this, arguments );\n\t\tif (this.prop('tagName') == 'BODY' && arguments[0] == 'folded') { calculatePositionAndSize(); }\n\t\treturn result;\n\t};\n\n\tvar is_ie      = $.browser.msie;\n\tvar ie_version = 0;\n\n\tif(is_ie)\n\t{\n\t\tie_version = jQuery.browser.version;\n\t\tie_version = parseFloat(ie_version);\n\t}\n\n\t// custom checkbox and radiobutton event binding\n\tvp.custom_check_radio_event(\".vp-wrap\", \".vp-field.vp-checked-field .field .input label\");\n\n\t$(document).on('ready', function(){\n\t\tvp.init_controls($('.vp-wrap'));\n\t});\n\n\t/* BEGIN FETCHING ALL FIELDS' VALIDATION and BINDING RULES */\n\tvar validation    = [];\n\tvar bindings      = [];\n\tvar items_binding = [];\n\tvar dependencies  = [];\n\tvar dep;\n\t$('.vp-menu-goto').each(function(i) {\n\t\tvar href = $(this).attr('href'),\n\t\t    $panel = $(href),\n\t\t    fields = [];\n\n\t\t$panel.children('.vp-field').each(function(j) {\n\t\t\t\tvar $field = $(this),\n\t\t\t\tname       = $field.attr('id'),\n\t\t\t\trules      = $field.attr('data-vp-validation'),\n\t\t\t\tbind       = $field.attr('data-vp-bind'),\n\t\t\t\titems_bind = $field.attr('data-vp-items-bind'),\n\t\t\t\ttype       = $field.getDatas().type,\n\t\t\t\t$input     = $('[name=\"' + name + '\"]');\n\n\t\t\tdep = $field.attr('data-vp-dependency');\n\n\t\t\tdep         && dependencies.push({dep: dep, type: 'field', source: $field.attr('id')});\n\t\t\tbind        && bindings.push({bind: bind, type: type, source: name});\n\t\t\titems_bind  && items_binding.push({bind: items_bind, type: type, source: name});\n\t\t\trules       && fields.push({name: name, rules: rules, type: type});\n\t\t});\n\n\t\t$panel.children('.vp-section').each(function(i) {\n\t\t\tvar $section = $(this);\n\n\t\t\tdep = $section.attr('data-vp-dependency');\n\t\t\tdep && dependencies.push({dep: dep, type: 'section', source: $section.attr('id')});\n\n\t\t\t$section.find('.vp-field').each(function(j) {\n\t\t\t\tvar $field     = $(this),\n\t\t\t\t\tname       = $field.attr('id'),\n\t\t\t\t\trules      = $field.attr('data-vp-validation'),\n\t\t\t\t\tbind       = $field.attr('data-vp-bind'),\n\t\t\t\t\titems_bind = $field.attr('data-vp-items-bind'),\n\t\t\t\t\ttype       = $field.getDatas().type,\n\t\t\t\t\t$input     = $('[name=\"' + name + '\"]');\n\n\t\t\t\tdep = $field.attr('data-vp-dependency');\n\n\t\t\t\tdep         && dependencies.push({dep: dep, type: 'field', source: $field.attr('id')});\n\t\t\t\tbind        && bindings.push({bind: bind, type: type, source: name});\n\t\t\t\titems_bind  && items_binding.push({bind: items_bind, type: type, source: name});\n\t\t\t\trules       && fields.push({name: name, rules: rules, type: type});\n\n\t\t\t});\n\t\t});\n\n\t\tif (fields.length > 0) validation.push({ name: href.trimChar('#'), fields: fields });\n\t});\n\t/* END FETCHING ALL FIELDS' VALIDATION and BINDING RULES */\n\n\t// get and click current hash\n\t$('.vp-js-menu-goto').click(function(e) {\n\t\te.preventDefault();\n\t\t// add `_` prefix\n\t\twindow.location.hash = '#_' + $(this).attr('href').substr(1);\n\t\tvar $this     = $(this),\n\t\t    $li       = $this.parent('li'),\n\t\t    $parent   = $li.parents('li'),\n\t\t    $siblings = $li.siblings('li'),\n\t\t    $parent_siblings = $parent.siblings('li'),\n\t\t    $panel    = $($this.attr('href'));\n\t\t$siblings.removeClass('vp-current');\n\t\t$parent_siblings.removeClass('vp-current');\n\t\t$parent.addClass('vp-current');\n\t\t$li.addClass('vp-current');\n\t\t$panel.siblings('.vp-panel').removeClass('vp-current');\n\t\t$panel.addClass('vp-current');\n\t});\n\n\t// goto current menu\n\tvar hash = window.location.hash;\n\tif (hash !== '')\n\t{\n\t\t// remove `_` prefix\n\t\thash = '#' + hash.substr(2);\n\t\t$('a[href=\"' + hash + '\"]').trigger('click');\n\t}\n\telse\n\t{\n\t\t$('.vp-current > .vp-js-menu-goto').click();\n\t}\n\n\t$('.vp-js-menu-dropdown').click(function(e) {\n\t\te.preventDefault();\n\t\tvar $this = $(this),\n\t\t    $parent = $this.parent('li'),\n\t\t    $li = $parent.siblings('li'),\n\t\t    $sub = $this.next('ul');\n\t\tif ($parent.hasClass('vp-current')) return;\n\t\t$li.removeClass('vp-current');\n\t\t$parent.addClass('vp-current');\n\t\tif($sub.children('li.vp-current').exists())\n\t\t\t$sub.children('li.vp-current').children('a').click();\n\t\telse\n\t\t\t$sub.children('li').first().children('a').click();\n\t});\n\n\t// Bindings\n\tfor (var i = 0; i < bindings.length; i++)\n\t{\n\t\tvar field = bindings[i],\n\t\t    temp  = field.bind.split('|'),\n\t\t    func  = temp[0],\n\t\t    dest  = temp[1],\n\t\t    ids   = [];\n\n\t\tdest = dest.split(/[\\s,]+/);\n\n\t\tfor (var j = 0; j < dest.length; j++)\n\t\t{\n\t\t\tids.push(dest[j]);\n\t\t}\n\n\t\tfor (var j = 0; j < ids.length; j++)\n\t\t{\n\t\t\tvp.binding_event(ids, j, field, func, '.vp-wrap', 'option');\n\t\t}\n\t}\n\t/* ============================================================ */\n\n\t// Items Binding\n\tfor (var i = 0; i < items_binding.length; i++)\n\t{\n\t\tvar field = items_binding[i],\n\t\t    temp  = field.bind.split('|'),\n\t\t    func  = temp[0],\n\t\t    dest  = temp[1],\n\t\t    ids   = [];\n\n\t\tdest = dest.split(/[\\s,]+/);\n\n\t\tfor (var j = 0; j < dest.length; j++)\n\t\t{\n\t\t\tids.push(dest[j]);\n\t\t}\n\n\t\tfor (var j = 0; j < ids.length; j++)\n\t\t{\n\t\t\tvp.items_binding_event(ids, j, field, func, '.vp-wrap', 'option');\n\t\t}\n\t}\n\t/* ============================================================ */\n\n\t// DEPENDENCY\n\tfor (var i = 0; i < dependencies.length; i++)\n\t{\n\t\tvar field = dependencies[i],\n\t\t    temp  = field.dep.split('|'),\n\t\t    func  = temp[0],\n\t\t    dest  = temp[1],\n\t\t    ids   = [];\n\n\t\tdest = dest.split(',');\n\n\t\tfor (var j = 0; j < dest.length; j++)\n\t\t{\n\t\t\tids.push(dest[j]);\n\t\t}\n\n\t\tfor (var j = 0; j < ids.length; j++)\n\t\t{\n\t\t\tvp.dependency_event(ids, j, field, func, '.vp-wrap');\n\t\t}\n\t}\n\n\t// Ajax Saving\n\t$('.vp-js-option-form').bind('submit', function(e) {\n\t\te.preventDefault();\n\t\t\n\t\t// update tinyMCE textarea content\n\t\tvp.tinyMCE_save();\n\n\t\t$('.vp-js-option-form .vp-field').removeClass('vp-error');\n\t\t$('.validation-notif.vp-error').remove();\n\t\t$('.validation-msg.vp-error').remove();\n\n\t\tvar allError = 0,\n\t\t    menuNotifHTML = '<em class=\"validation-notif vp-error\"></em>';\n\n\t\tfor (var i=0; i<validation.length; i++)\n\t\t{\n\t\t\tvar panel = validation[i];\n\n\t\t\tpanel.nError = 0;\n\t\t\tpanel.nError = vp.fields_validation_loop(panel.fields);\n\n\t\t\tif (panel.nError > 0)\n\t\t\t{\n\t\t\t\t// notify the menu which has the href\n\t\t\t\tvar $notif  = $(menuNotifHTML),\n\t\t\t\t    $anchor = $('[href=\"#' + panel.name +'\"]'),\n\t\t\t\t    $grandparent = $anchor.parent('li').parent('ul');\n\t\t\t\t$notif.appendTo($anchor);\n\t\t\t\tif ($grandparent.hasClass('vp-menu-level-2'))\n\t\t\t\t{\n\t\t\t\t\tif ($grandparent.siblings('a').children('.validation-notif.vp-error').length === 0)\n\t\t\t\t\t{\n\t\t\t\t\t\t$notif.clone().appendTo($grandparent.siblings('a'));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tallError = allError + panel.nError;\n\t\t}\n\n\t\t// do not saving it any error occurs\n\t\tif (allError > 0) { return; }\n\n\t\t// otherwise, do saving\n\t\tvar $loading = $('.vp-js-save-loader'),\n\t\t\t$button = $(this).find('.vp-save'),\n\t\t\t$save_status = $('.vp-js-save-status'),\n\t\t\t$form = $('#vp-option-form'),\n\t\t\toption = $form.serializeArray(),\n\t\t\tdata = {\n\t\t\t\taction: 'vp_ajax_' + vp_opt.name + '_save',\n\t\t\t\toption: option,\n\t\t\t\tnonce : vp_opt.nonce\n\t\t\t};\n\n\t\t$button.attr('disabled', 'disabled');\n\t\t$loading.stop(true, true).fadeIn(100);\n\n\t\t$.post(ajaxurl, data, function(response) {\n\t\t\t$save_status.html(response.message);\n\t\t\tif (response.status)\n\t\t\t{\n\t\t\t\t$save_status.addClass('success');\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t$save_status.addClass('failed');\n\t\t\t}\n\t\t\t$loading.stop(true, true).fadeOut(100, function() {\n\t\t\t\t$save_status.stop(true, true).fadeIn(100);\n\t\t\t});\n\n\t\t\tsetTimeout(function() {\n\t\t\t\t$button.removeAttr('disabled');\n\t\t\t\t$save_status.stop(true, true).fadeOut(1000, function() {\n\t\t\t\t\t$save_status.removeClass('success').removeClass('failed');\n\t\t\t\t});\n\t\t\t}, 3000);\n\t\t}, 'JSON');\n\n\t});\n\n\t$('.vp-js-restore').bind('click', function(e) {\n\t\te.preventDefault();\n\n\t\tif (!confirm('The current options will be deleted, do you want to proceed?'))\n\t\t\treturn;\n\n\t\tvar $button = $(this),\n\t\t    $parent = $button.parent(),\n\t\t    $status = $parent.find('.vp-js-status'),\n\t\t    $loader = $parent.find('.vp-js-loader'),\n\t\t    data    = {action: 'vp_ajax_' + vp_opt.name + '_restore', nonce : vp_opt.nonce};\n\n\t\t$button.attr('disabled', 'disabled');\n\t\t$loader.fadeIn(100);\n\n\t\t$.post(ajaxurl, data, function(response) {\n\t\t\t$loader.fadeOut(0);\n\t\t\tswitch(response.code)\n\t\t\t{\n\t\t\t\tcase parseInt(vp_opt.SAVE_SUCCESS):\n\t\t\t\t\t$status.html(vp_opt.util_msg.restore_success);\n\t\t\t\t\tbreak;\n\t\t\t\tcase parseInt(vp_opt.SAVE_NOCHANGES):\n\t\t\t\t\t$status.html(vp_opt.util_msg.restore_nochanges);\t\n\t\t\t\t\tbreak;\n\t\t\t\tcase parseInt(vp_opt.SAVE_FAILED):\n\t\t\t\t\t$status.html(vp_opt.util_msg.restore_failed + ': ' + response.message);\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\t$status.fadeIn(100);\n\t\t\tsetTimeout(function() {\n\t\t\t\t$status.fadeOut(1000, function() {\n\t\t\t\t\t$button.removeAttr('disabled');\n\t\t\t\t\t$status.fadeOut(500);\n\t\t\t\t\tif (response.code == parseInt(vp_opt.SAVE_SUCCESS))\n\t\t\t\t\t\tlocation.reload();\n\t\t\t\t});\n\t\t\t}, 2000);\n\t\t}, 'JSON');\n\t});\n\n\t$('#vp-js-import').bind('click', function(e) {\n\t\te.preventDefault();\n\n\t\tvar $textarea      = $('#vp-js-import_text'),\n\t\t    $import_status = $('#vp-js-import-status'),\n\t\t    $import_loader = $('#vp-js-import-loader'),\n\t\t    $button        = $(this),\n\t\t    data           = {action: 'vp_ajax_' + vp_opt.name + '_import_option', option: $textarea.val(), nonce : vp_opt.nonce};\n\n\t\t$button.attr('disabled', 'disabled');\n\t\t$import_loader.fadeIn(100);\n\n\t\t$.post(ajaxurl, data, function(response) {\n\t\t\t$import_loader.fadeOut(0);\n\t\t\tif (response.status)\n\t\t\t{\n\t\t\t\t$import_status.html(vp_opt.util_msg.import_success);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t$import_status.html(vp_opt.util_msg.import_failed + ': ' + response.message);\n\t\t\t}\n\t\t\t$import_status.fadeIn(100);\n\t\t\tsetTimeout(function() {\n\t\t\t\t$import_status.fadeOut(1000, function() {\n\t\t\t\t\t$button.removeAttr('disabled');\n\t\t\t\t\t$import_status.fadeOut(500);\n\t\t\t\t\tif (response.status)\n\t\t\t\t\t\tlocation.reload();\n\t\t\t\t});\n\t\t\t}, 2000);\n\t\t}, 'JSON');\n\t});\n\n\t$('#vp-js-export').bind('click', function(e) {\n\t\te.preventDefault();\n\n\t\tvar $export_status = $('#vp-js-export-status'),\n\t\t    $export_loader = $('#vp-js-export-loader'),\n\t\t    $button        = $(this),\n\t\t    data           = {action: 'vp_ajax_' + vp_opt.name + '_export_option', nonce : vp_opt.nonce};\n\n\t\t$button.attr('disabled', 'disabled');\n\t\t$export_loader.fadeIn(100);\n\t\t$.post(ajaxurl, data, function(response) {\n\t\t\t$export_loader.fadeOut(0);\n\t\t\tif (!$.isEmptyObject(response.option) && response.status)\n\t\t\t{\n\t\t\t\t$('#vp-js-export_text').val(response.option);\n\t\t\t\t$export_status.html(vp_opt.util_msg.export_success);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t$export_status.html(vp_opt.util_msg.export_failed + ': ' + response.message);\n\t\t\t}\n\t\t\t$export_status.fadeIn(100);\n\t\t\tsetTimeout(function() {\n\t\t\t\t$export_status.fadeOut(1000, function() {\n\t\t\t\t\t$button.removeAttr('disabled');\n\t\t\t\t\t$export_status.fadeOut(500);\n\t\t\t\t});\n\t\t\t}, 3000);\n\t\t}, 'JSON');\n\t});\n\n\n}(jQuery));"
  },
  {
    "path": "public/js/shared.js",
    "content": "/* =============================================================\n * JQuery or Other Extension\n * =============================================================\n */\n\n\"use strict\";\n\njQuery.fn.getAttributes = function() {\n\tvar attributes = {};\n\tif (!this.length)\n\t\treturn this;\n\tjQuery.each(this[0].attributes, function(index, attr) {\n\t\tattributes[attr.name] = attr.value;\n\t});\n\treturn attributes;\n};\njQuery.fn.getDatas = function() {\n\tvar attributes = {},\n\t    prefix = \"data-vp-\";\n\tif (!this.length)\n\t\treturn this;\n\tjQuery.each(this[0].attributes, function(index, attr) {\n\t\tif (attr.name.substring(0, prefix.length) == prefix)\n\t\t{\n\t\t\tattributes[attr.name.substring(prefix.length)] = attr.value;\n\t\t}\n\t});\n\treturn attributes;\n};\njQuery.fn.exists = function () {\n\treturn this.length !== 0;\n};\nif (!String.prototype.trimChar) {\n\tString.prototype.trimChar =  function(string) { return this.replace(new RegExp('^' + string + '+|' + string + '+$', 'g'), ''); };\n}\nif (!String.prototype.format) {\n\tString.prototype.format = function() {\n\t\tvar args = arguments;\n\t\treturn this.replace(/{(\\d+)}/g, function(match, number) {\n\t\t\treturn typeof args[number] != 'undefined' ? args[number] : match;\n\t\t});\n\t};\n}\nif (!String.prototype.replaceAll){\n\t/**\n\t * ReplaceAll by Fagner Brack (MIT Licensed)\n\t * Replaces all occurrences of a substring in a string\n\t */\n\tString.prototype.replaceAll = function(token, newToken, ignoreCase) {\n\t\tvar str, i = -1, _token;\n\t\tif((str = this.toString()) && typeof token === \"string\") {\n\t\t\t_token = ignoreCase === true? token.toLowerCase() : undefined;\n\t\t\twhile((i = (\n\t\t\t\t_token !== undefined?\n\t\t\t\t\tstr.toLowerCase().indexOf(\n\t\t\t\t\t\t\t\t_token,\n\t\t\t\t\t\t\t\ti >= 0? i + newToken.length : 0\n\t\t\t\t\t) : str.indexOf(\n\t\t\t\t\t\t\t\ttoken,\n\t\t\t\t\t\t\t\ti >= 0? i + newToken.length : 0\n\t\t\t\t\t)\n\t\t\t)) !== -1 ) {\n\t\t\t\tstr = str.substring(0, i)\n\t\t\t\t\t\t .concat(newToken)\n\t\t\t\t\t\t .concat(str.substring(i + token.length));\n\t\t\t}\n\t    }\n\treturn str;\n\t};\n}\n// Validation Functions\njQuery.fn.validationVal = function() {\n\tvar $this = this,\n\t    val = '',\n\t    tagName = $this.prop('tagName'),\n\t    checked;\n\n\tif (($this.length > 1 && $this.attr('type') != 'radio') || $this.attr('multiple')) { val = []; }\n\n\tvar initialVal = val;\n\n\t$this.each(function(i) {\n\t\tvar $field = jQuery(this);\n\n\t\tswitch (tagName)\n\t\t{\n\t\t\tcase 'SELECT':\n\t\t\t\tif ($field.has('[multiple]'))\n\t\t\t\t{\n\t\t\t\t\tval = $field.val();\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tval = $field.val();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 'INPUT':\n\t\t\t\tswitch ($this.attr('type'))\n\t\t\t\t{\n\t\t\t\t\tcase 'text':\n\t\t\t\t\t\tval = $field.val();\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'radio':\n\t\t\t\t\t\tchecked = $field.prop('checked');\n\t\t\t\t\t\tif (typeof checked !== 'undefined' && checked !== false)\n\t\t\t\t\t\t\tval = $field.val();\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'checkbox':\n\t\t\t\t\t\tchecked = $field.prop('checked');\n\t\t\t\t\t\tif ($this.length > 1)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif (typeof checked !== 'undefined' && checked !== false) { val.push($field.val()); } // multiple\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tval = null;\n\t\t\t\t\t\t\tif (typeof checked !== 'undefined' && checked !== false) { val = $field.val(); } // multiple\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 'TEXTAREA':\n\t\t\t\tval = $field.val();\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tval = $field.val();\n\t\t\t\tbreak;\n\t\t}\n\t});\n\n\t// quick fix trial\n\tif (val === null)\n\t\tval = initialVal;\n\treturn val;\n};\n\n// hidding plugin\njQuery.fn.vp_slideUp = function(callback){\n\tvar $this = this;\n\n\t$this.each(function(i){\n\t\tvar $el = jQuery(this);\n\t\tif(!$el.hasClass('vp-hide'))\n\t\t{\n\t\t\t$el.slideUp('fast', function() {\n\t\t\t\tjQuery(this).addClass('vp-hide')\n\t\t\t\t.slideDown(0, callback);\n\t\t\t});\n\t\t}\n\t});\n};\njQuery.fn.vp_slideDown = function(callback){\n\tvar $this = this;\n\n\t$this.each(function(i){\n\t\tvar $el = jQuery(this);\n\t\tif($el.hasClass('vp-hide'))\n\t\t{\n\t\t\t$el.slideUp(0, function() {\n\t\t\t\tjQuery(this).removeClass('vp-hide')\n\t\t\t\t.slideDown('fast', callback);\n\t\t\t});\n\t\t}\n\t});\n};\njQuery.fn.vp_fadeOut = function(callback){\n\tvar $this = this;\n\tif(!$this.hasClass('vp-hide'))\n\t{\n\t\t$this.fadeOut('fast', function() {\n\t\t\tjQuery(this).addClass('vp-hide')\n\t\t\t.fadeIn(0, callback);\n\t\t});\n\t}\n};\njQuery.fn.vp_fadeIn = function(callback){\n\tvar $this = this;\n\tif($this.hasClass('vp-hide'))\n\t{\n\t\t$this.fadeOut(0,function() {\n\t\t\tjQuery(this).removeClass('vp-hide')\n\t\t\t.fadeIn('fast', callback);\n\t\t});\n\t}\n};\njQuery.fn.vp_toggle = function(callback){\n\tvar $this = this;\n\tif($this.hasClass('vp-hide'))\n\t{\n\t\t$this.slideUp(0,function() {\n\t\t\tjQuery(this).removeClass('vp-hide')\n\t\t\t.slideDown('fast', callback);\n\t\t});\n\t}\n\telse\n\t{\n\t\t$this.slideUp('fast', function() {\n\t\t\tjQuery(this).addClass('vp-hide')\n\t\t\t.slideDown(0, callback);\n\t\t});\n\t}\n};\n\n/*\n * =============================================================\n */\n\n\n/**\n * =============================================================\n * Vafpress function\n * =============================================================\n */\n\n/**\n * vafpress global namespace\n */\nvar vp = {};\n\nvp.isNumber = function(n) {\n  return !isNaN(parseFloat(n)) && isFinite(n);\n};\nvp.parseOpt = function(optString) {\n\tvar openIdx, closeIdx, temp, tempArr, opt = {};\n\tfor (var i = 0; i < optString.length; i++)\n\t{\n\t\tif (optString[i] == '(')\n\t\t{\n\t\t\topenIdx = i;\n\t\t}\n\t\tif (optString[i] == ')')\n\t\t{\n\t\t\tcloseIdx = i;\n\t\t\ttemp = optString.substring(openIdx + 1, closeIdx);\n\t\t\ttempArr = temp.split(':');\n\t\t\topt[tempArr[0]] = vp.isNumber(tempArr[1]) ? parseFloat(tempArr[1]) : tempArr[1];\n\t\t}\n\t}\n\treturn opt;\n};\n\nvp.wp_ext2type = function ( ext ) {\n\tvar ext2type = {\n\t\timage       : ['jpg', 'jpeg', 'bmp',  'gif',  'png'],\n\t\taudio       : ['aac', 'ac3',  'aif',  'aiff', 'm3a',  'm4a',   'm4b',  'mka',  'mp1',  'mp2',  'mp3', 'ogg', 'oga', 'ram', 'wav', 'wma'],\n\t\tvideo       : ['asf', 'avi',  'divx', 'dv',   'flv',  'm4v',   'mkv',  'mov',  'mp4',  'mpeg', 'mpg', 'mpv', 'ogm', 'ogv', 'qt',  'rm', 'vob', 'wmv'],\n\t\tdocument    : ['doc', 'docx', 'docm', 'dotm', 'odt',  'pages', 'pdf',  'rtf',  'wp',   'wpd'],\n\t\tspreadsheet : ['numbers',     'ods',  'xls',  'xlsx', 'xlsm',  'xlsb'],\n\t\tinteractive : ['swf', 'key',  'ppt',  'pptx', 'pptm', 'pps',   'ppsx', 'ppsm', 'sldx', 'sldm', 'odp'],\n\t\ttext        : ['asc', 'csv',  'tsv',  'txt'],\n\t\tarchive     : ['bz2', 'cab',  'dmg',  'gz',   'rar',  'sea',   'sit',  'sqx',  'tar',  'tgz',  'zip', '7z'],\n\t\tcode        : ['css', 'htm',  'html', 'php',  'js']\n\t};\n\n\tvar result = 'default';\n\n\tfor(var type in ext2type)\n\t{\n\t\tif(ext2type.hasOwnProperty(type))\n\t\t{\n\t\t\tif(jQuery.inArray(ext, ext2type[type]) !== -1 )\n\t\t\t{\n\t\t\t\tresult = type;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\treturn result;\n};\n\nvp.get_url_extension = function(url){\n\tvar regex    = new RegExp(/(.*)[\\/\\\\]([^\\/\\\\]+)\\.(\\w+)/i);\n\tvar url_info = regex.exec(url);\n\tif(url_info)\n\t{\n\t\tif (typeof url_info[3] != 'undefined')\n\t\t{\n\t\t\treturn url_info[3];\n\t\t}\n\t}\n\treturn '';\n};\n\nvp.jqid = function(id) {\n\treturn '#' + id.replace(/([:\\.\\[\\]])/g,'\\\\$1');\n};\n\nvp.jqidwild = function(id) {\n\tid = id.replace(/([:\\.\\[\\]])/g,'\\\\$1');\n\tid = '[id*=' + id + ']';\n\treturn id;\n};\n\nvp.jqname = function(name) {\n\treturn '[name=\"' + name + '\"]';\n};\n\nvp.jqnamewild = function(name) {\n\treturn '[name*=\"' + name + '\"]';\n};\n\nvp.thejqid = function(id, thecase) {\n\tif(thecase === 'option')\n\t\treturn vp.jqid(id);\n\tif(thecase === 'metabox')\n\t\treturn vp.jqidwild(id);\n\treturn id;\n};\n\nvp.thejqname = function(name, thecase) {\n\tif(thecase === 'option')\n\t\treturn vp.jqname(name);\n\tif(thecase === 'metabox')\n\t\treturn vp.jqnamewild(name);\n\treturn name;\n};\n\nvp.validateAlphabet = function(type, val) {\n\t// ignore array and empty string, since they should be handled by 'required' rule\n\tif (val === '' || jQuery.isArray(val) || jQuery.inArray(type, vp_wp.alphabet_validatable) == -1) { return true; }\n\tvar regex = new RegExp(/^[A-Z\\s]+$/i);\n\treturn regex.test(val);\n};\n\nvp.validateAlphaNumeric = function(type, val) {\n\t// ignore array and empty string, since they should be handled by 'required' rule\n\tif (val === '' || jQuery.isArray(val) || jQuery.inArray(type, vp_wp.alphanumeric_validatable) == -1) { return true; }\n\n\tvar regex = new RegExp(/^[A-Z0-9]+$/i);\n\treturn regex.test(val);\n};\n\nvp.validateNumeric = function(type, val) {\n\t// ignore array and empty string, since they should be handled by 'required' rule\n\tif (val === '' || jQuery.isArray(val) || jQuery.inArray(type, vp_wp.numeric_validatable) == -1) { return true; }\n\n\tvar regex = new RegExp(/^[-+]?[0-9]*\\.?[0-9]+$/);\n\treturn regex.test(val);\n};\n\nvp.validateEmail = function(type, val) {\n\t// ignore array and empty string, since they should be handled by 'required' rule\n\tif (val === '' || jQuery.isArray(val) || jQuery.inArray(type, vp_wp.email_validatable) == -1) { return true; }\n\n\tvar regex = new RegExp(/^[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,4}$/i);\n\treturn regex.test(val);\n};\n\nvp.validateURL = function(type, val) {\n\t// ignore array and empty string, since they should be handled by 'required' rule\n\tif (val === '' || jQuery.isArray(val) || jQuery.inArray(type, vp_wp.url_validatable) == -1) { return true; }\n\n\tvar regex = new RegExp(/^(ftp|http|https):\\/\\/[^ \"]+$/i);\n\treturn regex.test(val);\n};\n\nvp.validateMaxLength = function(type, val, n) {\n\t// ignore array\n\tif (jQuery.inArray(type, vp_wp.maxlength_validatable) != -1) { return true; }\n\n\treturn (val.length <= n) ? true : false;\n};\n\nvp.validateMinLength = function(type, val, n) {\n\t// ignore array\n\tif (jQuery.inArray(type, vp_wp.minlength_validatable) != -1) { return true; }\n\n\treturn (val.length >= n) ? true : false;\n};\n\nvp.validateRequired = function(type, val) {\n\t// only check if it's empty array, if it's not, it will go true anyway..\n\tif (jQuery.isArray(val) && jQuery.isEmptyObject(val)) return false;\n\treturn (val) ? true : false;\n};\n\n// validation function loop\nvp.fields_validation_loop = function(fields){\n\n\tvar msgHTML = '<li class=\"validation-msg vp-error\"></li>',\n\t\terrors  = 0;\n\n\tfor (var i = 0; i < fields.length; i++)\n\t{\n\t\tvar field   = fields[i],\n\t\t    $tr     = jQuery(vp.jqid(field.name)),\n\t\t    $parent = $tr.parents('.vp-meta-group').exists() ? $tr.parents('.vp-meta-group') : $tr.parents('.vp-section');\n\n\t\t// if field is now deleted and not found\n\t\tif($tr.length <= 0)\n\t\t\tcontinue;\n\n\t\t// if field is inactive due to dependencies mechanism\n\t\tif($tr.hasClass('vp-dep-inactive') || ($parent.exists() && $parent.hasClass('vp-dep-inactive')))\n\t\t\tcontinue;\n\n\t\tvar $msgs  = $tr.children('div.field').children('.validation-msgs').children('ul'),\n\t\t    $input = jQuery('[name=\"' + field.name + '\"]'),\n\t\t    val    = $input.validationVal(),\n\t\t    type   = field.type,\n\t\t    rules  = field.rules.split('|');\n\n\t\tfield.nError = 0;\n\t\tfor (var j = 0; j < rules.length; j++)\n\t\t{\n\t\t\tvar rule = rules[j],\n\t\t\t    q1 = rule.indexOf('['),\n\t\t\t    q2 = rule.indexOf(']'),\n\t\t\t    def = (q1 >= 0) ? rule.substring(0, q1) : rule,\n\t\t\t    res = '',\n\t\t\t    n;\n\n\t\t\tswitch (def)\n\t\t\t{\n\t\t\t\tcase 'alphabet':\n\t\t\t\t\tif (!vp.validateAlphabet(type, val)) { res = vp_wp.val_msg.alphabet.format(); }\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'alphanumeric':\n\t\t\t\t\tif (!vp.validateAlphaNumeric(type, val)) { res = vp_wp.val_msg.alphanumeric.format(); }\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'numeric':\n\t\t\t\t\tif (!vp.validateNumeric(type, val)) { res = vp_wp.val_msg.numeric.format(); }\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'email':\n\t\t\t\t\tif (!vp.validateEmail(type, val)) { res = vp_wp.val_msg.email.format(); }\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'url':\n\t\t\t\t\tif (!vp.validateURL(type, val)) { res = vp_wp.val_msg.url.format(); }\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'maxlength':\n\t\t\t\t\tn = rule.substring(q1 + 1, q2);\n\t\t\t\t\tif (!vp.validateMaxLength(type, val, n)) { res = vp_wp.val_msg.maxlength.format(n); }\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'minlength':\n\t\t\t\t\tn = rule.substring(q1 + 1, q2);\n\t\t\t\t\tif (!vp.validateMinLength(type, val, n)) { res= vp_wp.val_msg.minlength.format(n); }\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'maxselected':\n\t\t\t\t\tn = rule.substring(q1 + 1, q2);\n\t\t\t\t\tif (!vp.validateMaxLength(type, val, n)) { res = vp_wp.val_msg.maxselected.format(n); }\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'minselected':\n\t\t\t\t\tn = rule.substring(q1 + 1, q2);\n\t\t\t\t\tif (!vp.validateMinLength(type, val, n)) { res= vp_wp.val_msg.minselected.format(n); }\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'required':\n\t\t\t\t\tif (!vp.validateRequired(type, val)) { res = vp_wp.val_msg.required.format(); }\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tif (res !== '')\n\t\t\t{\n\t\t\t\t// push into errors pool\n\t\t\t\tfield.nError += 1;\n\n\t\t\t\t// set message\n\t\t\t\tvar $msg = jQuery(msgHTML);\n\t\t\t\t    $msg.html(res);\n\t\t\t\t    $msg.appendTo($msgs);\n\t\t\t}\n\t\t}\n\n\t\tif (field.nError > 0)\n\t\t{\n\t\t\terrors += 1;\n\t\t\t$tr.addClass('vp-error');\n\t\t}\n\t}\n\treturn errors;\n};\n\n// custom checkbox and radiobutton handler\nvp.custom_check_radio_event = function(parent, selector){\n\tjQuery(parent).delegate(selector, \"click\", function(e){\n\t\te.preventDefault();\n\t\tvar $control = jQuery(this).find('input'),\n\t\t    type = $control.attr('type');\n\t\tif(type == 'radio')\n\t\t{\n\t\t\tjQuery(this).parent().parent().find('input').each(function(i){\n\t\t\t\tjQuery(this).removeClass('checked');\n\t\t\t\t$control.prop('checked', false);\n\t\t\t});\n\t\t\t$control.prop('checked', true).change();\n\t\t}\n\t\telse if(type == 'checkbox')\n\t\t{\n\t\t\tif ($control.is(':checked'))\n\t\t\t\t$control.prop('checked', false);\n\t\t\telse\n\t\t\t\t$control.prop('checked', true);\n\t\t\t$control.trigger('change');\n\t\t}\n\t});\n\tjQuery(parent).delegate(selector, \"change\", function(e){\n\t\te.preventDefault();\n\t\tvar $control = jQuery(this).find('input');\n\t\tif ($control.is(':checked'))\n\t\t\t$control.addClass('checked');\n\t\telse\n\t\t\t$control.removeClass('checked');\n\t});\n};\n\n// vafpress binding related functions\nvp.binding_action =\tfunction(ids, field, func, thecase) {\n\tvar $source_tr = jQuery(vp.jqid(field.source)),\n\t    $source    = jQuery('[name=\"' + field.source + '\"]'),\n\t    values     = [];\n\n\tfor (var i = 0; i < ids.length; i++)\n\t{\n\t\tvar val = jQuery(vp.thejqname(ids[i], thecase)).validationVal();\n\t\tif (jQuery.isArray(val) && val.length == 0) {\n\t\t\tval = null;\n\t\t}\n\t\tvalues.push(val);\n\t}\n\n\tvar data = {\n\t\taction   : 'vp_ajax_wrapper',\n\t\tfunc     : func,\n\t\tparams   : values\n\t};\n\n\t// get loader\n\tvar $loader = $source_tr.find('.vp-js-bind-loader'),\n\t    $input  = $source_tr.find('.input');\n\n\tif (field.type == 'vp-html') {\n\t\t$loader.vp_fadeIn();\n\t} else {\n\t\t$input.vp_fadeOut(function(){\n\t\t\t$loader.vp_fadeIn();\n\t\t});\n\t}\n\n\tjQuery.post(ajaxurl, data, function(response) {\n\t\t$loader.vp_fadeOut(function(){\n\t\t\t$input.vp_fadeIn();\n\t\t});\n\t\tif (response.status)\n\t\t{\n\t\t\tvar data;\n\t\t\tswitch(field.type)\n\t\t\t{\n\t\t\t\tcase 'vp-select':\n\t\t\t\tcase 'vp-multiselect':\n\t\t\t\t\t$source    = jQuery('[name=\"' + field.source + '\"]');\n\t\t\t\t\tif(response.data !== null)\n\t\t\t\t\t{\n\t\t\t\t\t\tdata = response.data instanceof Array ? response.data : [response.data];\n\t\t\t\t\t\t$source.val(data).change();\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'vp-checkbox':\n\t\t\t\t\tif(response.data !== null)\n\t\t\t\t\t{\n\t\t\t\t\t\tdata = response.data instanceof Array ? response.data : [response.data];\n\t\t\t\t\t\t$source.prop('checked', false).change();\n\t\t\t\t\t\tjQuery.each(data, function(key, value) {\n\t\t\t\t\t\t\t$source.filter('[value=\"'+ value +'\"]').prop('checked', true).change();\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'vp-toggle':\n\t\t\t\t\tif(response.data !== null)\n\t\t\t\t\t{\n\t\t\t\t\t\tif(response.data)\n\t\t\t\t\t\t\t$source.prop('checked', true).change();\n\t\t\t\t\t\telse\n\t\t\t\t\t\t\t$source.prop('checked', false).change();\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'vp-checkimage':\n\t\t\t\t\tif(response.data !== null)\n\t\t\t\t\t{\n\t\t\t\t\t\tdata = response.data instanceof Array ? response.data : [response.data];\n\t\t\t\t\t\t$source.prop('checked', false).change();\n\t\t\t\t\t\tjQuery.each(data, function(key, value) {\n\t\t\t\t\t\t\t$source.filter('[value=\"'+ value +'\"]').prop('checked', true).change();\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\tvp.init_tipsy();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'vp-radiobutton':\n\t\t\t\t\tif(response.data !== null)\n\t\t\t\t\t{\n\t\t\t\t\t\tdata = response.data instanceof Array ? response.data : [response.data];\n\t\t\t\t\t\t$source.prop('checked', false).change();\n\t\t\t\t\t\tjQuery.each(data, function(key, value) {\n\t\t\t\t\t\t\t$source.filter('[value=\"'+ value +'\"]').prop('checked', true).change();\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'vp-radioimage':\n\t\t\t\t\tif(response.data !== null)\n\t\t\t\t\t{\n\t\t\t\t\t\tdata = response.data instanceof Array ? response.data : [response.data];\n\t\t\t\t\t\t$source.prop('checked', false).change();\n\t\t\t\t\t\tjQuery.each(data, function(key, value) {\n\t\t\t\t\t\t\t$source.filter('[value=\"'+ value +'\"]').prop('checked', true).change();\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\tvp.init_tipsy();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'vp-html':\n\t\t\t\t\tif(response.data !== null)\n\t\t\t\t\t{\n\t\t\t\t\t\tjQuery(vp.jqid(field.source + '_dom')).html(response.data);\n\t\t\t\t\t\tjQuery(vp.jqname(field.source)).val(response.data);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\t$source = jQuery(vp.jqname(field.source));\n\t\t\t\t\t$source.val(response.data);\n\t\t\t}\n\t\t\tjQuery('[name=\"' + field.source + '\"]:first').keypress().keyup().change().blur();\n\t\t}\n\t}, 'JSON');\n};\n\nvp.binding_event = function(ids, idx, field, func, parent, thecase)\n{\n\tvar change    = ['vp-select', 'vp-checkbox', 'vp-checkimage', 'vp-radiobutton', 'vp-radioimage', 'vp-multiselect', 'vp-toggle', 'vp-upload'],\n\t    typing    = ['vp-textbox', 'vp-slider', 'vp-color', 'vp-date'],\n\t    name      = vp.thejqname(ids[idx], thecase),\n\t    dest_type = jQuery(vp.thejqid(ids[idx], thecase)).attr('data-vp-type');\n\n\tif(jQuery.inArray(dest_type, change) !== -1 )\n\t{\n\t\tjQuery(parent).delegate(name, 'change', function(){vp.binding_action(ids, field, func, thecase);});\n\t}\n\telse if(jQuery.inArray(dest_type, typing) !== -1 )\n\t{\n\t\tjQuery(name).typing({\n\t\t\tstop: function(event, $elem){\n\t\t\t\tvp.binding_action(ids, field, func, thecase);\n\t\t\t},\n\t\t\tdelay: 400\n\t\t});\n\t}\n\telse\n\t{\n\t\tjQuery(parent).delegate(name, 'change', function(){vp.binding_action(ids, field, func, thecase);});\n\t}\n};\n\n/*\n * =============================================================\n */\n\n// vafpress binding related functions\nvp.items_binding_action =\tfunction(ids, field, func, thecase) {\n\tvar $source_tr = jQuery(vp.jqid(field.source)),\n\t    $source    = jQuery('[name=\"' + field.source + '\"]'),\n\t    values     = [];\n\n\tfor (var i = 0; i < ids.length; i++)\n\t{\n\t\tvalues.push(jQuery(vp.thejqname(ids[i], thecase)).validationVal());\n\t}\n\n\tvar data = {\n\t\taction   : 'vp_ajax_wrapper',\n\t\tfunc     : func,\n\t\tparams   : values\n\t};\n\n\t// get loader\n\tvar $loader = $source_tr.find('.vp-js-bind-loader'),\n\t    $input  = $source_tr.find('.input');\n\n\t$input.vp_fadeOut(function(){\n\t\t$loader.vp_fadeIn();\n\t});\n\n\tjQuery.post(ajaxurl, data, function(response) {\n\t\t$loader.vp_fadeOut(function(){\n\t\t\t$input.vp_fadeIn();\n\t\t});\n\t\tif (response.status)\n\t\t{\n\t\t\tvar $source;\n\t\t\tswitch(field.type)\n\t\t\t{\n\t\t\t\tcase 'vp-select':\n\t\t\t\tcase 'vp-multiselect':\n\t\t\t\t\t$source    = jQuery('[name=\"' + field.source + '\"]');\n\t\t\t\t\t$source.empty();\n\t\t\t\t\t$source.append(jQuery(\"<option></option>\"));\n\t\t\t\t\tresponse.data !== null && jQuery.each(response.data, function(key, value) {\n\t\t\t\t\t\t$source\n\t\t\t\t\t\t\t.append(jQuery(\"<option></option>\")\n\t\t\t\t\t\t\t.attr(\"value\",value.value)\n\t\t\t\t\t\t\t.text(value.label));\n\t\t\t\t\t});\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'vp-checkbox':\n\t\t\t\t\t$source = $input;\n\t\t\t\t\t$source.empty();\n\t\t\t\t\t$source = jQuery(vp.jqid(field.source)).find('.input');\n\t\t\t\t\tresponse.data !== null && jQuery.each(response.data, function(key, value) {\n\t\t\t\t\t\t$source.append(jQuery('<label><input class=\"vp-input\" type=\"checkbox\" name=\"' + field.source + '\" value=\"' + value.value + '\"><span></span>'+ value.label + '</label>'));\n\t\t\t\t\t});\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'vp-checkimage':\n\t\t\t\t\t$source = $input;\n\t\t\t\t\t$source.empty();\n\t\t\t\t\t$source = jQuery(vp.jqid(field.source)).find('.input');\n\t\t\t\t\tresponse.data !== null && jQuery.each(response.data, function(key, value) {\n\t\t\t\t\t\t$source.append(jQuery('<label><input class=\"vp-input\" type=\"checkbox\" name=\"' + field.source + '\" value=\"' + value.value + '\"><img src=\"' + value.img + '\" alt=\"' + value.label + '\" class=\"vp-js-tipsy image-item\" style=\"\" original-title=\"' + value.value + '\"></label>'));\n\t\t\t\t\t});\n\t\t\t\t\tvp.init_tipsy();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'vp-radiobutton':\n\t\t\t\t\t$source = $input;\n\t\t\t\t\t$source.empty();\n\t\t\t\t\t$source = jQuery(vp.jqid(field.source)).find('.input');\n\t\t\t\t\tresponse.data !== null && jQuery.each(response.data, function(key, value) {\n\t\t\t\t\t\t$source.append(jQuery('<label><input class=\"vp-input\" type=\"radio\" name=\"' + field.source + '\" value=\"' + value.value + '\"><span></span>'+ value.label + '</label>'));\n\t\t\t\t\t});\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'vp-radioimage':\n\t\t\t\t\t$source = $input;\n\t\t\t\t\t$source.empty();\n\t\t\t\t\t$source = jQuery(vp.jqid(field.source)).find('.input');\n\t\t\t\t\tresponse.data !== null && jQuery.each(response.data, function(key, value) {\n\t\t\t\t\t\t$source.append(jQuery('<label><input class=\"vp-input\" type=\"radio\" name=\"' + field.source + '\" value=\"' + value.value + '\"><img src=\"' + value.img + '\" alt=\"' + value.label + '\" class=\"vp-js-tipsy image-item\" style=\"\" original-title=\"' + value.value + '\"></label>'));\n\t\t\t\t\t});\n\t\t\t\t\tvp.init_tipsy();\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tjQuery('[name=\"' + field.source + '\"]:first').change().blur();\n\t\t}\n\t}, 'JSON');\n};\n\nvp.items_binding_event = function(ids, idx, field, func, parent, thecase)\n{\n\tvar change    = ['vp-select', 'vp-checkbox', 'vp-checkimage', 'vp-radiobutton', 'vp-radioimage', 'vp-multiselect', 'vp-toggle', 'vp-upload'],\n\t    typing    = ['vp-textbox', 'vp-slider', 'vp-color', 'vp-date'],\n\t    name      = vp.thejqname(ids[idx], thecase),\n\t    dest_type = jQuery(vp.thejqid(ids[idx], thecase)).attr('data-vp-type');\n\n\tif(jQuery.inArray(dest_type, change) !== -1 )\n\t{\n\t\tjQuery(parent).delegate(name, 'change', function(){vp.items_binding_action(ids, field, func, thecase);});\n\t}\n\telse if(jQuery.inArray(dest_type, typing) !== -1 )\n\t{\n\t\tjQuery(name).typing({\n\t\t\tstop: function(event, $elem){\n\t\t\t\tvp.items_binding_action(ids, field, func, thecase);\n\t\t\t},\n\t\t\tdelay: 400\n\t\t});\n\t}\n\telse\n\t{\n\t\tjQuery(parent).delegate(name, 'change', function(){vp.binding_action(ids, field, func, thecase);});\n\t}\n};\n\n/*\n * =============================================================\n */\n\n// vafpress dependencies related functions\nvp.dependency_action =\tfunction(ids, field, func) {\n\n\tvar $source_tr = jQuery(vp.jqid(field.source)),\n\t    $source    = jQuery('[name=\"' + field.source + '\"]'),\n\t    values     = [],\n\t    targets    = [];\n\n\tfor (var i = 0; i < ids.length; i++)\n\t{\n\t\ttargets.push(jQuery(vp.jqid(ids[i])));\n\t\tvalues.push(jQuery('[name=\"' + ids[i] + '\"]').validationVal());\n\t}\n\n\tvar data = {\n\t\taction   : 'vp_ajax_wrapper',\n\t\tfunc     : func,\n\t\tparams   : values\n\t};\n\n\t// get loader\n\tjQuery.each(targets, function(idx, val){\n\t\tvar $loader = val.find('.vp-js-bind-loader');\n\t\t$loader.vp_fadeIn();\n\t});\n\n\tjQuery.post(ajaxurl, data, function(response) {\n\t\tjQuery.each(targets, function(idx, val){\n\t\t\tvar $loader = val.find('.vp-js-bind-loader');\n\t\t\t$loader.vp_fadeOut();\n\t\t});\n\n\t\tif (response.status)\n\t\t{\n\t\t\tif(response.data)\n\t\t\t{\n\t\t\t\t$source_tr.removeClass('vp-dep-inactive');\n\t\t\t\t$source_tr.vp_fadeIn();\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t$source_tr.addClass('vp-dep-inactive');\n\t\t\t\t$source_tr.vp_fadeOut();\n\t\t\t}\n\t\t}\n\t}, 'JSON');\n};\n\nvp.dependency_event = function(ids, idx, field, func, parent){\n\n\tvar change    = ['vp-select', 'vp-checkbox', 'vp-checkimage', 'vp-radiobutton', 'vp-radioimage', 'vp-multiselect', 'vp-toggle', 'vp-upload'],\n\t    typing    = ['vp-textbox', 'vp-slider', 'vp-color', 'vp-date'],\n\t    name      = vp.thejqname(ids[idx], 'option'),\n\t    dest_type = jQuery(vp.thejqid(ids[idx], 'option')).attr('data-vp-type');\n\n\tif(jQuery.inArray(dest_type, change) !== -1 )\n\t{\n\t\tjQuery(parent).delegate(name, 'change', function(){vp.dependency_action(ids, field, func);});\n\t}\n\telse if(jQuery.inArray(dest_type, typing) !== -1 )\n\t{\n\t\tjQuery(name).typing({\n\t\t\tstop: function(event, $elem){\n\t\t\t\tvp.dependency_action(ids, field, func);\n\t\t\t},\n\t\t\tdelay: 400\n\t\t});\n\t}\n\telse\n\t{\n\t\tjQuery(parent).delegate(name, 'change', function(){vp.binding_action(ids, field, func, thecase);});\n\t}\n};\n\n/*\n * =============================================================\n */\n\n/**\n * =============================================================\n * Control Fields JS Trigering\n * =============================================================\n */\n\nfunction theValidate(elem, options, $slider)\n{\n\tvar $this = jQuery(elem),\n\t    val = $this.val();\n\tif(val === '')\n\t\treturn;\n\tif (!vp.validateNumeric('vp-textbox', val))\n\t{\n\t\t$this.val(options.min);\n\t\t$slider.slider('value', options.min);\n\t}\n\tif (val > options.max)\n\t{\n\t\t$this.val(options.max);\n\t\t$slider.slider('value', options.max);\n\t}\n\telse if (val < options.min)\n\t{\n\t\t$this.val(options.min);\n\t\t$slider.slider('value', options.min);\n\t}\n\telse\n\t{\n\t\t$slider.slider('value', $this.val());\n\t}\n}\n\nvp.init_slider = function($elements)\n{\n\tif (jQuery.fn.slider)\n\t{\n\t\t$elements.each(function(i, el) {\n\t\t\tvar $slider = jQuery(this),\n\t\t\t    options = jQuery(this).getDatas();\n\t\t\toptions = vp.parseOpt(options.opt);\n\t\t\toptions.range = 'min';\n\t\t\toptions.slide = function(event, ui) {\n\t\t\t\t$slider.prev('.slideinput').val(ui.value);\n\t\t\t\t$slider.prev('.slideinput').trigger('keypress');\n\t\t\t\t$slider.prev('.slideinput').trigger('keyup');\n\t\t\t};\n\t\t\t$slider.slider(options);\n\n\t\t\t$slider.prev('.slideinput').keypress(function(e) {\n\t\t\t\tvar charCode = (typeof e.which == \"number\") ? e.which : e.keyCode;\n\t\t\t\tif (e.altKey || e.ctrlKey || e.shiftKey)\n\t\t\t\t\treturn true;\n\t\t\t\tif (jQuery.inArray(charCode, [45, 46, 8, 0]) != -1 || (charCode >= 48 && charCode <= 57) )\n\t\t\t\t\treturn true;\n\t\t\t\treturn false;\n\t\t\t})\n\t\t\t.blur(function(e){\n\t\t\t\ttheValidate(this, options, $slider);\n\t\t\t\t$slider.prev('.slideinput').keypress().keyup();\n\t\t\t})\n\t\t});\n\t}\n};\n\n\nvp.upload_callback = function() {};\n\nif ( vp_wp.use_new_media_upload )\n{\n\tvar _orig_send_attachment = wp.media.editor.send.attachment,\n\t    _orig_send_link       = wp.media.editor.send.link,\n\t    _orig_send_to_editor  = window.send_to_editor;\n\n\tvp.upload_callback = function(e) {\n\t\tvar $this    = jQuery(this),\n\t\t    $input   = $this.parent('.buttons').prev('input'),\n\t\t    $preview = $this.parent('.buttons').siblings('.image').find('img');\n\n\t\t// handler for attachment\n\t\twp.media.editor.send.attachment = function(props, attachment) {\n\n\t\t\t$input.val(attachment.url);\n\t\t\t$input.trigger('change');\n\n\t\t\tif(attachment.type === 'image')\n\t\t\t\t$preview.attr('src', attachment.url);\n\t\t\telse\n\t\t\t\t$preview.attr('src', attachment.icon);\n\n\t\t\twp.media.editor.send.attachment = _orig_send_attachment;\n\t\t\twindow.send_to_editor = _orig_send_to_editor;\n\t\t};\n\n\t\t// handler for link\n\t\twindow.send_to_editor = function(html) {\n\t\t\tif (html !== '')\n\t\t\t{\n\t\t\t\tvar info = get_url_info(html);\n\t\t\t\t$input.val(info.imgurl);\n\t\t\t\t$input.trigger('change');\n\t\t\t\t$preview.attr('src', info.iconurl);\n\t\t\t}\n\t\t\twindow.send_to_editor = _orig_send_to_editor;\n\t\t\twp.media.editor.send.attachment = _orig_send_attachment;\n\t\t};\n\t\twp.media.editor.open($this);\n\t\treturn false;\n\t};\n}\nelse\n{\n\tvar _orig_send_to_editor = window.send_to_editor;\n\n\tvp.upload_callback = function(e) {\n\t\tvar _custom_media = true,\n\t\t       $input     = jQuery(this).parent('.buttons').prev('input'),\n\t\t       $preview   = jQuery(this).parent('.buttons').siblings('.image').find('img');\n\n\t\ttb_show('Upload Image', 'media-upload.php?&post_id=0&referer=vafpress&TB_iframe=true');\n\n\t\twindow.send_to_editor = function(html) {\n\t\t\tif (html !== '')\n\t\t\t{\n\t\t\t\tvar info = get_url_info(html);\n\t\t\t\t$input.val(info.imgurl);\n\t\t\t\t$input.trigger('change');\n\t\t\t\t$preview.attr('src', info.iconurl);\n\t\t\t}\n\t\t\twindow.send_to_editor = _orig_send_to_editor;\n\t\t\ttb_remove();\n\t\t};\n\t\treturn false;\n\t};\n}\n\nfunction get_url_info(html)\n{\n\tvar ext, type, imgurl, iconurl, $el = jQuery(html);\n\tif ($el.prop('tagName') == 'A')\n\t{\n\t\timgurl  = jQuery(html).attr('href');\n\t\text     = vp.get_url_extension(imgurl);\n\t\ttype    = vp.wp_ext2type(ext);\n\t\ticonurl = imgurl;\n\t\tif(type !== 'image')\n\t\t{\n\t\t\ticonurl = vp_wp.wp_include_url + 'images/crystal/' + type + '.png' ;\n\t\t}\n\t}\n\telse if($el.prop('tagName') == 'IMG')\n\t{\n\t\timgurl = jQuery(html).attr('src');\n\t\ticonurl = imgurl;\n\t}\n\treturn {imgurl: imgurl, iconurl: iconurl};\n}\n\nvp.remove_upload_callback = function(e) {\n\tvar $this    = jQuery(this),\n\t    $input   = $this.parent('.buttons').prev('input'),\n\t    $preview = $this.parent('.buttons').siblings('.image').find('img');\n\n\t$input.val('');\n\t$preview.attr('src', '');\n};\n\njQuery(document).on('click', '.vp-js-upload', vp.upload_callback);\njQuery(document).on('click', '.vp-js-remove-upload', vp.remove_upload_callback);\n\nvp.init_colorpicker = function($elements)\n{\n\tif (jQuery.fn.colorpicker)\n\t{\n\t\tif($elements.length <= 0)\n\t\t\treturn;\n\t\t$elements.each(function() {\n\t\t\tvar $colorpicker  = jQuery(this),\n\t\t\t    options = jQuery(this).getDatas();\n\n\t\t\toptions = vp.parseOpt(options.opt);\n\n\t\t\t$colorpicker.colorpicker({\n\t\t\t\tformat: options.format\n\t\t\t}).on('changeColor', function(ev){\n\t\t\t\tvar color;\n\t\t\t\tif(options.format == 'hex')\n\t\t\t\t{\n\t\t\t\t\tcolor = ev.color.toHex();\n\t\t\t\t}\n\t\t\t\telse if(options.format == 'rgba')\n\t\t\t\t{\n\t\t\t\t\tcolor = ev.color.toRGB();\n\t\t\t\t\tcolor = 'rgba(' + color.r + ',' + color.g + ',' + color.b + ',' + color.a + ')';\n\t\t\t\t}\n\t\t\t\telse if(options.format == 'rgb')\n\t\t\t\t{\n\t\t\t\t\tcolor = ev.color.toRGB();\n\t\t\t\t\tcolor = 'rgb(' + color.r + ',' + color.g + ',' + color.b + ')';\n\t\t\t\t}\n\t\t\t\t$colorpicker.prev('label').find('span').css('background-color', color);\n\t\t\t}).on('blur', function(ev){\n\t\t\t\t$colorpicker.prev('label').find('span').css('background-color', $colorpicker.val());\n\t\t\t\t$colorpicker.keypress().keyup();\n\t\t\t});\n\t\t});\n\t}\n};\n\nvp.init_datepicker = function($elements)\n{\n\tif (jQuery.fn.datepicker)\n\t{\n\t\tif($elements.length <= 0)\n\t\t\treturn;\n\t\t$elements.each(function() {\n\t\t\tvar options = jQuery(this).getDatas();\n\t\t\toptions     = vp.parseOpt(options.opt);\n\t\t\toptions.onSelect = function(){\n\t\t\t\tjQuery(this).trigger('keypress');\n\t\t\t\tjQuery(this).trigger('keyup');\n\t\t\t\tjQuery(this).trigger('blur');\n\t\t\t};\n\t\t\tjQuery(this).datepicker(options);\n\t\t\tjQuery(this).datepicker('setDate', options.value);\n\t\t});\n\t}\n};\n\nvp.init_controls = function($parent)\n{\n\t// init date picker\n\tvp.init_datepicker($parent.find('.vp-js-datepicker'));\n\tvp.init_fontawesome_chooser($parent.find('.vp-js-fontawesome'));\n\tvp.init_select2($parent.find('.vp-js-select2'));\n\tvp.init_sorter($parent.find('.vp-js-sorter'));\n\tvp.init_colorpicker($parent.find('.vp-js-colorpicker'));\n\tvp.init_slider($parent.find('.vp-js-slider'));\n\tvp.init_ace_editor($parent.find('.vp-js-codeeditor'));\n\tvp.init_wpeditor($parent.find('.vp-js-wpeditor'));\n};\n\n// Fontawesome Chooser\nvp.init_fontawesome_chooser = function($elements)\n{\n\tif (jQuery.fn.select2)\n\t{\n\t\tif($elements.length <= 0)\n\t\t\treturn;\n\t\tvar format = function vp_fontawesome_chooser_format(icon){\n\t\t\treturn '<span class=\"fontawesome\"><i class=\"fa ' + icon.id + '\"></i>' + icon.text + '</span>';\n\t\t};\n\t\t$elements.select2({\n\t\t\tformatResult: format,\n\t\t\tformatSelection: format,\n\t\t\tescapeMarkup: function(m) { return m; },\n\t\t\tallowClear: true,\n\t\t\tplaceholder: vp_wp.ctrl_msg.fac_placeholder\n\t\t});\n\t}\n};\n\n// Select2\nvp.init_select2 = function($elements)\n{\n\tif (jQuery.fn.select2)\n\t{\n\t\tif($elements.length <= 0)\n\t\t\treturn;\n\t\t$elements.select2({allowClear: true, placeholder: vp_wp.ctrl_msg.select2_placeholder});\n\t}\n};\n\n// Sorter\nvp.init_sorter = function($elements)\n{\n\tif (jQuery.fn.select2Sortable)\n\t{\n\t\tif($elements.length <= 0)\n\t\t\treturn;\n\n\t\t$elements.each(function(i, el) {\n\t\t\tvar $el     = jQuery(el),\n\t\t\t    options = $el.getDatas();\n\t\t\toptions = vp.parseOpt(options.opt);\n\t\t\t$el.select2(options).select2Sortable({bindOrder: 'sortableStop'});\n\t\t});\n\n\t}\n};\n\n// Tipsy\nvp.init_tipsy = function()\n{\n\tif (jQuery.fn.tipsy)\n\t{\n\t\tjQuery('.vp-js-tipsy.description').tipsy({ live: true, gravity : 'e' });\n\t\tjQuery('.vp-js-tipsy.slideinput').tipsy({ live: true, trigger : 'focus' });\n\t\tjQuery('.vp-js-tipsy.image-item').tipsy({ live: true });\n\t}\n};\nvp.init_tipsy();\n\n// Init Sorter\nvp.init_ace_editor = function($elements)\n{\n\tif(window.ace !== 'undefined')\n\t{\n\t\tif($elements.length <= 0)\n\t\t\treturn;\n\t\t$elements.each(function() {\n\n\t\t\tvar editor   = ace.edit(jQuery(this).get(0));\n\t\t\tvar textarea = jQuery(this).prev();\n\t\t\tvar options  = jQuery(this).getDatas();\n\n\t\t\toptions      = vp.parseOpt(options.opt);\n\n\t\t\t// set theme\n\t\t\teditor.setTheme(\"ace/theme/\" + options.theme);\n\t\t\t// set language mode if specified\n\t\t\tif( options.mode ) {\n\t\t\t\teditor.getSession().setMode(\"ace/mode/\" + options.mode);\n\t\t\t}\n\t\t\teditor.getSession().setUseWrapMode( true );\n\t\t\teditor.setShowPrintMargin( false );\n\n\t\t\teditor.getSession().setValue(textarea.val());\n\t\t\teditor.getSession().on('change', function(){\n\t\t\t\ttextarea.val(editor.getSession().getValue());\n\t\t\t});\n\t\t\ttextarea.on('change', function(){\n\t\t\t\teditor.getSession().setValue(textarea.val());\n\t\t\t});\n\n\t\t});\n\t}\n};\n\n// Init WP TinyMCE Editor\nif(typeof window.KIA_metabox !== 'undefined')\n{\n\tKIA_metabox.mediaButtons();\n}\nvp.init_wpeditor = function($elements)\n{\n\tif(typeof window.KIA_metabox !== 'undefined')\n\t{\n\t\tif($elements.length <= 0)\n\t\t\treturn;\n\t\tKIA_metabox.runTinyMCE($elements);\n\t}\n};\nvp.tinyMCE_save = function()\n{\n\tif(typeof window.tinyMCE !== 'undefined')\n\t{\n\t\ttinyMCE.triggerSave(false, true);\n\t}\n};"
  },
  {
    "path": "public/js/shortcode-menu.js",
    "content": "(function($){\n\t$(document).ready(function(){\n\t\tif(!jQuery.fn.insertAtCaret)\n\t\t{\n\t\t\tjQuery.fn.insertAtCaret = function(text) {\n\t\t\t\treturn this.each(function() {\n\t\t\t\t\tif (document.selection && this.tagName == 'TEXTAREA') {\n\t\t\t\t\t\t//IE textarea support\n\t\t\t\t\t\tthis.focus();\n\t\t\t\t\t\tsel = document.selection.createRange();\n\t\t\t\t\t\tsel.text = text;\n\t\t\t\t\t\tthis.focus();\n\t\t\t\t\t} else if (this.selectionStart || this.selectionStart == '0') {\n\t\t\t\t\t\t//MOZILLA/NETSCAPE support\n\t\t\t\t\t\tstartPos = this.selectionStart;\n\t\t\t\t\t\tendPos = this.selectionEnd;\n\t\t\t\t\t\tscrollTop = this.scrollTop;\n\t\t\t\t\t\tthis.value = this.value.substring(0, startPos) + text + this.value.substring(endPos, this.value.length);\n\t\t\t\t\t\tthis.focus();\n\t\t\t\t\t\tthis.selectionStart = startPos + text.length;\n\t\t\t\t\t\tthis.selectionEnd = startPos + text.length;\n\t\t\t\t\t\tthis.scrollTop = scrollTop;\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// IE input[type=text] and other browsers\n\t\t\t\t\t\tthis.value += text;\n\t\t\t\t\t\tthis.focus();\n\t\t\t\t\t\tthis.value = this.value;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t};\n\t\t}\n\n\t\tvar decodeEntities = (function() {\n\t\t\t// this prevents any overhead from creating the object each time\n\t\t\tvar element = document.createElement('div');\n\n\t\t\tfunction decodeHTMLEntities (str) {\n\t\t\t\tif(str && typeof str === 'string') {\n\t\t\t\t\t// strip script/html tags\n\t\t\t\t\tstr = str.replace(/<script[^>]*>([\\S\\s]*?)<\\/script>/gmi, '');\n\t\t\t\t\tstr = str.replace(/<\\/?\\w(?:[^\"'>]|\"[^\"]*\"|'[^']*')*>/gmi, '');\n\t\t\t\t\telement.innerHTML = str;\n\t\t\t\t\tstr = element.textContent;\n\t\t\t\t\telement.textContent = '';\n\t\t\t\t}\n\n\t\t\t\treturn str;\n\t\t\t}\n\n\t\t\treturn decodeHTMLEntities;\n\t\t})();\n\n\t\tjQuery.fn.scReset = function(){\n\t\t\tif( $(this).is('form') )\n\t\t\t\t$(this)[0].reset();\n\t\t\t\n\t\t\t$(this).find('.vp-sc-field').each(function(i){\n\t\t\t\tvar type = $(this).attr('data-vp-type');\n\t\t\t\tswitch (type)\n\t\t\t\t{\n\t\t\t\t\tcase 'vp-upload':\n\t\t\t\t\t\t$(this).find('.image > img').attr('src', '');\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'vp-color':\n\t\t\t\t\t\t$(this).find('.vp-js-colorpicker').colorpicker('update', '');\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'vp-slider':\n\t\t\t\t\t\tvar val     = $(this).find('input').val();\n\t\t\t\t\t\tvar $slider = $(this).find('.vp-js-slider');\n\t\t\t\t\t\tif(!val)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tval = $(this).find('.vp-js-slider').slider('option', 'min');\n\t\t\t\t\t\t}\n\t\t\t\t\t\t$slider.slider('value', val);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'vp-textarea':\n\t\t\t\t\t\t$(this).find('textarea').val($(this).find('textarea').text());\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'vp-checkimage':\n\t\t\t\t\t\t// trigger change since form reset doesn't trigger it\n\t\t\t\t\t\t$(this).find('input').change();\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'vp-radioimage':\n\t\t\t\t\t\t// trigger change since form reset doesn't trigger it\n\t\t\t\t\t\t$(this).find('input').change();\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'vp-codeeditor':\n\t\t\t\t\t\t$(this).find('textarea').first().val($(this).find('textarea').text()).change();\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tif ($.fn.select2)\n\t\t\t{\n\t\t\t\t// re-init select2\n\t\t\t\t$(this).find('.vp-js-select2').select2(\"destroy\");\n\t\t\t\t// re-init select2 sortable\n\t\t\t\tif ($.fn.select2Sortable) $(this).find('.vp-js-sorter').select2(\"destroy\");\n\t\t\t\t// re-init select2 fontawesome\n\t\t\t\t$(this).find('.vp-js-fontawesome').select2(\"destroy\");\n\n\t\t\t\tvp.init_fontawesome_chooser($(this).find('.vp-js-fontawesome'));\n\t\t\t\tvp.init_select2($(this).find('.vp-js-select2'));\n\t\t\t\tvp.init_sorter($(this).find('.vp-js-sorter'));\n\t\t\t}\n\t\t\treturn $(this);\n\t\t};\n\n\t\t// init controls\n\t\tvp.init_controls($('.vp-sc-main'));\n\n\t\t// shortcode image controls event bind\n\t\tvp.custom_check_radio_event(\".vp-sc-dialog\", \".vp-checkimage .field .input label\");\n\t\tvp.custom_check_radio_event(\".vp-sc-dialog\", \".vp-radioimage .field .input label\");\n\n\t\t$('.vp-sc-menu li a').on('click', function(ev){\n\t\t\tev.preventDefault();\n\n\t\t\tvar $modal   = $(this).parents('.vp-sc-dialog'),\n\t\t\t    $parent  = $(this).parent('li'),\n\t\t\t    targetId = $(this).attr('href').substring(1),\n\t\t\t    $target  = $modal.find('.vp-sc-sub-menu-' + targetId);\n\n\t\t\t// set clicked menu item as current\n\t\t\t$parent.siblings().removeClass('current');\n\t\t\t$parent.addClass('current');\n\n\t\t\t// show menu content\n\t\t\t$target.siblings().addClass('vp-hide');\n\t\t\t$target.removeClass('vp-hide');\n\n\t\t\t// stop event propagation\n\t\t\treturn false;\n\t\t});\n\n\t\t$('.vp-sc-element .vp-sc-element-heading').unbind();\n\t\t$('.vp-sc-element .vp-sc-element-heading a').bind('click.vp_sc', function(e){\n\t\t\te.preventDefault();\n\n\t\t\tvar $parent = $(this).parents('li'),\n\t\t\t    id      = $parent.attr('id'),\n\t\t\t    $form   = $parent.find('.vp-sc-element-form').first();\n\n\t\t\tif($parent.hasClass('active'))\n\t\t\t{\n\t\t\t\t$form.vp_slideUp();\n\t\t\t\t$form.scReset();\n\t\t\t\t$parent.removeClass('active');\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tvar code   = $parent.find('.vp-sc-code').first().html(),\n\t\t\t\t    $modal = $(this).parents('.vp-sc-dialog').first();\n\n\t\t\t\t$modal.find('.vp-sc-element').removeClass('active');\n\t\t\t\t$modal.find('.vp-sc-element-form').vp_slideUp();\n\n\t\t\t\tif($form.exists())\n\t\t\t\t{\n\t\t\t\t\t$parent.addClass('active');\n\t\t\t\t\t$form.vp_slideDown();\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tcode = decodeEntities(code);\n\t\t\t\t\t$modal.trigger('vp_insert_shortcode', code);\n\t\t\t\t\t$modal.trigger('reveal:close');\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\t$('.vp-sc-insert').bind('click.vp_sc_insert', function(e){\n\t\t\te.preventDefault();\n\t\t\tvar $modal  = $(this).parents('.vp-sc-dialog'),\n\t\t\t    $parent = $(this).parents('.vp-sc-element'),\n\t\t\t    $form   = $(this).parents('.vp-sc-element-form'),\n\t\t\t    $fields = $form.find('.vp-sc-field'),\n\t\t\t    values  = {},\n\t\t\t    code    = $parent.find('.vp-sc-code').first().html(),\n\t\t\t    atts    = '';\n\n\t\t\t// trigger non reloading form submit, so that any event binded on this called\n\t\t\t$form.on('submit', function(e){vp.tinyMCE_save(); e.preventDefault();});\n\t\t\t$form.submit();\n\n\t\t\t// gather unique names of the options\n\t\t\t$fields.each(function(i){\n\t\t\t\tvar $input = $(this).find(':not(div).vp-input'),\n\t\t\t\t    name   = $input.attr('name'),\n\t\t\t\t    val    = $input.validationVal(),\n\t\t\t\t    type   = $(this).attr('data-vp-type');\n\n\t\t\t\tif(type === 'vp-toggle')\n\t\t\t\t{\n\t\t\t\t\tif(val) val = 'true';\n\t\t\t\t\telse val = 'false';\n\t\t\t\t}\n\n\t\t\t\tif(val && val !== '')\n\t\t\t\t{\n\t\t\t\t\tvalues[name.substring(1)] = val;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tfor (var name in values)\n\t\t\t{\n\t\t\t\tif(values.hasOwnProperty(name))\n\t\t\t\t{\n\t\t\t\t\tatts += (\" \" + name + '=\"' + values[name] + '\"');\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// print shortcode to editor\t\t\t\t\t\n\t\t\tcode = code.replace(']', atts + ']');\n\t\t\tcode = decodeEntities(code);\n\t\t\t$modal.trigger('vp_insert_shortcode', code);\n\n\t\t\t// reset form and close dialog\n\t\t\t$('.vp-sc-element').removeClass('active');\n\t\t\t$form.vp_slideUp();\n\t\t\t$form.scReset();\n\t\t\t$modal.trigger('reveal:close');\n\t\t});\n\n\t\t$('.vp-sc-cancel').bind('click.vp_sc_cancel', function(e){\n\t\t\te.preventDefault();\n\t\t\t$('.vp-sc-element').removeClass('active');\n\t\t\tvar $form   = $(this).parents('.vp-sc-element-form')\n\t\t\t$form.vp_slideUp();\n\t\t\t$form.scReset();\n\t\t});\n\n\t});\n})(jQuery);"
  },
  {
    "path": "public/js/shortcode-quicktags.js",
    "content": "(function($){\n\n\tif( typeof QTags !== 'undefined' )\n\t{\n\t\tvar qt_cb = function(name){\n\t\t\treturn function(){\n\t\t\t\ttinyMCE.execCommand(name + '_cmd');\n\t\t\t}\n\t\t}\n\t\tfor (var i = 0; i < vp_sg.length; i++) {\n\t\t\tQTags.addButton( vp_sg[i].name, 'Vafpress', qt_cb(vp_sg[i].name), '', '', vp_sg[i].button_title, 999999 );\n\t\t}\n\t}\n\n})(jQuery);"
  },
  {
    "path": "public/js/shortcodes.js",
    "content": "(function($){\n\tfunction create(sg)\n\t{\n\t\ttinymce.create('tinymce.plugins.' + sg.name, {\n\t\t\tinit: function(ed, url) {\n\t\t\t\tvar cmd_cb = function(name) {\n\t\t\t\t\treturn function() {\n\t\t\t\t\t\t$('#' + name + '_modal').reveal({ animation: 'none' });\n\t\t\t\t\t\t$('#' + name + '_modal').css('top', parseInt($('#' + name + '_modal').css('top')) - window.scrollY);\n\t\t\t\t\t\t$('#' + name + '_modal').unbind('reveal:close.vp_sc');\n\t\t\t\t\t\t$('#' + name + '_modal').bind('reveal:close.vp_sc', function () {\n\t\t\t\t\t\t\t$('.vp-sc-menu-item.active').find('.vp-sc-form').scReset().vp_slideUp();\n\t\t\t\t\t\t\t$('.vp-sc-menu-item.active').removeClass('active');\n\t\t\t\t\t\t});\n\t\t\t\t\t\t$('#' + name + '_modal').unbind('vp_insert_shortcode.vp_tinymce');\n\t\t\t\t\t\t$('#' + name + '_modal').bind('vp_insert_shortcode.vp_tinymce', function(event, code) {\n\t\t\t\t\t\t\ted.selection.setContent(code);\n\t\t\t\t\t\t\t$(ed.getElement()).insertAtCaret(code);\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\ted.addCommand(sg.name + '_cmd', cmd_cb(sg.name));\n\t\t\t\ted.addButton(sg.name, {title: sg.button_title, cmd: sg.name + '_cmd', image: sg.main_image});\n\t\t\t},\n\t\t\tgetInfo: function() {\n\t\t\t\treturn {\n\t\t\t\t\tlongname: 'Vafpress Framework',\n\t\t\t\t\tauthor  : 'Vafpress'\n\t\t\t\t};\n\t\t\t}\n\t\t});\n\t}\n\n\tfor (var i = 0; i < vp_sg.length; i++){\n\t\tcreate(vp_sg[i]);\n\t}\n\n})(jQuery);\n\nfor (var i = 0; i < vp_sg.length; i++){\n\ttinymce.PluginManager.add(vp_sg[i].name, tinymce.plugins[vp_sg[i].name]);\n}\n"
  },
  {
    "path": "public/js/vendor/ace/ace.js",
    "content": "(function(){function o(e){var i=function(e,t){return r(\"\",e,t)},s=t;e&&(t[e]||(t[e]={}),s=t[e]);if(!s.define||!s.define.packaged)n.original=s.define,s.define=n,s.define.packaged=!0;if(!s.require||!s.require.packaged)r.original=s.require,s.require=i,s.require.packaged=!0}var e=\"ace\",t=function(){return this}();if(!e&&typeof requirejs!=\"undefined\")return;var n=function(e,t,r){if(typeof e!=\"string\"){n.original?n.original.apply(window,arguments):(console.error(\"dropping module because define wasn't a string.\"),console.trace());return}arguments.length==2&&(r=t),n.modules||(n.modules={}),n.modules[e]=r},r=function(e,t,n){if(Object.prototype.toString.call(t)===\"[object Array]\"){var i=[];for(var o=0,u=t.length;o<u;++o){var a=s(e,t[o]);if(!a&&r.original)return r.original.apply(window,arguments);i.push(a)}n&&n.apply(null,i)}else{if(typeof t==\"string\"){var f=s(e,t);return!f&&r.original?r.original.apply(window,arguments):(n&&n(),f)}if(r.original)return r.original.apply(window,arguments)}},i=function(e,t){if(t.indexOf(\"!\")!==-1){var n=t.split(\"!\");return i(e,n[0])+\"!\"+i(e,n[1])}if(t.charAt(0)==\".\"){var r=e.split(\"/\").slice(0,-1).join(\"/\");t=r+\"/\"+t;while(t.indexOf(\".\")!==-1&&s!=t){var s=t;t=t.replace(/\\/\\.\\//,\"/\").replace(/[^\\/]+\\/\\.\\.\\//,\"\")}}return t},s=function(e,t){t=i(e,t);var s=n.modules[t];if(!s)return null;if(typeof s==\"function\"){var o={},u={id:t,uri:\"\",exports:o,packaged:!0},a=function(e,n){return r(t,e,n)},f=s(a,o,u);return o=f||u.exports,n.modules[t]=o,o}return s};o(e)})(),ace.define(\"ace/ace\",[\"require\",\"exports\",\"module\",\"ace/lib/fixoldbrowsers\",\"ace/lib/dom\",\"ace/lib/event\",\"ace/editor\",\"ace/edit_session\",\"ace/undomanager\",\"ace/virtual_renderer\",\"ace/multi_select\",\"ace/worker/worker_client\",\"ace/keyboard/hash_handler\",\"ace/placeholder\",\"ace/mode/folding/fold_mode\",\"ace/config\"],function(e,t,n){e(\"./lib/fixoldbrowsers\");var r=e(\"./lib/dom\"),i=e(\"./lib/event\"),s=e(\"./editor\").Editor,o=e(\"./edit_session\").EditSession,u=e(\"./undomanager\").UndoManager,a=e(\"./virtual_renderer\").VirtualRenderer,f=e(\"./multi_select\").MultiSelect;e(\"./worker/worker_client\"),e(\"./keyboard/hash_handler\"),e(\"./placeholder\"),e(\"./mode/folding/fold_mode\"),t.config=e(\"./config\"),t.require=e,t.edit=function(e){if(typeof e==\"string\"){var n=e,e=document.getElementById(n);if(!e)throw\"ace.edit can't find div #\"+n}if(e.env&&e.env.editor instanceof s)return e.env.editor;var o=t.createEditSession(r.getInnerText(e));e.innerHTML=\"\";var u=new s(new a(e));new f(u),u.setSession(o);var l={document:o,editor:u,onResize:u.resize.bind(u)};return i.addListener(window,\"resize\",l.onResize),e.env=u.env=l,u},t.createEditSession=function(e,t){var n=new o(e,n);return n.setUndoManager(new u),n},t.EditSession=o,t.UndoManager=u}),ace.define(\"ace/lib/fixoldbrowsers\",[\"require\",\"exports\",\"module\",\"ace/lib/regexp\",\"ace/lib/es5-shim\"],function(e,t,n){e(\"./regexp\"),e(\"./es5-shim\")}),ace.define(\"ace/lib/regexp\",[\"require\",\"exports\",\"module\"],function(e,t,n){function o(e){return(e.global?\"g\":\"\")+(e.ignoreCase?\"i\":\"\")+(e.multiline?\"m\":\"\")+(e.extended?\"x\":\"\")+(e.sticky?\"y\":\"\")}function u(e,t,n){if(Array.prototype.indexOf)return e.indexOf(t,n);for(var r=n||0;r<e.length;r++)if(e[r]===t)return r;return-1}var r={exec:RegExp.prototype.exec,test:RegExp.prototype.test,match:String.prototype.match,replace:String.prototype.replace,split:String.prototype.split},i=r.exec.call(/()??/,\"\")[1]===undefined,s=function(){var e=/^/g;return r.test.call(e,\"\"),!e.lastIndex}();if(s&&i)return;RegExp.prototype.exec=function(e){var t=r.exec.apply(this,arguments),n,a;if(typeof e==\"string\"&&t){!i&&t.length>1&&u(t,\"\")>-1&&(a=RegExp(this.source,r.replace.call(o(this),\"g\",\"\")),r.replace.call(e.slice(t.index),a,function(){for(var e=1;e<arguments.length-2;e++)arguments[e]===undefined&&(t[e]=undefined)}));if(this._xregexp&&this._xregexp.captureNames)for(var f=1;f<t.length;f++)n=this._xregexp.captureNames[f-1],n&&(t[n]=t[f]);!s&&this.global&&!t[0].length&&this.lastIndex>t.index&&this.lastIndex--}return t},s||(RegExp.prototype.test=function(e){var t=r.exec.call(this,e);return t&&this.global&&!t[0].length&&this.lastIndex>t.index&&this.lastIndex--,!!t})}),ace.define(\"ace/lib/es5-shim\",[\"require\",\"exports\",\"module\"],function(e,t,n){function r(){}function w(e){try{return Object.defineProperty(e,\"sentinel\",{}),\"sentinel\"in e}catch(t){}}function j(e){return e=+e,e!==e?e=0:e!==0&&e!==1/0&&e!==-1/0&&(e=(e>0||-1)*Math.floor(Math.abs(e))),e}function F(e){var t=typeof e;return e===null||t===\"undefined\"||t===\"boolean\"||t===\"number\"||t===\"string\"}function I(e){var t,n,r;if(F(e))return e;n=e.valueOf;if(typeof n==\"function\"){t=n.call(e);if(F(t))return t}r=e.toString;if(typeof r==\"function\"){t=r.call(e);if(F(t))return t}throw new TypeError}Function.prototype.bind||(Function.prototype.bind=function(t){var n=this;if(typeof n!=\"function\")throw new TypeError(\"Function.prototype.bind called on incompatible \"+n);var i=u.call(arguments,1),s=function(){if(this instanceof s){var e=n.apply(this,i.concat(u.call(arguments)));return Object(e)===e?e:this}return n.apply(t,i.concat(u.call(arguments)))};return n.prototype&&(r.prototype=n.prototype,s.prototype=new r,r.prototype=null),s});var i=Function.prototype.call,s=Array.prototype,o=Object.prototype,u=s.slice,a=i.bind(o.toString),f=i.bind(o.hasOwnProperty),l,c,h,p,d;if(d=f(o,\"__defineGetter__\"))l=i.bind(o.__defineGetter__),c=i.bind(o.__defineSetter__),h=i.bind(o.__lookupGetter__),p=i.bind(o.__lookupSetter__);if([1,2].splice(0).length!=2)if(!function(){function e(e){var t=new Array(e+2);return t[0]=t[1]=0,t}var t=[],n;t.splice.apply(t,e(20)),t.splice.apply(t,e(26)),n=t.length,t.splice(5,0,\"XXX\"),n+1==t.length;if(n+1==t.length)return!0}())Array.prototype.splice=function(e,t){var n=this.length;e>0?e>n&&(e=n):e==void 0?e=0:e<0&&(e=Math.max(n+e,0)),e+t<n||(t=n-e);var r=this.slice(e,e+t),i=u.call(arguments,2),s=i.length;if(e===n)s&&this.push.apply(this,i);else{var o=Math.min(t,n-e),a=e+o,f=a+s-o,l=n-a,c=n-o;if(f<a)for(var h=0;h<l;++h)this[f+h]=this[a+h];else if(f>a)for(h=l;h--;)this[f+h]=this[a+h];if(s&&e===c)this.length=c,this.push.apply(this,i);else{this.length=c+s;for(h=0;h<s;++h)this[e+h]=i[h]}}return r};else{var v=Array.prototype.splice;Array.prototype.splice=function(e,t){return arguments.length?v.apply(this,[e===void 0?0:e,t===void 0?this.length-e:t].concat(u.call(arguments,2))):[]}}Array.isArray||(Array.isArray=function(t){return a(t)==\"[object Array]\"});var m=Object(\"a\"),g=m[0]!=\"a\"||!(0 in m);Array.prototype.forEach||(Array.prototype.forEach=function(t){var n=q(this),r=g&&a(this)==\"[object String]\"?this.split(\"\"):n,i=arguments[1],s=-1,o=r.length>>>0;if(a(t)!=\"[object Function]\")throw new TypeError;while(++s<o)s in r&&t.call(i,r[s],s,n)}),Array.prototype.map||(Array.prototype.map=function(t){var n=q(this),r=g&&a(this)==\"[object String]\"?this.split(\"\"):n,i=r.length>>>0,s=Array(i),o=arguments[1];if(a(t)!=\"[object Function]\")throw new TypeError(t+\" is not a function\");for(var u=0;u<i;u++)u in r&&(s[u]=t.call(o,r[u],u,n));return s}),Array.prototype.filter||(Array.prototype.filter=function(t){var n=q(this),r=g&&a(this)==\"[object String]\"?this.split(\"\"):n,i=r.length>>>0,s=[],o,u=arguments[1];if(a(t)!=\"[object Function]\")throw new TypeError(t+\" is not a function\");for(var f=0;f<i;f++)f in r&&(o=r[f],t.call(u,o,f,n)&&s.push(o));return s}),Array.prototype.every||(Array.prototype.every=function(t){var n=q(this),r=g&&a(this)==\"[object String]\"?this.split(\"\"):n,i=r.length>>>0,s=arguments[1];if(a(t)!=\"[object Function]\")throw new TypeError(t+\" is not a function\");for(var o=0;o<i;o++)if(o in r&&!t.call(s,r[o],o,n))return!1;return!0}),Array.prototype.some||(Array.prototype.some=function(t){var n=q(this),r=g&&a(this)==\"[object String]\"?this.split(\"\"):n,i=r.length>>>0,s=arguments[1];if(a(t)!=\"[object Function]\")throw new TypeError(t+\" is not a function\");for(var o=0;o<i;o++)if(o in r&&t.call(s,r[o],o,n))return!0;return!1}),Array.prototype.reduce||(Array.prototype.reduce=function(t){var n=q(this),r=g&&a(this)==\"[object String]\"?this.split(\"\"):n,i=r.length>>>0;if(a(t)!=\"[object Function]\")throw new TypeError(t+\" is not a function\");if(!i&&arguments.length==1)throw new TypeError(\"reduce of empty array with no initial value\");var s=0,o;if(arguments.length>=2)o=arguments[1];else do{if(s in r){o=r[s++];break}if(++s>=i)throw new TypeError(\"reduce of empty array with no initial value\")}while(!0);for(;s<i;s++)s in r&&(o=t.call(void 0,o,r[s],s,n));return o}),Array.prototype.reduceRight||(Array.prototype.reduceRight=function(t){var n=q(this),r=g&&a(this)==\"[object String]\"?this.split(\"\"):n,i=r.length>>>0;if(a(t)!=\"[object Function]\")throw new TypeError(t+\" is not a function\");if(!i&&arguments.length==1)throw new TypeError(\"reduceRight of empty array with no initial value\");var s,o=i-1;if(arguments.length>=2)s=arguments[1];else do{if(o in r){s=r[o--];break}if(--o<0)throw new TypeError(\"reduceRight of empty array with no initial value\")}while(!0);do o in this&&(s=t.call(void 0,s,r[o],o,n));while(o--);return s});if(!Array.prototype.indexOf||[0,1].indexOf(1,2)!=-1)Array.prototype.indexOf=function(t){var n=g&&a(this)==\"[object String]\"?this.split(\"\"):q(this),r=n.length>>>0;if(!r)return-1;var i=0;arguments.length>1&&(i=j(arguments[1])),i=i>=0?i:Math.max(0,r+i);for(;i<r;i++)if(i in n&&n[i]===t)return i;return-1};if(!Array.prototype.lastIndexOf||[0,1].lastIndexOf(0,-3)!=-1)Array.prototype.lastIndexOf=function(t){var n=g&&a(this)==\"[object String]\"?this.split(\"\"):q(this),r=n.length>>>0;if(!r)return-1;var i=r-1;arguments.length>1&&(i=Math.min(i,j(arguments[1]))),i=i>=0?i:r-Math.abs(i);for(;i>=0;i--)if(i in n&&t===n[i])return i;return-1};Object.getPrototypeOf||(Object.getPrototypeOf=function(t){return t.__proto__||(t.constructor?t.constructor.prototype:o)});if(!Object.getOwnPropertyDescriptor){var y=\"Object.getOwnPropertyDescriptor called on a non-object: \";Object.getOwnPropertyDescriptor=function(t,n){if(typeof t!=\"object\"&&typeof t!=\"function\"||t===null)throw new TypeError(y+t);if(!f(t,n))return;var r,i,s;r={enumerable:!0,configurable:!0};if(d){var u=t.__proto__;t.__proto__=o;var i=h(t,n),s=p(t,n);t.__proto__=u;if(i||s)return i&&(r.get=i),s&&(r.set=s),r}return r.value=t[n],r}}Object.getOwnPropertyNames||(Object.getOwnPropertyNames=function(t){return Object.keys(t)});if(!Object.create){var b;Object.prototype.__proto__===null?b=function(){return{__proto__:null}}:b=function(){var e={};for(var t in e)e[t]=null;return e.constructor=e.hasOwnProperty=e.propertyIsEnumerable=e.isPrototypeOf=e.toLocaleString=e.toString=e.valueOf=e.__proto__=null,e},Object.create=function(t,n){var r;if(t===null)r=b();else{if(typeof t!=\"object\")throw new TypeError(\"typeof prototype[\"+typeof t+\"] != 'object'\");var i=function(){};i.prototype=t,r=new i,r.__proto__=t}return n!==void 0&&Object.defineProperties(r,n),r}}if(Object.defineProperty){var E=w({}),S=typeof document==\"undefined\"||w(document.createElement(\"div\"));if(!E||!S)var x=Object.defineProperty}if(!Object.defineProperty||x){var T=\"Property description must be an object: \",N=\"Object.defineProperty called on non-object: \",C=\"getters & setters can not be defined on this javascript engine\";Object.defineProperty=function(t,n,r){if(typeof t!=\"object\"&&typeof t!=\"function\"||t===null)throw new TypeError(N+t);if(typeof r!=\"object\"&&typeof r!=\"function\"||r===null)throw new TypeError(T+r);if(x)try{return x.call(Object,t,n,r)}catch(i){}if(f(r,\"value\"))if(d&&(h(t,n)||p(t,n))){var s=t.__proto__;t.__proto__=o,delete t[n],t[n]=r.value,t.__proto__=s}else t[n]=r.value;else{if(!d)throw new TypeError(C);f(r,\"get\")&&l(t,n,r.get),f(r,\"set\")&&c(t,n,r.set)}return t}}Object.defineProperties||(Object.defineProperties=function(t,n){for(var r in n)f(n,r)&&Object.defineProperty(t,r,n[r]);return t}),Object.seal||(Object.seal=function(t){return t}),Object.freeze||(Object.freeze=function(t){return t});try{Object.freeze(function(){})}catch(k){Object.freeze=function(t){return function(n){return typeof n==\"function\"?n:t(n)}}(Object.freeze)}Object.preventExtensions||(Object.preventExtensions=function(t){return t}),Object.isSealed||(Object.isSealed=function(t){return!1}),Object.isFrozen||(Object.isFrozen=function(t){return!1}),Object.isExtensible||(Object.isExtensible=function(t){if(Object(t)===t)throw new TypeError;var n=\"\";while(f(t,n))n+=\"?\";t[n]=!0;var r=f(t,n);return delete t[n],r});if(!Object.keys){var L=!0,A=[\"toString\",\"toLocaleString\",\"valueOf\",\"hasOwnProperty\",\"isPrototypeOf\",\"propertyIsEnumerable\",\"constructor\"],O=A.length;for(var M in{toString:null})L=!1;Object.keys=function R(e){if(typeof e!=\"object\"&&typeof e!=\"function\"||e===null)throw new TypeError(\"Object.keys called on a non-object\");var R=[];for(var t in e)f(e,t)&&R.push(t);if(L)for(var n=0,r=O;n<r;n++){var i=A[n];f(e,i)&&R.push(i)}return R}}Date.now||(Date.now=function(){return(new Date).getTime()});if(\"0\".split(void 0,0).length){var _=String.prototype.split;String.prototype.split=function(e,t){return e===void 0&&t===0?[]:_.apply(this,arguments)}}if(\"\".substr&&\"0b\".substr(-1)!==\"b\"){var D=String.prototype.substr;String.prototype.substr=function(e,t){return D.call(this,e<0?(e=this.length+e)<0?0:e:e,t)}}var P=\"\t\\n\u000b\\f\\r   ᠎             　\\u2028\\u2029﻿\";if(!String.prototype.trim||P.trim()){P=\"[\"+P+\"]\";var H=new RegExp(\"^\"+P+P+\"*\"),B=new RegExp(P+P+\"*$\");String.prototype.trim=function(){if(this===undefined||this===null)throw new TypeError(\"can't convert \"+this+\" to object\");return String(this).replace(H,\"\").replace(B,\"\")}}var q=function(e){if(e==null)throw new TypeError(\"can't convert \"+e+\" to object\");return Object(e)}}),ace.define(\"ace/lib/dom\",[\"require\",\"exports\",\"module\"],function(e,t,n){var r=\"http://www.w3.org/1999/xhtml\";t.createElement=function(e,t){return document.createElementNS?document.createElementNS(t||r,e):document.createElement(e)},t.setText=function(e,t){e.innerText!==undefined&&(e.innerText=t),e.textContent!==undefined&&(e.textContent=t)},t.hasCssClass=function(e,t){var n=e.className.split(/\\s+/g);return n.indexOf(t)!==-1},t.addCssClass=function(e,n){t.hasCssClass(e,n)||(e.className+=\" \"+n)},t.removeCssClass=function(e,t){var n=e.className.split(/\\s+/g);for(;;){var r=n.indexOf(t);if(r==-1)break;n.splice(r,1)}e.className=n.join(\" \")},t.toggleCssClass=function(e,t){var n=e.className.split(/\\s+/g),r=!0;for(;;){var i=n.indexOf(t);if(i==-1)break;r=!1,n.splice(i,1)}return r&&n.push(t),e.className=n.join(\" \"),r},t.setCssClass=function(e,n,r){r?t.addCssClass(e,n):t.removeCssClass(e,n)},t.hasCssString=function(e,t){var n=0,r;t=t||document;if(t.createStyleSheet&&(r=t.styleSheets)){while(n<r.length)if(r[n++].owningElement.id===e)return!0}else if(r=t.getElementsByTagName(\"style\"))while(n<r.length)if(r[n++].id===e)return!0;return!1},t.importCssString=function(n,i,s){s=s||document;if(i&&t.hasCssString(i,s))return null;var o;if(s.createStyleSheet)o=s.createStyleSheet(),o.cssText=n,i&&(o.owningElement.id=i);else{o=s.createElementNS?s.createElementNS(r,\"style\"):s.createElement(\"style\"),o.appendChild(s.createTextNode(n)),i&&(o.id=i);var u=s.getElementsByTagName(\"head\")[0]||s.documentElement;u.appendChild(o)}},t.importCssStylsheet=function(e,n){if(n.createStyleSheet)n.createStyleSheet(e);else{var r=t.createElement(\"link\");r.rel=\"stylesheet\",r.href=e;var i=n.getElementsByTagName(\"head\")[0]||n.documentElement;i.appendChild(r)}},t.getInnerWidth=function(e){return parseInt(t.computedStyle(e,\"paddingLeft\"),10)+parseInt(t.computedStyle(e,\"paddingRight\"),10)+e.clientWidth},t.getInnerHeight=function(e){return parseInt(t.computedStyle(e,\"paddingTop\"),10)+parseInt(t.computedStyle(e,\"paddingBottom\"),10)+e.clientHeight},window.pageYOffset!==undefined?(t.getPageScrollTop=function(){return window.pageYOffset},t.getPageScrollLeft=function(){return window.pageXOffset}):(t.getPageScrollTop=function(){return document.body.scrollTop},t.getPageScrollLeft=function(){return document.body.scrollLeft}),window.getComputedStyle?t.computedStyle=function(e,t){return t?(window.getComputedStyle(e,\"\")||{})[t]||\"\":window.getComputedStyle(e,\"\")||{}}:t.computedStyle=function(e,t){return t?e.currentStyle[t]:e.currentStyle},t.scrollbarWidth=function(e){var n=t.createElement(\"ace_inner\");n.style.width=\"100%\",n.style.minWidth=\"0px\",n.style.height=\"200px\",n.style.display=\"block\";var r=t.createElement(\"ace_outer\"),i=r.style;i.position=\"absolute\",i.left=\"-10000px\",i.overflow=\"hidden\",i.width=\"200px\",i.minWidth=\"0px\",i.height=\"150px\",i.display=\"block\",r.appendChild(n);var s=e.documentElement;s.appendChild(r);var o=n.offsetWidth;i.overflow=\"scroll\";var u=n.offsetWidth;return o==u&&(u=r.clientWidth),s.removeChild(r),o-u},t.setInnerHtml=function(e,t){var n=e.cloneNode(!1);return n.innerHTML=t,e.parentNode.replaceChild(n,e),n},t.setInnerText=function(e,t){var n=e.ownerDocument;n.body&&\"textContent\"in n.body?e.textContent=t:e.innerText=t},t.getInnerText=function(e){var t=e.ownerDocument;return t.body&&\"textContent\"in t.body?e.textContent:e.innerText||e.textContent||\"\"},t.getParentWindow=function(e){return e.defaultView||e.parentWindow}}),ace.define(\"ace/lib/event\",[\"require\",\"exports\",\"module\",\"ace/lib/keys\",\"ace/lib/useragent\",\"ace/lib/dom\"],function(e,t,n){function o(e,t,n){var s=0;!i.isOpera||\"KeyboardEvent\"in window||!i.isMac?s=0|(t.ctrlKey?1:0)|(t.altKey?2:0)|(t.shiftKey?4:0)|(t.metaKey?8:0):s=0|(t.metaKey?1:0)|(t.altKey?2:0)|(t.shiftKey?4:0)|(t.ctrlKey?8:0);if(n in r.MODIFIER_KEYS){switch(r.MODIFIER_KEYS[n]){case\"Alt\":s=2;break;case\"Shift\":s=4;break;case\"Ctrl\":s=1;break;default:s=8}n=0}return s&8&&(n==91||n==93)&&(n=0),!!s||n in r.FUNCTION_KEYS||n in r.PRINTABLE_KEYS?e(t,s,n):!1}var r=e(\"./keys\"),i=e(\"./useragent\"),s=e(\"./dom\");t.addListener=function(e,t,n){if(e.addEventListener)return e.addEventListener(t,n,!1);if(e.attachEvent){var r=function(){n(window.event)};n._wrapper=r,e.attachEvent(\"on\"+t,r)}},t.removeListener=function(e,t,n){if(e.removeEventListener)return e.removeEventListener(t,n,!1);e.detachEvent&&e.detachEvent(\"on\"+t,n._wrapper||n)},t.stopEvent=function(e){return t.stopPropagation(e),t.preventDefault(e),!1},t.stopPropagation=function(e){e.stopPropagation?e.stopPropagation():e.cancelBubble=!0},t.preventDefault=function(e){e.preventDefault?e.preventDefault():e.returnValue=!1},t.getButton=function(e){return e.type==\"dblclick\"?0:e.type==\"contextmenu\"||e.ctrlKey&&i.isMac?2:e.preventDefault?e.button:{1:0,2:2,4:1}[e.button]},document.documentElement.setCapture?t.capture=function(e,n,r){function s(o){n(o),i||(i=!0,r(o)),t.removeListener(e,\"mousemove\",n),t.removeListener(e,\"mouseup\",s),t.removeListener(e,\"losecapture\",s),e.releaseCapture()}var i=!1;t.addListener(e,\"mousemove\",n),t.addListener(e,\"mouseup\",s),t.addListener(e,\"losecapture\",s),e.setCapture()}:t.capture=function(e,t,n){function r(e){t&&t(e),n&&n(e),document.removeEventListener(\"mousemove\",t,!0),document.removeEventListener(\"mouseup\",r,!0),e.stopPropagation()}document.addEventListener(\"mousemove\",t,!0),document.addEventListener(\"mouseup\",r,!0)},t.addMouseWheelListener=function(e,n){var r=8,i=function(e){e.wheelDelta!==undefined?e.wheelDeltaX!==undefined?(e.wheelX=-e.wheelDeltaX/r,e.wheelY=-e.wheelDeltaY/r):(e.wheelX=0,e.wheelY=-e.wheelDelta/r):e.axis&&e.axis==e.HORIZONTAL_AXIS?(e.wheelX=(e.detail||0)*5,e.wheelY=0):(e.wheelX=0,e.wheelY=(e.detail||0)*5),n(e)};t.addListener(e,\"DOMMouseScroll\",i),t.addListener(e,\"mousewheel\",i)},t.addMultiMouseDownListener=function(e,n,r,s){var o=0,u,a,f,l={2:\"dblclick\",3:\"tripleclick\",4:\"quadclick\"};t.addListener(e,\"mousedown\",function(e){if(t.getButton(e)!=0)o=0;else{var i=Math.abs(e.clientX-u)>5||Math.abs(e.clientY-a)>5;if(!f||i)o=0;o+=1,f&&clearTimeout(f),f=setTimeout(function(){f=null},n[o-1]||600)}o==1&&(u=e.clientX,a=e.clientY),r[s](\"mousedown\",e);if(o>4)o=0;else if(o>1)return r[s](l[o],e)}),i.isOldIE&&t.addListener(e,\"dblclick\",function(e){o=2,f&&clearTimeout(f),f=setTimeout(function(){f=null},n[o-1]||600),r[s](\"mousedown\",e),r[s](l[o],e)})},t.addCommandKeyListener=function(e,n){var r=t.addListener;if(i.isOldGecko||i.isOpera&&!(\"KeyboardEvent\"in window)){var s=null;r(e,\"keydown\",function(e){s=e.keyCode}),r(e,\"keypress\",function(e){return o(n,e,s)})}else{var u=null;r(e,\"keydown\",function(e){return u=e.keyIdentifier||e.keyCode,o(n,e,e.keyCode)})}};if(window.postMessage&&!i.isOldIE){var u=1;t.nextTick=function(e,n){n=n||window;var r=\"zero-timeout-message-\"+u;t.addListener(n,\"message\",function i(s){s.data==r&&(t.stopPropagation(s),t.removeListener(n,\"message\",i),e())}),n.postMessage(r,\"*\")}}t.nextFrame=window.requestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame,t.nextFrame?t.nextFrame=t.nextFrame.bind(window):t.nextFrame=function(e){setTimeout(e,17)}}),ace.define(\"ace/lib/keys\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\"],function(e,t,n){var r=e(\"./oop\"),i=function(){var e={MODIFIER_KEYS:{16:\"Shift\",17:\"Ctrl\",18:\"Alt\",224:\"Meta\"},KEY_MODS:{ctrl:1,alt:2,option:2,shift:4,meta:8,command:8},FUNCTION_KEYS:{8:\"Backspace\",9:\"Tab\",13:\"Return\",19:\"Pause\",27:\"Esc\",32:\"Space\",33:\"PageUp\",34:\"PageDown\",35:\"End\",36:\"Home\",37:\"Left\",38:\"Up\",39:\"Right\",40:\"Down\",44:\"Print\",45:\"Insert\",46:\"Delete\",96:\"Numpad0\",97:\"Numpad1\",98:\"Numpad2\",99:\"Numpad3\",100:\"Numpad4\",101:\"Numpad5\",102:\"Numpad6\",103:\"Numpad7\",104:\"Numpad8\",105:\"Numpad9\",112:\"F1\",113:\"F2\",114:\"F3\",115:\"F4\",116:\"F5\",117:\"F6\",118:\"F7\",119:\"F8\",120:\"F9\",121:\"F10\",122:\"F11\",123:\"F12\",144:\"Numlock\",145:\"Scrolllock\"},PRINTABLE_KEYS:{32:\" \",48:\"0\",49:\"1\",50:\"2\",51:\"3\",52:\"4\",53:\"5\",54:\"6\",55:\"7\",56:\"8\",57:\"9\",59:\";\",61:\"=\",65:\"a\",66:\"b\",67:\"c\",68:\"d\",69:\"e\",70:\"f\",71:\"g\",72:\"h\",73:\"i\",74:\"j\",75:\"k\",76:\"l\",77:\"m\",78:\"n\",79:\"o\",80:\"p\",81:\"q\",82:\"r\",83:\"s\",84:\"t\",85:\"u\",86:\"v\",87:\"w\",88:\"x\",89:\"y\",90:\"z\",107:\"+\",109:\"-\",110:\".\",188:\",\",190:\".\",191:\"/\",192:\"`\",219:\"[\",220:\"\\\\\",221:\"]\",222:\"'\"}};for(var t in e.FUNCTION_KEYS){var n=e.FUNCTION_KEYS[t].toLowerCase();e[n]=parseInt(t,10)}return r.mixin(e,e.MODIFIER_KEYS),r.mixin(e,e.PRINTABLE_KEYS),r.mixin(e,e.FUNCTION_KEYS),e.enter=e[\"return\"],e.escape=e.esc,e.del=e[\"delete\"],e[173]=\"-\",e}();r.mixin(t,i),t.keyCodeToString=function(e){return(i[e]||String.fromCharCode(e)).toLowerCase()}}),ace.define(\"ace/lib/oop\",[\"require\",\"exports\",\"module\"],function(e,t,n){t.inherits=function(){var e=function(){};return function(t,n){e.prototype=n.prototype,t.super_=n.prototype,t.prototype=new e,t.prototype.constructor=t}}(),t.mixin=function(e,t){for(var n in t)e[n]=t[n]},t.implement=function(e,n){t.mixin(e,n)}}),ace.define(\"ace/lib/useragent\",[\"require\",\"exports\",\"module\"],function(e,t,n){t.OS={LINUX:\"LINUX\",MAC:\"MAC\",WINDOWS:\"WINDOWS\"},t.getOS=function(){return t.isMac?t.OS.MAC:t.isLinux?t.OS.LINUX:t.OS.WINDOWS};if(typeof navigator!=\"object\")return;var r=(navigator.platform.match(/mac|win|linux/i)||[\"other\"])[0].toLowerCase(),i=navigator.userAgent;t.isWin=r==\"win\",t.isMac=r==\"mac\",t.isLinux=r==\"linux\",t.isIE=(navigator.appName==\"Microsoft Internet Explorer\"||navigator.appName.indexOf(\"MSAppHost\")>=0)&&parseFloat(navigator.userAgent.match(/MSIE ([0-9]+[\\.0-9]+)/)[1]),t.isOldIE=t.isIE&&t.isIE<9,t.isGecko=t.isMozilla=window.controllers&&window.navigator.product===\"Gecko\",t.isOldGecko=t.isGecko&&parseInt((navigator.userAgent.match(/rv\\:(\\d+)/)||[])[1],10)<4,t.isOpera=window.opera&&Object.prototype.toString.call(window.opera)==\"[object Opera]\",t.isWebKit=parseFloat(i.split(\"WebKit/\")[1])||undefined,t.isChrome=parseFloat(i.split(\" Chrome/\")[1])||undefined,t.isAIR=i.indexOf(\"AdobeAIR\")>=0,t.isIPad=i.indexOf(\"iPad\")>=0,t.isTouchPad=i.indexOf(\"TouchPad\")>=0}),ace.define(\"ace/editor\",[\"require\",\"exports\",\"module\",\"ace/lib/fixoldbrowsers\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/lib/useragent\",\"ace/keyboard/textinput\",\"ace/mouse/mouse_handler\",\"ace/mouse/fold_handler\",\"ace/keyboard/keybinding\",\"ace/edit_session\",\"ace/search\",\"ace/range\",\"ace/lib/event_emitter\",\"ace/commands/command_manager\",\"ace/commands/default_commands\",\"ace/config\"],function(e,t,n){e(\"./lib/fixoldbrowsers\");var r=e(\"./lib/oop\"),i=e(\"./lib/lang\"),s=e(\"./lib/useragent\"),o=e(\"./keyboard/textinput\").TextInput,u=e(\"./mouse/mouse_handler\").MouseHandler,a=e(\"./mouse/fold_handler\").FoldHandler,f=e(\"./keyboard/keybinding\").KeyBinding,l=e(\"./edit_session\").EditSession,c=e(\"./search\").Search,h=e(\"./range\").Range,p=e(\"./lib/event_emitter\").EventEmitter,d=e(\"./commands/command_manager\").CommandManager,v=e(\"./commands/default_commands\").commands,m=e(\"./config\"),g=function(e,t){var n=e.getContainerElement();this.container=n,this.renderer=e,this.commands=new d(s.isMac?\"mac\":\"win\",v),this.textInput=new o(e.getTextAreaContainer(),this),this.renderer.textarea=this.textInput.getElement(),this.keyBinding=new f(this),this.$mouseHandler=new u(this),new a(this),this.$blockScrolling=0,this.$search=(new c).set({wrap:!0}),this.setSession(t||new l(\"\"))};(function(){r.implement(this,p),this.setKeyboardHandler=function(e){if(typeof e==\"string\"&&e){this.$keybindingId=e;var t=this;m.loadModule([\"keybinding\",e],function(n){t.$keybindingId==e&&t.keyBinding.setKeyboardHandler(n&&n.handler)})}else delete this.$keybindingId,this.keyBinding.setKeyboardHandler(e)},this.getKeyboardHandler=function(){return this.keyBinding.getKeyboardHandler()},this.setSession=function(e){if(this.session==e)return;if(this.session){var t=this.session;this.session.removeEventListener(\"change\",this.$onDocumentChange),this.session.removeEventListener(\"changeMode\",this.$onChangeMode),this.session.removeEventListener(\"tokenizerUpdate\",this.$onTokenizerUpdate),this.session.removeEventListener(\"changeTabSize\",this.$onChangeTabSize),this.session.removeEventListener(\"changeWrapLimit\",this.$onChangeWrapLimit),this.session.removeEventListener(\"changeWrapMode\",this.$onChangeWrapMode),this.session.removeEventListener(\"onChangeFold\",this.$onChangeFold),this.session.removeEventListener(\"changeFrontMarker\",this.$onChangeFrontMarker),this.session.removeEventListener(\"changeBackMarker\",this.$onChangeBackMarker),this.session.removeEventListener(\"changeBreakpoint\",this.$onChangeBreakpoint),this.session.removeEventListener(\"changeAnnotation\",this.$onChangeAnnotation),this.session.removeEventListener(\"changeOverwrite\",this.$onCursorChange),this.session.removeEventListener(\"changeScrollTop\",this.$onScrollTopChange),this.session.removeEventListener(\"changeLeftTop\",this.$onScrollLeftChange);var n=this.session.getSelection();n.removeEventListener(\"changeCursor\",this.$onCursorChange),n.removeEventListener(\"changeSelection\",this.$onSelectionChange)}this.session=e,this.$onDocumentChange=this.onDocumentChange.bind(this),e.addEventListener(\"change\",this.$onDocumentChange),this.renderer.setSession(e),this.$onChangeMode=this.onChangeMode.bind(this),e.addEventListener(\"changeMode\",this.$onChangeMode),this.$onTokenizerUpdate=this.onTokenizerUpdate.bind(this),e.addEventListener(\"tokenizerUpdate\",this.$onTokenizerUpdate),this.$onChangeTabSize=this.renderer.onChangeTabSize.bind(this.renderer),e.addEventListener(\"changeTabSize\",this.$onChangeTabSize),this.$onChangeWrapLimit=this.onChangeWrapLimit.bind(this),e.addEventListener(\"changeWrapLimit\",this.$onChangeWrapLimit),this.$onChangeWrapMode=this.onChangeWrapMode.bind(this),e.addEventListener(\"changeWrapMode\",this.$onChangeWrapMode),this.$onChangeFold=this.onChangeFold.bind(this),e.addEventListener(\"changeFold\",this.$onChangeFold),this.$onChangeFrontMarker=this.onChangeFrontMarker.bind(this),this.session.addEventListener(\"changeFrontMarker\",this.$onChangeFrontMarker),this.$onChangeBackMarker=this.onChangeBackMarker.bind(this),this.session.addEventListener(\"changeBackMarker\",this.$onChangeBackMarker),this.$onChangeBreakpoint=this.onChangeBreakpoint.bind(this),this.session.addEventListener(\"changeBreakpoint\",this.$onChangeBreakpoint),this.$onChangeAnnotation=this.onChangeAnnotation.bind(this),this.session.addEventListener(\"changeAnnotation\",this.$onChangeAnnotation),this.$onCursorChange=this.onCursorChange.bind(this),this.session.addEventListener(\"changeOverwrite\",this.$onCursorChange),this.$onScrollTopChange=this.onScrollTopChange.bind(this),this.session.addEventListener(\"changeScrollTop\",this.$onScrollTopChange),this.$onScrollLeftChange=this.onScrollLeftChange.bind(this),this.session.addEventListener(\"changeScrollLeft\",this.$onScrollLeftChange),this.selection=e.getSelection(),this.selection.addEventListener(\"changeCursor\",this.$onCursorChange),this.$onSelectionChange=this.onSelectionChange.bind(this),this.selection.addEventListener(\"changeSelection\",this.$onSelectionChange),this.onChangeMode(),this.$blockScrolling+=1,this.onCursorChange(),this.$blockScrolling-=1,this.onScrollTopChange(),this.onScrollLeftChange(),this.onSelectionChange(),this.onChangeFrontMarker(),this.onChangeBackMarker(),this.onChangeBreakpoint(),this.onChangeAnnotation(),this.session.getUseWrapMode()&&this.renderer.adjustWrapLimit(),this.renderer.updateFull(),this._emit(\"changeSession\",{session:e,oldSession:t})},this.getSession=function(){return this.session},this.setValue=function(e,t){return this.session.doc.setValue(e),t?t==1?this.navigateFileEnd():t==-1&&this.navigateFileStart():this.selectAll(),e},this.getValue=function(){return this.session.getValue()},this.getSelection=function(){return this.selection},this.resize=function(e){this.renderer.onResize(e)},this.setTheme=function(e){this.renderer.setTheme(e)},this.getTheme=function(){return this.renderer.getTheme()},this.setStyle=function(e){this.renderer.setStyle(e)},this.unsetStyle=function(e){this.renderer.unsetStyle(e)},this.setFontSize=function(e){typeof e==\"number\"&&(e+=\"px\"),this.container.style.fontSize=e,this.renderer.updateFontSize()},this.$highlightBrackets=function(){this.session.$bracketHighlight&&(this.session.removeMarker(this.session.$bracketHighlight),this.session.$bracketHighlight=null);if(this.$highlightPending)return;var e=this;this.$highlightPending=!0,setTimeout(function(){e.$highlightPending=!1;var t=e.session.findMatchingBracket(e.getCursorPosition());if(t){var n=new h(t.row,t.column,t.row,t.column+1);e.session.$bracketHighlight=e.session.addMarker(n,\"ace_bracket\",\"text\")}},50)},this.focus=function(){var e=this;setTimeout(function(){e.textInput.focus()}),this.textInput.focus()},this.isFocused=function(){return this.textInput.isFocused()},this.blur=function(){this.textInput.blur()},this.onFocus=function(){if(this.$isFocused)return;this.$isFocused=!0,this.renderer.showCursor(),this.renderer.visualizeFocus(),this._emit(\"focus\")},this.onBlur=function(){if(!this.$isFocused)return;this.$isFocused=!1,this.renderer.hideCursor(),this.renderer.visualizeBlur(),this._emit(\"blur\")},this.$cursorChange=function(){this.renderer.updateCursor()},this.onDocumentChange=function(e){var t=e.data,n=t.range,r;n.start.row==n.end.row&&t.action!=\"insertLines\"&&t.action!=\"removeLines\"?r=n.end.row:r=Infinity,this.renderer.updateLines(n.start.row,r),this._emit(\"change\",e),this.$cursorChange()},this.onTokenizerUpdate=function(e){var t=e.data;this.renderer.updateLines(t.first,t.last)},this.onScrollTopChange=function(){this.renderer.scrollToY(this.session.getScrollTop())},this.onScrollLeftChange=function(){this.renderer.scrollToX(this.session.getScrollLeft())},this.onCursorChange=function(){this.$cursorChange(),this.$blockScrolling||this.renderer.scrollCursorIntoView(),this.$highlightBrackets(),this.$updateHighlightActiveLine(),this._emit(\"changeSelection\")},this.$updateHighlightActiveLine=function(){var e=this.getSession(),t;this.$highlightActiveLine&&(this.$selectionStyle!=\"line\"||!this.selection.isMultiLine())&&(t=this.getCursorPosition()),e.$highlightLineMarker&&!t?(e.removeMarker(e.$highlightLineMarker.id),e.$highlightLineMarker=null):!e.$highlightLineMarker&&t?e.$highlightLineMarker=e.highlightLines(t.row,t.row,\"ace_active-line\"):t&&(e.$highlightLineMarker.start.row=t.row,e.$highlightLineMarker.end.row=t.row,e._emit(\"changeBackMarker\"))},this.onSelectionChange=function(e){var t=this.session;t.$selectionMarker&&t.removeMarker(t.$selectionMarker),t.$selectionMarker=null;if(!this.selection.isEmpty()){var n=this.selection.getRange(),r=this.getSelectionStyle();t.$selectionMarker=t.addMarker(n,\"ace_selection\",r)}else this.$updateHighlightActiveLine();var i=this.$highlightSelectedWord&&this.$getSelectionHighLightRegexp();this.session.highlight(i),this._emit(\"changeSelection\")},this.$getSelectionHighLightRegexp=function(){var e=this.session,t=this.getSelectionRange();if(t.isEmpty()||t.isMultiLine())return;var n=t.start.column-1,r=t.end.column+1,i=e.getLine(t.start.row),s=i.length,o=i.substring(Math.max(n,0),Math.min(r,s));if(n>=0&&/^[\\w\\d]/.test(o)||r<=s&&/[\\w\\d]$/.test(o))return;o=i.substring(t.start.column,t.end.column);if(!/^[\\w\\d]+$/.test(o))return;var u=this.$search.$assembleRegExp({wholeWord:!0,caseSensitive:!0,needle:o});return u},this.onChangeFrontMarker=function(){this.renderer.updateFrontMarkers()},this.onChangeBackMarker=function(){this.renderer.updateBackMarkers()},this.onChangeBreakpoint=function(){this.renderer.updateBreakpoints()},this.onChangeAnnotation=function(){this.renderer.setAnnotations(this.session.getAnnotations())},this.onChangeMode=function(){this.renderer.updateText()},this.onChangeWrapLimit=function(){this.renderer.updateFull()},this.onChangeWrapMode=function(){this.renderer.onResize(!0)},this.onChangeFold=function(){this.$updateHighlightActiveLine(),this.renderer.updateFull()},this.getCopyText=function(){var e=\"\";return this.selection.isEmpty()||(e=this.session.getTextRange(this.getSelectionRange())),this._emit(\"copy\",e),e},this.onCopy=function(){this.commands.exec(\"copy\",this)},this.onCut=function(){this.commands.exec(\"cut\",this)},this.onPaste=function(e){if(this.$readOnly)return;this._emit(\"paste\",e),this.insert(e)},this.execCommand=function(e,t){this.commands.exec(e,this,t)},this.insert=function(e){var t=this.session,n=t.getMode(),r=this.getCursorPosition();if(this.getBehavioursEnabled()){var i=n.transformAction(t.getState(r.row),\"insertion\",this,t,e);i&&(e=i.text)}e=e.replace(\"\t\",this.session.getTabString());if(!this.selection.isEmpty())r=this.session.remove(this.getSelectionRange()),this.clearSelection();else if(this.session.getOverwrite()){var s=new h.fromPoints(r,r);s.end.column+=e.length,this.session.remove(s)}this.clearSelection();var o=r.column,u=t.getState(r.row),a=t.getLine(r.row),f=n.checkOutdent(u,a,e),l=t.insert(r,e);i&&i.selection&&(i.selection.length==2?this.selection.setSelectionRange(new h(r.row,o+i.selection[0],r.row,o+i.selection[1])):this.selection.setSelectionRange(new h(r.row+i.selection[0],i.selection[1],r.row+i.selection[2],i.selection[3])));if(t.getDocument().isNewLine(e)){var c=n.getNextLineIndent(u,a.slice(0,r.column),t.getTabString());this.moveCursorTo(r.row+1,0);var p=t.getTabSize(),d=Number.MAX_VALUE;for(var v=r.row+1;v<=l.row;++v){var m=0;a=t.getLine(v);for(var g=0;g<a.length;++g)if(a.charAt(g)==\"\t\")m+=p;else{if(a.charAt(g)!=\" \")break;m+=1}/[^\\s]/.test(a)&&(d=Math.min(m,d))}for(var v=r.row+1;v<=l.row;++v){var y=d;a=t.getLine(v);for(var g=0;g<a.length&&y>0;++g)a.charAt(g)==\"\t\"?y-=p:a.charAt(g)==\" \"&&(y-=1);t.remove(new h(v,0,v,g))}t.indentRows(r.row+1,l.row,c)}f&&n.autoOutdent(u,t,r.row)},this.onTextInput=function(e){this.keyBinding.onTextInput(e)},this.onCommandKey=function(e,t,n){this.keyBinding.onCommandKey(e,t,n)},this.setOverwrite=function(e){this.session.setOverwrite(e)},this.getOverwrite=function(){return this.session.getOverwrite()},this.toggleOverwrite=function(){this.session.toggleOverwrite()},this.setScrollSpeed=function(e){this.$mouseHandler.setScrollSpeed(e)},this.getScrollSpeed=function(){return this.$mouseHandler.getScrollSpeed()},this.setDragDelay=function(e){this.$mouseHandler.setDragDelay(e)},this.getDragDelay=function(){return this.$mouseHandler.getDragDelay()},this.$selectionStyle=\"line\",this.setSelectionStyle=function(e){if(this.$selectionStyle==e)return;this.$selectionStyle=e,this.onSelectionChange(),this._emit(\"changeSelectionStyle\",{data:e})},this.getSelectionStyle=function(){return this.$selectionStyle},this.$highlightActiveLine=!0,this.setHighlightActiveLine=function(e){if(this.$highlightActiveLine==e)return;this.$highlightActiveLine=e,this.$updateHighlightActiveLine()},this.getHighlightActiveLine=function(){return this.$highlightActiveLine},this.$highlightGutterLine=!0,this.setHighlightGutterLine=function(e){if(this.$highlightGutterLine==e)return;this.renderer.setHighlightGutterLine(e),this.$highlightGutterLine=e},this.getHighlightGutterLine=function(){return this.$highlightGutterLine},this.$highlightSelectedWord=!0,this.setHighlightSelectedWord=function(e){if(this.$highlightSelectedWord==e)return;this.$highlightSelectedWord=e,this.$onSelectionChange()},this.getHighlightSelectedWord=function(){return this.$highlightSelectedWord},this.setAnimatedScroll=function(e){this.renderer.setAnimatedScroll(e)},this.getAnimatedScroll=function(){return this.renderer.getAnimatedScroll()},this.setShowInvisibles=function(e){this.renderer.setShowInvisibles(e)},this.getShowInvisibles=function(){return this.renderer.getShowInvisibles()},this.setDisplayIndentGuides=function(e){this.renderer.setDisplayIndentGuides(e)},this.getDisplayIndentGuides=function(){return this.renderer.getDisplayIndentGuides()},this.setShowPrintMargin=function(e){this.renderer.setShowPrintMargin(e)},this.getShowPrintMargin=function(){return this.renderer.getShowPrintMargin()},this.setPrintMarginColumn=function(e){this.renderer.setPrintMarginColumn(e)},this.getPrintMarginColumn=function(){return this.renderer.getPrintMarginColumn()},this.$readOnly=!1,this.setReadOnly=function(e){this.$readOnly=e,this.textInput.setReadOnly(e),this.renderer.$cursorLayer.setBlinking(!e)},this.getReadOnly=function(){return this.$readOnly},this.$modeBehaviours=!0,this.setBehavioursEnabled=function(e){this.$modeBehaviours=e},this.getBehavioursEnabled=function(){return this.$modeBehaviours},this.$modeWrapBehaviours=!0,this.setWrapBehavioursEnabled=function(e){this.$modeWrapBehaviours=e},this.getWrapBehavioursEnabled=function(){return this.$modeWrapBehaviours},this.setShowFoldWidgets=function(e){var t=this.renderer.$gutterLayer;if(t.getShowFoldWidgets()==e)return;this.renderer.$gutterLayer.setShowFoldWidgets(e),this.$showFoldWidgets=e,this.renderer.updateFull()},this.getShowFoldWidgets=function(){return this.renderer.$gutterLayer.getShowFoldWidgets()},this.setFadeFoldWidgets=function(e){this.renderer.setFadeFoldWidgets(e)},this.getFadeFoldWidgets=function(){return this.renderer.getFadeFoldWidgets()},this.remove=function(e){this.selection.isEmpty()&&(e==\"left\"?this.selection.selectLeft():this.selection.selectRight());var t=this.getSelectionRange();if(this.getBehavioursEnabled()){var n=this.session,r=n.getState(t.start.row),i=n.getMode().transformAction(r,\"deletion\",this,n,t);i&&(t=i)}this.session.remove(t),this.clearSelection()},this.removeWordRight=function(){this.selection.isEmpty()&&this.selection.selectWordRight(),this.session.remove(this.getSelectionRange()),this.clearSelection()},this.removeWordLeft=function(){this.selection.isEmpty()&&this.selection.selectWordLeft(),this.session.remove(this.getSelectionRange()),this.clearSelection()},this.removeToLineStart=function(){this.selection.isEmpty()&&this.selection.selectLineStart(),this.session.remove(this.getSelectionRange()),this.clearSelection()},this.removeToLineEnd=function(){this.selection.isEmpty()&&this.selection.selectLineEnd();var e=this.getSelectionRange();e.start.column==e.end.column&&e.start.row==e.end.row&&(e.end.column=0,e.end.row++),this.session.remove(e),this.clearSelection()},this.splitLine=function(){this.selection.isEmpty()||(this.session.remove(this.getSelectionRange()),this.clearSelection());var e=this.getCursorPosition();this.insert(\"\\n\"),this.moveCursorToPosition(e)},this.transposeLetters=function(){if(!this.selection.isEmpty())return;var e=this.getCursorPosition(),t=e.column;if(t===0)return;var n=this.session.getLine(e.row),r,i;t<n.length?(r=n.charAt(t)+n.charAt(t-1),i=new h(e.row,t-1,e.row,t+1)):(r=n.charAt(t-1)+n.charAt(t-2),i=new h(e.row,t-2,e.row,t)),this.session.replace(i,r)},this.toLowerCase=function(){var e=this.getSelectionRange();this.selection.isEmpty()&&this.selection.selectWord();var t=this.getSelectionRange(),n=this.session.getTextRange(t);this.session.replace(t,n.toLowerCase()),this.selection.setSelectionRange(e)},this.toUpperCase=function(){var e=this.getSelectionRange();this.selection.isEmpty()&&this.selection.selectWord();var t=this.getSelectionRange(),n=this.session.getTextRange(t);this.session.replace(t,n.toUpperCase()),this.selection.setSelectionRange(e)},this.indent=function(){var e=this.session,t=this.getSelectionRange();if(!(t.start.row<t.end.row||t.start.column<t.end.column)){var r;if(this.session.getUseSoftTabs()){var s=e.getTabSize(),o=this.getCursorPosition(),u=e.documentToScreenColumn(o.row,o.column),a=s-u%s;r=i.stringRepeat(\" \",a)}else r=\"\t\";return this.insert(r)}var n=this.$getSelectedRows();e.indentRows(n.first,n.last,\"\t\")},this.blockIndent=function(){var e=this.$getSelectedRows();this.session.indentRows(e.first,e.last,\"\t\")},this.blockOutdent=function(){var e=this.session.getSelection();this.session.outdentRows(e.getRange())},this.sortLines=function(){var e=this.$getSelectedRows(),t=this.session,n=[];for(i=e.first;i<=e.last;i++)n.push(t.getLine(i));n.sort(function(e,t){return e.toLowerCase()<t.toLowerCase()?-1:e.toLowerCase()>t.toLowerCase()?1:0});var r=new h(0,0,0,0);for(var i=e.first;i<=e.last;i++){var s=t.getLine(i);r.start.row=i,r.end.row=i,r.end.column=s.length,t.replace(r,n[i-e.first])}},this.toggleCommentLines=function(){var e=this.session.getState(this.getCursorPosition().row),t=this.$getSelectedRows();this.session.getMode().toggleCommentLines(e,this.session,t.first,t.last)},this.getNumberAt=function(e,t){var n=/[\\-]?[0-9]+(?:\\.[0-9]+)?/g;n.lastIndex=0;var r=this.session.getLine(e);while(n.lastIndex<t-1){var i=n.exec(r);if(i.index<=t&&i.index+i[0].length>=t){var s={value:i[0],start:i.index,end:i.index+i[0].length};return s}}return null},this.modifyNumber=function(e){var t=this.selection.getCursor().row,n=this.selection.getCursor().column,r=new h(t,n-1,t,n),i=this.session.getTextRange(r);if(!isNaN(parseFloat(i))&&isFinite(i)){var s=this.getNumberAt(t,n);if(s){var o=s.value.indexOf(\".\")>=0?s.start+s.value.indexOf(\".\")+1:s.end,u=s.start+s.value.length-o,a=parseFloat(s.value);a*=Math.pow(10,u),o!==s.end&&n<o?e*=Math.pow(10,s.end-n-1):e*=Math.pow(10,s.end-n),a+=e,a/=Math.pow(10,u);var f=a.toFixed(u),l=new h(t,s.start,t,s.end);this.session.replace(l,f),this.moveCursorTo(t,Math.max(s.start+1,n+f.length-s.value.length))}}},this.removeLines=function(){var e=this.$getSelectedRows(),t;e.first===0||e.last+1<this.session.getLength()?t=new h(e.first,0,e.last+1,0):t=new h(e.first-1,this.session.getLine(e.first-1).length,e.last,this.session.getLine(e.last).length),this.session.remove(t),this.clearSelection()},this.duplicateSelection=function(){var e=this.selection,t=this.session,n=e.getRange();if(n.isEmpty()){var r=n.start.row;t.duplicateLines(r,r)}else{var i=e.isBackwards(),s=e.isBackwards()?n.start:n.end,o=t.insert(s,t.getTextRange(n),!1);n.start=s,n.end=o,e.setSelectionRange(n,i)}},this.moveLinesDown=function(){this.$moveLines(function(e,t){return this.session.moveLinesDown(e,t)})},this.moveLinesUp=function(){this.$moveLines(function(e,t){return this.session.moveLinesUp(e,t)})},this.moveText=function(e,t){return this.$readOnly?null:this.session.moveText(e,t)},this.copyLinesUp=function(){this.$moveLines(function(e,t){return this.session.duplicateLines(e,t),0})},this.copyLinesDown=function(){this.$moveLines(function(e,t){return this.session.duplicateLines(e,t)})},this.$moveLines=function(e){var t=this.$getSelectedRows(),n=this.selection;if(!n.isMultiLine())var r=n.getRange(),i=n.isBackwards();var s=e.call(this,t.first,t.last);r?(r.start.row+=s,r.end.row+=s,n.setSelectionRange(r,i)):(n.setSelectionAnchor(t.last+s+1,0),n.$moveSelection(function(){n.moveCursorTo(t.first+s,0)}))},this.$getSelectedRows=function(){var e=this.getSelectionRange().collapseRows();return{first:e.start.row,last:e.end.row}},this.onCompositionStart=function(e){this.renderer.showComposition(this.getCursorPosition())},this.onCompositionUpdate=function(e){this.renderer.setCompositionText(e)},this.onCompositionEnd=function(){this.renderer.hideComposition()},this.getFirstVisibleRow=function(){return this.renderer.getFirstVisibleRow()},this.getLastVisibleRow=function(){return this.renderer.getLastVisibleRow()},this.isRowVisible=function(e){return e>=this.getFirstVisibleRow()&&e<=this.getLastVisibleRow()},this.isRowFullyVisible=function(e){return e>=this.renderer.getFirstFullyVisibleRow()&&e<=this.renderer.getLastFullyVisibleRow()},this.$getVisibleRowCount=function(){return this.renderer.getScrollBottomRow()-this.renderer.getScrollTopRow()+1},this.$moveByPage=function(e,t){var n=this.renderer,r=this.renderer.layerConfig,i=e*Math.floor(r.height/r.lineHeight);this.$blockScrolling++,t==1?this.selection.$moveSelection(function(){this.moveCursorBy(i,0)}):t==0&&(this.selection.moveCursorBy(i,0),this.selection.clearSelection()),this.$blockScrolling--;var s=n.scrollTop;n.scrollBy(0,i*r.lineHeight),t!=null&&n.scrollCursorIntoView(null,.5),n.animateScrolling(s)},this.selectPageDown=function(){this.$moveByPage(1,!0)},this.selectPageUp=function(){this.$moveByPage(-1,!0)},this.gotoPageDown=function(){this.$moveByPage(1,!1)},this.gotoPageUp=function(){this.$moveByPage(-1,!1)},this.scrollPageDown=function(){this.$moveByPage(1)},this.scrollPageUp=function(){this.$moveByPage(-1)},this.scrollToRow=function(e){this.renderer.scrollToRow(e)},this.scrollToLine=function(e,t,n,r){this.renderer.scrollToLine(e,t,n,r)},this.centerSelection=function(){var e=this.getSelectionRange(),t={row:Math.floor(e.start.row+(e.end.row-e.start.row)/2),column:Math.floor(e.start.column+(e.end.column-e.start.column)/2)};this.renderer.alignCursor(t,.5)},this.getCursorPosition=function(){return this.selection.getCursor()},this.getCursorPositionScreen=function(){return this.session.documentToScreenPosition(this.getCursorPosition())},this.getSelectionRange=function(){return this.selection.getRange()},this.selectAll=function(){this.$blockScrolling+=1,this.selection.selectAll(),this.$blockScrolling-=1},this.clearSelection=function(){this.selection.clearSelection()},this.moveCursorTo=function(e,t){this.selection.moveCursorTo(e,t)},this.moveCursorToPosition=function(e){this.selection.moveCursorToPosition(e)},this.jumpToMatching=function(e){var t=this.getCursorPosition(),n=this.session.getBracketRange(t);if(!n){n=this.find({needle:/[{}()\\[\\]]/g,preventScroll:!0,start:{row:t.row,column:t.column-1}});if(!n)return;var r=n.start;r.row==t.row&&Math.abs(r.column-t.column)<2&&(n=this.session.getBracketRange(r))}r=n&&n.cursor||r,r&&(e?n&&n.isEqual(this.getSelectionRange())?this.clearSelection():this.selection.selectTo(r.row,r.column):(this.clearSelection(),this.moveCursorTo(r.row,r.column)))},this.gotoLine=function(e,t,n){this.selection.clearSelection(),this.session.unfold({row:e-1,column:t||0}),this.$blockScrolling+=1,this.moveCursorTo(e-1,t||0),this.$blockScrolling-=1,this.isRowFullyVisible(e-1)||this.scrollToLine(e-1,!0,n)},this.navigateTo=function(e,t){this.clearSelection(),this.moveCursorTo(e,t)},this.navigateUp=function(e){this.selection.clearSelection(),e=e||1,this.selection.moveCursorBy(-e,0)},this.navigateDown=function(e){this.selection.clearSelection(),e=e||1,this.selection.moveCursorBy(e,0)},this.navigateLeft=function(e){if(!this.selection.isEmpty()){var t=this.getSelectionRange().start;this.moveCursorToPosition(t)}else{e=e||1;while(e--)this.selection.moveCursorLeft()}this.clearSelection()},this.navigateRight=function(e){if(!this.selection.isEmpty()){var t=this.getSelectionRange().end;this.moveCursorToPosition(t)}else{e=e||1;while(e--)this.selection.moveCursorRight()}this.clearSelection()},this.navigateLineStart=function(){this.selection.moveCursorLineStart(),this.clearSelection()},this.navigateLineEnd=function(){this.selection.moveCursorLineEnd(),this.clearSelection()},this.navigateFileEnd=function(){var e=this.renderer.scrollTop;this.selection.moveCursorFileEnd(),this.clearSelection(),this.renderer.animateScrolling(e)},this.navigateFileStart=function(){var e=this.renderer.scrollTop;this.selection.moveCursorFileStart(),this.clearSelection(),this.renderer.animateScrolling(e)},this.navigateWordRight=function(){this.selection.moveCursorWordRight(),this.clearSelection()},this.navigateWordLeft=function(){this.selection.moveCursorWordLeft(),this.clearSelection()},this.replace=function(e,t){t&&this.$search.set(t);var n=this.$search.find(this.session),r=0;return n?(this.$tryReplace(n,e)&&(r=1),n!==null&&(this.selection.setSelectionRange(n),this.renderer.scrollSelectionIntoView(n.start,n.end)),r):r},this.replaceAll=function(e,t){t&&this.$search.set(t);var n=this.$search.findAll(this.session),r=0;if(!n.length)return r;this.$blockScrolling+=1;var i=this.getSelectionRange();this.clearSelection(),this.selection.moveCursorTo(0,0);for(var s=n.length-1;s>=0;--s)this.$tryReplace(n[s],e)&&r++;return this.selection.setSelectionRange(i),this.$blockScrolling-=1,r},this.$tryReplace=function(e,t){var n=this.session.getTextRange(e);return t=this.$search.replace(n,t),t!==null?(e.end=this.session.replace(e,t),e):null},this.getLastSearchOptions=function(){return this.$search.getOptions()},this.find=function(e,t,n){t||(t={}),typeof e==\"string\"||e instanceof RegExp?t.needle=e:typeof e==\"object\"&&r.mixin(t,e);var i=this.selection.getRange();t.needle==null&&(e=this.session.getTextRange(i)||this.$search.$options.needle,e||(i=this.session.getWordRange(i.start.row,i.start.column),e=this.session.getTextRange(i)),this.$search.set({needle:e})),this.$search.set(t),t.start||this.$search.set({start:i});var s=this.$search.find(this.session);if(t.preventScroll)return s;if(s)return this.revealRange(s,n),s;t.backwards?i.start=i.end:i.end=i.start,this.selection.setRange(i)},this.findNext=function(e,t){this.find({skipCurrent:!0,backwards:!1},e,t)},this.findPrevious=function(e,t){this.find(e,{skipCurrent:!0,backwards:!0},t)},this.revealRange=function(e,t){this.$blockScrolling+=1,this.session.unfold(e),this.selection.setSelectionRange(e),this.$blockScrolling-=1;var n=this.renderer.scrollTop;this.renderer.scrollSelectionIntoView(e.start,e.end,.5),t!=0&&this.renderer.animateScrolling(n)},this.undo=function(){this.$blockScrolling++,this.session.getUndoManager().undo(),this.$blockScrolling--,this.renderer.scrollCursorIntoView(null,.5)},this.redo=function(){this.$blockScrolling++,this.session.getUndoManager().redo(),this.$blockScrolling--,this.renderer.scrollCursorIntoView(null,.5)},this.destroy=function(){this.renderer.destroy()}}).call(g.prototype),t.Editor=g}),ace.define(\"ace/lib/lang\",[\"require\",\"exports\",\"module\"],function(e,t,n){t.stringReverse=function(e){return e.split(\"\").reverse().join(\"\")},t.stringRepeat=function(e,t){var n=\"\";while(t>0){t&1&&(n+=e);if(t>>=1)e+=e}return n};var r=/^\\s\\s*/,i=/\\s\\s*$/;t.stringTrimLeft=function(e){return e.replace(r,\"\")},t.stringTrimRight=function(e){return e.replace(i,\"\")},t.copyObject=function(e){var t={};for(var n in e)t[n]=e[n];return t},t.copyArray=function(e){var t=[];for(var n=0,r=e.length;n<r;n++)e[n]&&typeof e[n]==\"object\"?t[n]=this.copyObject(e[n]):t[n]=e[n];return t},t.deepCopy=function(e){if(typeof e!=\"object\")return e;var t=e.constructor();for(var n in e)typeof e[n]==\"object\"?t[n]=this.deepCopy(e[n]):t[n]=e[n];return t},t.arrayToMap=function(e){var t={};for(var n=0;n<e.length;n++)t[e[n]]=1;return t},t.createMap=function(e){var t=Object.create(null);for(var n in e)t[n]=e[n];return t},t.arrayRemove=function(e,t){for(var n=0;n<=e.length;n++)t===e[n]&&e.splice(n,1)},t.escapeRegExp=function(e){return e.replace(/([.*+?^${}()|[\\]\\/\\\\])/g,\"\\\\$1\")},t.escapeHTML=function(e){return e.replace(/&/g,\"&#38;\").replace(/\"/g,\"&#34;\").replace(/'/g,\"&#39;\").replace(/</g,\"&#60;\")},t.getMatchOffsets=function(e,t){var n=[];return e.replace(t,function(e){n.push({offset:arguments[arguments.length-2],length:e.length})}),n},t.deferredCall=function(e){var t=null,n=function(){t=null,e()},r=function(e){return r.cancel(),t=setTimeout(n,e||0),r};return r.schedule=r,r.call=function(){return this.cancel(),e(),r},r.cancel=function(){return clearTimeout(t),t=null,r},r},t.delayedCall=function(e,t){var n=null,r=function(){n=null,e()},i=function(e){n&&clearTimeout(n),n=setTimeout(r,e||t)};return i.delay=i,i.schedule=function(e){n==null&&(n=setTimeout(r,e||0))},i.call=function(){this.cancel(),e()},i.cancel=function(){n&&clearTimeout(n),n=null},i.isPending=function(){return n},i}}),ace.define(\"ace/keyboard/textinput\",[\"require\",\"exports\",\"module\",\"ace/lib/event\",\"ace/lib/useragent\",\"ace/lib/dom\",\"ace/lib/lang\"],function(e,t,n){var r=e(\"../lib/event\"),i=e(\"../lib/useragent\"),s=e(\"../lib/dom\"),o=e(\"../lib/lang\"),u=i.isChrome<18,a=function(e,t){function b(e){if(h)return;var t=e?2:1,r=2;try{n.setSelectionRange(t,r)}catch(i){}}function w(){if(h)return;n.value=a,i.isWebKit&&y.schedule()}function B(){setTimeout(function(){p&&(n.style.cssText=p,p=\"\"),t.renderer.$keepTextAreaAtCursor==null&&(t.renderer.$keepTextAreaAtCursor=!0,t.renderer.$moveTextAreaToCursor())},0)}var n=s.createElement(\"textarea\");n.className=\"ace_text-input\",i.isTouchPad&&n.setAttribute(\"x-palm-disable-auto-cap\",!0),n.wrap=\"off\",n.autocorrect=\"off\",n.autocapitalize=\"off\",n.spellcheck=!1,n.style.bottom=\"2000em\",e.insertBefore(n,e.firstChild);var a=\"\u0001\u0001\",f=!1,l=!1,c=!1,h=!1,p=\"\",d=!0;try{var v=document.activeElement===n}catch(m){}r.addListener(n,\"blur\",function(){t.onBlur(),v=!1}),r.addListener(n,\"focus\",function(){v=!0,t.onFocus(),b()}),this.focus=function(){n.focus()},this.blur=function(){n.blur()},this.isFocused=function(){return v};var g=o.delayedCall(function(){v&&b(d)}),y=o.delayedCall(function(){h||(n.value=a,v&&b())});i.isWebKit||t.addEventListener(\"changeSelection\",function(){t.selection.isEmpty()!=d&&(d=!d,g.schedule())}),w(),v&&t.onFocus();var E=function(e){return e.selectionStart===0&&e.selectionEnd===e.value.length};!n.setSelectionRange&&n.createTextRange&&(n.setSelectionRange=function(e,t){var n=this.createTextRange();n.collapse(!0),n.moveStart(\"character\",e),n.moveEnd(\"character\",t),n.select()},E=function(e){try{var t=e.ownerDocument.selection.createRange()}catch(n){}return!t||t.parentElement()!=e?!1:t.text==e.value});if(i.isOldIE){var S=!1,x=function(e){if(S)return;var t=n.value;if(h||!t||t==a)return;if(e&&t==a[0])return T.schedule();k(t),S=!0,w(),S=!1},T=o.delayedCall(x);r.addListener(n,\"propertychange\",x);var N={13:1,27:1};r.addListener(n,\"keyup\",function(e){h&&(!n.value||N[e.keyCode])&&setTimeout(P,0);if((n.value.charCodeAt(0)||0)<129)return;h?D():_()})}var C=function(e){if(f){f=!1;return}if(l){l=!1;return}E(n)&&(t.selectAll(),b())},k=function(e){c?(b(),e&&t.onPaste(e),c=!1):e==a[0]?t.execCommand(\"del\",{source:\"ace\"}):(e.substring(0,2)==a?e=e.substr(2):e[0]==a[0]?e=e.substr(1):e[e.length-1]==a[0]&&(e=e.slice(0,-1)),e[e.length-1]==a[0]&&(e=e.slice(0,-1)),e&&t.onTextInput(e))},L=function(e){if(h)return;var t=n.value;w(),k(t)},A=function(e){var i=t.getCopyText();if(!i){r.preventDefault(e);return}var s=e.clipboardData||window.clipboardData;if(s&&!u){var o=s.setData(\"Text\",i);o&&(t.onCut(),r.preventDefault(e))}o||(f=!0,n.value=i,n.select(),setTimeout(function(){f=!1,w(),b(),t.onCut()}))},O=function(e){var i=t.getCopyText();if(!i){r.preventDefault(e);return}var s=e.clipboardData||window.clipboardData;if(s&&!u){var o=s.setData(\"Text\",i);o&&(t.onCopy(),r.preventDefault(e))}o||(l=!0,n.value=i,n.select(),setTimeout(function(){l=!1,w(),b(),t.onCopy()}))},M=function(e){var s=e.clipboardData||window.clipboardData;if(s){var o=s.getData(\"Text\");o&&t.onPaste(o),i.isIE&&setTimeout(b),r.preventDefault(e)}else n.value=\"\",c=!0};r.addCommandKeyListener(n,t.onCommandKey.bind(t)),r.addListener(n,\"select\",C),r.addListener(n,\"input\",L),r.addListener(n,\"cut\",A),r.addListener(n,\"copy\",O),r.addListener(n,\"paste\",M),(!(\"oncut\"in n)||!(\"oncopy\"in n)||!(\"onpaste\"in n))&&r.addListener(e,\"keydown\",function(e){if(i.isMac&&!e.metaKey||!e.ctrlKey)return;switch(e.keyCode){case 67:O(e);break;case 86:M(e);break;case 88:A(e)}});var _=function(e){h=!0,t.onCompositionStart(),setTimeout(D,0)},D=function(){if(!h)return;t.onCompositionUpdate(n.value)},P=function(e){h=!1,t.onCompositionEnd()},H=o.delayedCall(D,50);r.addListener(n,\"compositionstart\",_),r.addListener(n,i.isGecko?\"text\":\"keyup\",function(){H.schedule()}),r.addListener(n,\"compositionend\",P),this.getElement=function(){return n},this.setReadOnly=function(e){n.readOnly=e},this.onContextMenu=function(e){p||(p=n.style.cssText),n.style.cssText=\"z-index:100000;\"+(i.isIE?\"opacity:0.1;\":\"\"),b(t.selection.isEmpty()),t._emit(\"nativecontextmenu\",{target:t});var s=t.container.getBoundingClientRect(),o=function(e){n.style.left=e.clientX-s.left-2+\"px\",n.style.top=e.clientY-s.top-2+\"px\"};o(e);if(e.type!=\"mousedown\")return;t.renderer.$keepTextAreaAtCursor&&(t.renderer.$keepTextAreaAtCursor=null),i.isWin&&r.capture(t.container,o,B)},this.onContextMenuClose=B,i.isGecko||r.addListener(n,\"contextmenu\",function(e){t.textInput.onContextMenu(e),B()})};t.TextInput=a}),ace.define(\"ace/mouse/mouse_handler\",[\"require\",\"exports\",\"module\",\"ace/lib/event\",\"ace/lib/useragent\",\"ace/mouse/default_handlers\",\"ace/mouse/default_gutter_handler\",\"ace/mouse/mouse_event\",\"ace/mouse/dragdrop\"],function(e,t,n){var r=e(\"../lib/event\"),i=e(\"../lib/useragent\"),s=e(\"./default_handlers\").DefaultHandlers,o=e(\"./default_gutter_handler\").GutterHandler,u=e(\"./mouse_event\").MouseEvent,a=e(\"./dragdrop\").DragdropHandler,f=function(e){this.editor=e,new s(this),new o(this),new a(this),r.addListener(e.container,\"mousedown\",function(t){return e.focus(),r.preventDefault(t)});var t=e.renderer.getMouseEventTarget();r.addListener(t,\"click\",this.onMouseEvent.bind(this,\"click\")),r.addListener(t,\"mousemove\",this.onMouseMove.bind(this,\"mousemove\")),r.addMultiMouseDownListener(t,[300,300,250],this,\"onMouseEvent\"),r.addMouseWheelListener(e.container,this.onMouseWheel.bind(this,\"mousewheel\"));var n=e.renderer.$gutter;r.addListener(n,\"mousedown\",this.onMouseEvent.bind(this,\"guttermousedown\")),r.addListener(n,\"click\",this.onMouseEvent.bind(this,\"gutterclick\")),r.addListener(n,\"dblclick\",this.onMouseEvent.bind(this,\"gutterdblclick\")),r.addListener(n,\"mousemove\",this.onMouseEvent.bind(this,\"guttermousemove\"))};(function(){this.$scrollSpeed=1,this.setScrollSpeed=function(e){this.$scrollSpeed=e},this.getScrollSpeed=function(){return this.$scrollSpeed},this.onMouseEvent=function(e,t){this.editor._emit(e,new u(t,this.editor))},this.$dragDelay=250,this.setDragDelay=function(e){this.$dragDelay=e},this.getDragDelay=function(){return this.$dragDelay},this.onMouseMove=function(e,t){var n=this.editor._eventRegistry&&this.editor._eventRegistry.mousemove;if(!n||!n.length)return;this.editor._emit(e,new u(t,this.editor))},this.onMouseWheel=function(e,t){var n=new u(t,this.editor);n.speed=this.$scrollSpeed*2,n.wheelX=t.wheelX,n.wheelY=t.wheelY,this.editor._emit(e,n)},this.setState=function(e){this.state=e},this.captureMouse=function(e,t){t&&this.setState(t),this.x=e.x,this.y=e.y,this.isMousePressed=!0;var n=this.editor.renderer;n.$keepTextAreaAtCursor&&(n.$keepTextAreaAtCursor=null);var s=this,o=function(e){s.x=e.clientX,s.y=e.clientY},u=function(e){clearInterval(f),s[s.state+\"End\"]&&s[s.state+\"End\"](e),s.$clickSelection=null,n.$keepTextAreaAtCursor==null&&(n.$keepTextAreaAtCursor=!0,n.$moveTextAreaToCursor()),s.isMousePressed=!1},a=function(){s[s.state]&&s[s.state]()};if(i.isOldIE&&e.domEvent.type==\"dblclick\"){setTimeout(function(){a(),u(e.domEvent)});return}r.capture(this.editor.container,o,u);var f=setInterval(a,20)}}).call(f.prototype),t.MouseHandler=f}),ace.define(\"ace/mouse/default_handlers\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\",\"ace/lib/useragent\"],function(e,t,n){function o(e){e.$clickSelection=null;var t=e.editor;t.setDefaultHandler(\"mousedown\",this.onMouseDown.bind(e)),t.setDefaultHandler(\"dblclick\",this.onDoubleClick.bind(e)),t.setDefaultHandler(\"tripleclick\",this.onTripleClick.bind(e)),t.setDefaultHandler(\"quadclick\",this.onQuadClick.bind(e)),t.setDefaultHandler(\"mousewheel\",this.onMouseWheel.bind(e));var n=[\"select\",\"startSelect\",\"drag\",\"dragEnd\",\"dragWait\",\"dragWaitEnd\",\"startDrag\",\"focusWait\"];n.forEach(function(t){e[t]=this[t]},this),e.selectByLines=this.extendSelectionBy.bind(e,\"getLineRange\"),e.selectByWords=this.extendSelectionBy.bind(e,\"getWordRange\"),e.$focusWaitTimout=250}function u(e,t,n,r){return Math.sqrt(Math.pow(n-e,2)+Math.pow(r-t,2))}function a(e,t){if(e.start.row==e.end.row)var n=2*t.column-e.start.column-e.end.column;else var n=2*t.row-e.start.row-e.end.row;return n<0?{cursor:e.start,anchor:e.end}:{cursor:e.end,anchor:e.start}}var r=e(\"../lib/dom\"),i=e(\"../lib/useragent\"),s=5;(function(){this.onMouseDown=function(e){var t=e.inSelection(),n=e.getDocumentPosition();this.mousedownEvent=e;var r=this.editor,i=e.getButton();if(i!==0){var s=r.getSelectionRange(),o=s.isEmpty();o&&(r.moveCursorToPosition(n),r.selection.clearSelection()),r.textInput.onContextMenu(e.domEvent);return}if(t&&!r.isFocused()){r.focus();if(this.$focusWaitTimout&&!this.$clickSelection)return this.setState(\"focusWait\"),this.captureMouse(e),e.preventDefault()}return!t||this.$clickSelection||e.getShiftKey()?this.startSelect(n):t&&(this.mousedownEvent.time=(new Date).getTime(),this.setState(\"dragWait\")),this.captureMouse(e),e.preventDefault()},this.startSelect=function(e){e=e||this.editor.renderer.screenToTextCoordinates(this.x,this.y),this.mousedownEvent.getShiftKey()?this.editor.selection.selectToPosition(e):this.$clickSelection||(this.editor.moveCursorToPosition(e),this.editor.selection.clearSelection()),this.setState(\"select\")},this.select=function(){var e,t=this.editor,n=t.renderer.screenToTextCoordinates(this.x,this.y);if(this.$clickSelection){var r=this.$clickSelection.comparePoint(n);if(r==-1)e=this.$clickSelection.end;else if(r==1)e=this.$clickSelection.start;else{var i=a(this.$clickSelection,n);n=i.cursor,e=i.anchor}t.selection.setSelectionAnchor(e.row,e.column)}t.selection.selectToPosition(n),t.renderer.scrollCursorIntoView()},this.extendSelectionBy=function(e){var t,n=this.editor,r=n.renderer.screenToTextCoordinates(this.x,this.y),i=n.selection[e](r.row,r.column);if(this.$clickSelection){var s=this.$clickSelection.comparePoint(i.start),o=this.$clickSelection.comparePoint(i.end);if(s==-1&&o<=0){t=this.$clickSelection.end;if(i.end.row!=r.row||i.end.column!=r.column)r=i.start}else if(o==1&&s>=0){t=this.$clickSelection.start;if(i.start.row!=r.row||i.start.column!=r.column)r=i.end}else if(s==-1&&o==1)r=i.end,t=i.start;else{var u=a(this.$clickSelection,r);r=u.cursor,t=u.anchor}n.selection.setSelectionAnchor(t.row,t.column)}n.selection.selectToPosition(r),n.renderer.scrollCursorIntoView()},this.startDrag=function(){var e=this.editor;this.setState(\"drag\"),this.dragRange=e.getSelectionRange();var t=e.getSelectionStyle();this.dragSelectionMarker=e.session.addMarker(this.dragRange,\"ace_selection\",t),e.clearSelection(),r.addCssClass(e.container,\"ace_dragging\"),this.$dragKeybinding||(this.$dragKeybinding={handleKeyboard:function(e,t,n,r){if(n==\"esc\")return{command:this.command}},command:{exec:function(e){var t=e.$mouseHandler;t.dragCursor=null,t.dragEnd(),t.startSelect()}}}),e.keyBinding.addKeyboardHandler(this.$dragKeybinding)},this.focusWait=function(){var e=u(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y),t=(new Date).getTime();(e>s||t-this.mousedownEvent.time>this.$focusWaitTimout)&&this.startSelect()},this.dragWait=function(e){var t=u(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y),n=(new Date).getTime(),r=this.editor;t>s?this.startSelect(this.mousedownEvent.getDocumentPosition()):n-this.mousedownEvent.time>r.getDragDelay()&&this.startDrag()},this.dragWaitEnd=function(e){this.mousedownEvent.domEvent=e,this.startSelect()},this.drag=function(){var e=this.editor;this.dragCursor=e.renderer.screenToTextCoordinates(this.x,this.y),e.moveCursorToPosition(this.dragCursor),e.renderer.scrollCursorIntoView()},this.dragEnd=function(e){var t=this.editor,n=this.dragCursor,i=this.dragRange;r.removeCssClass(t.container,\"ace_dragging\"),t.session.removeMarker(this.dragSelectionMarker),t.keyBinding.removeKeyboardHandler(this.$dragKeybinding);if(!n)return;t.clearSelection();if(e&&(e.ctrlKey||e.altKey)){var s=t.session,o=i;o.end=s.insert(n,s.getTextRange(i)),o.start=n}else{if(i.contains(n.row,n.column))return;var o=t.moveText(i,n)}if(!o)return;t.selection.setSelectionRange(o)},this.onDoubleClick=function(e){var t=e.getDocumentPosition(),n=this.editor,r=n.session,i=r.getBracketRange(t);if(i){i.isEmpty()&&(i.start.column--,i.end.column++),this.$clickSelection=i,this.setState(\"select\");return}this.$clickSelection=n.selection.getWordRange(t.row,t.column),this.setState(\"selectByWords\")},this.onTripleClick=function(e){var t=e.getDocumentPosition(),n=this.editor;this.setState(\"selectByLines\"),this.$clickSelection=n.selection.getLineRange(t.row)},this.onQuadClick=function(e){var t=this.editor;t.selectAll(),this.$clickSelection=t.getSelectionRange(),this.setState(\"null\")},this.onMouseWheel=function(e){if(e.getShiftKey()||e.getAccelKey())return;var t=this.editor,n=t.renderer.isScrollableBy(e.wheelX*e.speed,e.wheelY*e.speed);if(n)this.$passScrollEvent=!1;else{if(this.$passScrollEvent)return;if(!this.$scrollStopTimeout){var r=this;this.$scrollStopTimeout=setTimeout(function(){r.$passScrollEvent=!0,r.$scrollStopTimeout=null},200)}}return t.renderer.scrollBy(e.wheelX*e.speed,e.wheelY*e.speed),e.preventDefault()}}).call(o.prototype),t.DefaultHandlers=o}),ace.define(\"ace/mouse/default_gutter_handler\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\",\"ace/lib/event\"],function(e,t,n){function s(e){function f(){u=r.createElement(\"div\"),u.className=\"ace_gutter-tooltip\",u.style.display=\"none\",t.container.appendChild(u)}function l(){u||f();var e=o.getDocumentPosition().row,r=n.$annotations[e];if(!r)return c();var i=t.session.getLength();if(e==i){var s=t.renderer.pixelToScreenCoordinates(0,o.y).row,l=o.$pos;if(s>t.session.documentToScreenRow(l.row,l.column))return c()}if(a==r)return;a=r.text.join(\"<br/>\"),u.style.display=\"block\",u.innerHTML=a,t.on(\"mousewheel\",c),h(o)}function c(){s&&(s=clearTimeout(s)),a&&(u.style.display=\"none\",a=null,t.removeEventListener(\"mousewheel\",c))}function h(e){var n=t.renderer.$gutter.getBoundingClientRect();u.style.left=e.x+15+\"px\",e.y+3*t.renderer.lineHeight+15<n.bottom?(u.style.bottom=\"\",u.style.top=e.y+15+\"px\"):(u.style.top=\"\",u.style.bottom=n.bottom-e.y+5+\"px\")}var t=e.editor,n=t.renderer.$gutterLayer;e.editor.setDefaultHandler(\"guttermousedown\",function(r){if(!t.isFocused())return;var i=n.getRegion(r);if(i==\"foldWidgets\")return;var s=r.getDocumentPosition().row,o=t.session.selection;if(r.getShiftKey())o.selectTo(s,0);else{if(r.domEvent.detail==2)return t.selectAll(),r.preventDefault();e.$clickSelection=t.selection.getLineRange(s)}return e.captureMouse(r,\"selectByLines\"),r.preventDefault()});var s,o,u,a;e.editor.setDefaultHandler(\"guttermousemove\",function(t){var n=t.domEvent.target||t.domEvent.srcElement;if(r.hasCssClass(n,\"ace_fold-widget\"))return c();a&&h(t),o=t;if(s)return;s=setTimeout(function(){s=null,o&&!e.isMousePressed?l():c()},50)}),i.addListener(t.renderer.$gutter,\"mouseout\",function(e){o=null;if(!a||s)return;s=setTimeout(function(){s=null,c()},50)})}var r=e(\"../lib/dom\"),i=e(\"../lib/event\");t.GutterHandler=s}),ace.define(\"ace/mouse/mouse_event\",[\"require\",\"exports\",\"module\",\"ace/lib/event\",\"ace/lib/useragent\"],function(e,t,n){var r=e(\"../lib/event\"),i=e(\"../lib/useragent\"),s=t.MouseEvent=function(e,t){this.domEvent=e,this.editor=t,this.x=this.clientX=e.clientX,this.y=this.clientY=e.clientY,this.$pos=null,this.$inSelection=null,this.propagationStopped=!1,this.defaultPrevented=!1};(function(){this.stopPropagation=function(){r.stopPropagation(this.domEvent),this.propagationStopped=!0},this.preventDefault=function(){r.preventDefault(this.domEvent),this.defaultPrevented=!0},this.stop=function(){this.stopPropagation(),this.preventDefault()},this.getDocumentPosition=function(){return this.$pos?this.$pos:(this.$pos=this.editor.renderer.screenToTextCoordinates(this.clientX,this.clientY),this.$pos)},this.inSelection=function(){if(this.$inSelection!==null)return this.$inSelection;var e=this.editor;if(e.getReadOnly())this.$inSelection=!1;else{var t=e.getSelectionRange();if(t.isEmpty())this.$inSelection=!1;else{var n=this.getDocumentPosition();this.$inSelection=t.contains(n.row,n.column)}}return this.$inSelection},this.getButton=function(){return r.getButton(this.domEvent)},this.getShiftKey=function(){return this.domEvent.shiftKey},this.getAccelKey=i.isMac?function(){return this.domEvent.metaKey}:function(){return this.domEvent.ctrlKey}}).call(s.prototype)}),ace.define(\"ace/mouse/dragdrop\",[\"require\",\"exports\",\"module\",\"ace/lib/event\"],function(e,t,n){var r=e(\"../lib/event\"),i=function(e){var t=e.editor,n,i,s,o,u,a,f,l=0,c=t.container;r.addListener(c,\"dragenter\",function(e){if(t.getReadOnly())return;l++;if(!n){u=t.getSelectionRange(),a=t.selection.isBackwards();var i=t.getSelectionStyle();n=t.session.addMarker(u,\"ace_selection\",i),t.clearSelection(),clearInterval(o),o=setInterval(h,20)}return r.preventDefault(e)}),r.addListener(c,\"dragover\",function(e){if(t.getReadOnly())return;return i=e.clientX,s=e.clientY,r.preventDefault(e)});var h=function(){f=t.renderer.screenToTextCoordinates(i,s),t.moveCursorToPosition(f),t.renderer.scrollCursorIntoView()};r.addListener(c,\"dragleave\",function(e){if(t.getReadOnly())return;l--;if(l>0)return;return clearInterval(o),t.session.removeMarker(n),n=null,t.selection.setSelectionRange(u,a),r.preventDefault(e)}),r.addListener(c,\"drop\",function(e){if(t.getReadOnly())return;return l=0,clearInterval(o),t.session.removeMarker(n),n=null,u.end=t.session.insert(f,e.dataTransfer.getData(\"Text\")),u.start=f,t.focus(),t.selection.setSelectionRange(u),r.preventDefault(e)})};t.DragdropHandler=i}),ace.define(\"ace/mouse/fold_handler\",[\"require\",\"exports\",\"module\"],function(e,t,n){function r(e){e.on(\"click\",function(t){var n=t.getDocumentPosition(),r=e.session,i=r.getFoldAt(n.row,n.column,1);i&&(t.getAccelKey()?r.removeFold(i):r.expandFold(i),t.stop())}),e.on(\"guttermousedown\",function(t){if(!e.isFocused())return;var n=e.renderer.$gutterLayer.getRegion(t);if(n==\"foldWidgets\"){var r=t.getDocumentPosition().row,i=e.session;i.foldWidgets&&i.foldWidgets[r]&&e.session.onFoldWidgetClick(r,t),t.stop()}}),e.on(\"gutterdblclick\",function(t){var n=e.renderer.$gutterLayer.getRegion(t);if(n==\"foldWidgets\"){var r=t.getDocumentPosition().row,i=e.session,s=i.foldWidgets;if(!s||s[r])return;var o=r-1,u;while(o>=0){var a=s[o];a==null&&(a=s[o]=i.getFoldWidget());if(a==\"start\"){var f=i.getFoldWidgetRange(o);u||(u=f);if(f&&f.end.row>=r)break}o--}o==-1&&(f=u);if(f){var r=f.start.row,l=i.getFoldAt(r,i.getLine(r).length,1);l?i.removeFold(l):(i.addFold(\"...\",f),e.renderer.scrollCursorIntoView({row:f.start.row,column:0}))}t.stop()}})}t.FoldHandler=r}),ace.define(\"ace/keyboard/keybinding\",[\"require\",\"exports\",\"module\",\"ace/lib/keys\",\"ace/lib/event\"],function(e,t,n){var r=e(\"../lib/keys\"),i=e(\"../lib/event\"),s=function(e){this.$editor=e,this.$data={},this.$handlers=[],this.setDefaultHandler(e.commands)};(function(){this.setDefaultHandler=function(e){this.removeKeyboardHandler(this.$defaultHandler),this.$defaultHandler=e,this.addKeyboardHandler(e,0),this.$data={editor:this.$editor}},this.setKeyboardHandler=function(e){if(this.$handlers[this.$handlers.length-1]==e)return;while(this.$handlers[1])this.removeKeyboardHandler(this.$handlers[1]);this.addKeyboardHandler(e,1)},this.addKeyboardHandler=function(e,t){if(!e)return;var n=this.$handlers.indexOf(e);n!=-1&&this.$handlers.splice(n,1),t==undefined?this.$handlers.push(e):this.$handlers.splice(t,0,e),n==-1&&e.attach&&e.attach(this.$editor)},this.removeKeyboardHandler=function(e){var t=this.$handlers.indexOf(e);return t==-1?!1:(this.$handlers.splice(t,1),e.detach&&e.detach(this.$editor),!0)},this.getKeyboardHandler=function(){return this.$handlers[this.$handlers.length-1]},this.$callKeyboardHandlers=function(e,t,n,r){var s,o=!1,u=this.$editor.commands;for(var a=this.$handlers.length;a--;){s=this.$handlers[a].handleKeyboard(this.$data,e,t,n,r);if(!s||!s.command)continue;s.command==\"null\"?o=s.passEvent!=1:o=u.exec(s.command,this.$editor,s.args,r),o&&r&&e!=-1&&i.stopEvent(r);if(o)break}return o},this.onCommandKey=function(e,t,n){var i=r.keyCodeToString(n);this.$callKeyboardHandlers(t,i,n,e)},this.onTextInput=function(e){var t=this.$callKeyboardHandlers(-1,e);t||this.$editor.commands.exec(\"insertstring\",this.$editor,e)}}).call(s.prototype),t.KeyBinding=s}),ace.define(\"ace/edit_session\",[\"require\",\"exports\",\"module\",\"ace/config\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/lib/net\",\"ace/lib/event_emitter\",\"ace/selection\",\"ace/mode/text\",\"ace/range\",\"ace/document\",\"ace/background_tokenizer\",\"ace/search_highlight\",\"ace/edit_session/folding\",\"ace/edit_session/bracket_match\"],function(e,t,n){var r=e(\"./config\"),i=e(\"./lib/oop\"),s=e(\"./lib/lang\"),o=e(\"./lib/net\"),u=e(\"./lib/event_emitter\").EventEmitter,a=e(\"./selection\").Selection,f=e(\"./mode/text\").Mode,l=e(\"./range\").Range,c=e(\"./document\").Document,h=e(\"./background_tokenizer\").BackgroundTokenizer,p=e(\"./search_highlight\").SearchHighlight,d=function(e,t){this.$breakpoints=[],this.$decorations=[],this.$frontMarkers={},this.$backMarkers={},this.$markerId=1,this.$undoSelect=!0,this.$foldData=[],this.$foldData.toString=function(){var e=\"\";return this.forEach(function(t){e+=\"\\n\"+t.toString()}),e},this.on(\"changeFold\",this.onChangeFold.bind(this)),this.$onChange=this.onChange.bind(this);if(typeof e!=\"object\"||!e.getLine)e=new c(e);this.setDocument(e),this.selection=new a(this),this.setMode(t)};(function(){function g(e){return e<4352?!1:e>=4352&&e<=4447||e>=4515&&e<=4519||e>=4602&&e<=4607||e>=9001&&e<=9002||e>=11904&&e<=11929||e>=11931&&e<=12019||e>=12032&&e<=12245||e>=12272&&e<=12283||e>=12288&&e<=12350||e>=12353&&e<=12438||e>=12441&&e<=12543||e>=12549&&e<=12589||e>=12593&&e<=12686||e>=12688&&e<=12730||e>=12736&&e<=12771||e>=12784&&e<=12830||e>=12832&&e<=12871||e>=12880&&e<=13054||e>=13056&&e<=19903||e>=19968&&e<=42124||e>=42128&&e<=42182||e>=43360&&e<=43388||e>=44032&&e<=55203||e>=55216&&e<=55238||e>=55243&&e<=55291||e>=63744&&e<=64255||e>=65040&&e<=65049||e>=65072&&e<=65106||e>=65108&&e<=65126||e>=65128&&e<=65131||e>=65281&&e<=65376||e>=65504&&e<=65510}i.implement(this,u),this.setDocument=function(e){this.doc&&this.doc.removeListener(\"change\",this.$onChange),this.doc=e,e.on(\"change\",this.$onChange),this.bgTokenizer&&this.bgTokenizer.setDocument(this.getDocument()),this.resetCaches()},this.getDocument=function(){return this.doc},this.$resetRowCache=function(e){if(!e){this.$docRowCache=[],this.$screenRowCache=[];return}var t=this.$getRowCacheIndex(this.$docRowCache,e)+1,n=this.$docRowCache.length;this.$docRowCache.splice(t,n),this.$screenRowCache.splice(t,n)},this.$getRowCacheIndex=function(e,t){var n=0,r=e.length-1;while(n<=r){var i=n+r>>1,s=e[i];if(t>s)n=i+1;else{if(!(t<s))return i;r=i-1}}return n-1},this.resetCaches=function(){this.$modified=!0,this.$wrapData=[],this.$rowLengthCache=[],this.$resetRowCache(0),this.bgTokenizer&&this.bgTokenizer.start(0)},this.onChangeFold=function(e){var t=e.data;this.$resetRowCache(t.start.row)},this.onChange=function(e){var t=e.data;this.$modified=!0,this.$resetRowCache(t.range.start.row);var n=this.$updateInternalDataOnChange(e);!this.$fromUndo&&this.$undoManager&&!t.ignore&&(this.$deltasDoc.push(t),n&&n.length!=0&&this.$deltasFold.push({action:\"removeFolds\",folds:n}),this.$informUndoManager.schedule()),this.bgTokenizer.$updateOnChange(t),this._emit(\"change\",e)},this.setValue=function(e){this.doc.setValue(e),this.selection.moveCursorTo(0,0),this.selection.clearSelection(),this.$resetRowCache(0),this.$deltas=[],this.$deltasDoc=[],this.$deltasFold=[],this.getUndoManager().reset()},this.getValue=this.toString=function(){return this.doc.getValue()},this.getSelection=function(){return this.selection},this.getState=function(e){return this.bgTokenizer.getState(e)},this.getTokens=function(e){return this.bgTokenizer.getTokens(e)},this.getTokenAt=function(e,t){var n=this.bgTokenizer.getTokens(e),r,i=0;if(t==null)s=n.length-1,i=this.getLine(e).length;else for(var s=0;s<n.length;s++){i+=n[s].value.length;if(i>=t)break}return r=n[s],r?(r.index=s,r.start=i-r.value.length,r):null},this.setUndoManager=function(e){this.$undoManager=e,this.$deltas=[],this.$deltasDoc=[],this.$deltasFold=[],this.$informUndoManager&&this.$informUndoManager.cancel();if(e){var t=this;this.$syncInformUndoManager=function(){t.$informUndoManager.cancel(),t.$deltasFold.length&&(t.$deltas.push({group:\"fold\",deltas:t.$deltasFold}),t.$deltasFold=[]),t.$deltasDoc.length&&(t.$deltas.push({group:\"doc\",deltas:t.$deltasDoc}),t.$deltasDoc=[]),t.$deltas.length>0&&e.execute({action:\"aceupdate\",args:[t.$deltas,t]}),t.$deltas=[]},this.$informUndoManager=s.deferredCall(this.$syncInformUndoManager)}},this.$defaultUndoManager={undo:function(){},redo:function(){},reset:function(){}},this.getUndoManager=function(){return this.$undoManager||this.$defaultUndoManager},this.getTabString=function(){return this.getUseSoftTabs()?s.stringRepeat(\" \",this.getTabSize()):\"\t\"},this.$useSoftTabs=!0,this.setUseSoftTabs=function(e){if(this.$useSoftTabs===e)return;this.$useSoftTabs=e},this.getUseSoftTabs=function(){return this.$useSoftTabs},this.$tabSize=4,this.setTabSize=function(e){if(isNaN(e)||this.$tabSize===e)return;this.$modified=!0,this.$rowLengthCache=[],this.$tabSize=e,this._emit(\"changeTabSize\")},this.getTabSize=function(){return this.$tabSize},this.isTabStop=function(e){return this.$useSoftTabs&&e.column%this.$tabSize==0},this.$overwrite=!1,this.setOverwrite=function(e){if(this.$overwrite==e)return;this.$overwrite=e,this._emit(\"changeOverwrite\")},this.getOverwrite=function(){return this.$overwrite},this.toggleOverwrite=function(){this.setOverwrite(!this.$overwrite)},this.addGutterDecoration=function(e,t){this.$decorations[e]||(this.$decorations[e]=\"\"),this.$decorations[e]+=\" \"+t,this._emit(\"changeBreakpoint\",{})},this.removeGutterDecoration=function(e,t){this.$decorations[e]=(this.$decorations[e]||\"\").replace(\" \"+t,\"\"),this._emit(\"changeBreakpoint\",{})},this.getBreakpoints=function(){return this.$breakpoints},this.setBreakpoints=function(e){this.$breakpoints=[];for(var t=0;t<e.length;t++)this.$breakpoints[e[t]]=\"ace_breakpoint\";this._emit(\"changeBreakpoint\",{})},this.clearBreakpoints=function(){this.$breakpoints=[],this._emit(\"changeBreakpoint\",{})},this.setBreakpoint=function(e,t){t===undefined&&(t=\"ace_breakpoint\"),t?this.$breakpoints[e]=t:delete this.$breakpoints[e],this._emit(\"changeBreakpoint\",{})},this.clearBreakpoint=function(e){delete this.$breakpoints[e],this._emit(\"changeBreakpoint\",{})},this.addMarker=function(e,t,n,r){var i=this.$markerId++,s={range:e,type:n||\"line\",renderer:typeof n==\"function\"?n:null,clazz:t,inFront:!!r,id:i};return r?(this.$frontMarkers[i]=s,this._emit(\"changeFrontMarker\")):(this.$backMarkers[i]=s,this._emit(\"changeBackMarker\")),i},this.addDynamicMarker=function(e,t){if(!e.update)return;var n=this.$markerId++;return e.id=n,e.inFront=!!t,t?(this.$frontMarkers[n]=e,this._emit(\"changeFrontMarker\")):(this.$backMarkers[n]=e,this._emit(\"changeBackMarker\")),e},this.removeMarker=function(e){var t=this.$frontMarkers[e]||this.$backMarkers[e];if(!t)return;var n=t.inFront?this.$frontMarkers:this.$backMarkers;t&&(delete n[e],this._emit(t.inFront?\"changeFrontMarker\":\"changeBackMarker\"))},this.getMarkers=function(e){return e?this.$frontMarkers:this.$backMarkers},this.highlight=function(e){if(!this.$searchHighlight){var t=new p(null,\"ace_selected-word\",\"text\");this.$searchHighlight=this.addDynamicMarker(t)}this.$searchHighlight.setRegexp(e)},this.highlightLines=function(e,t,n,r){typeof t!=\"number\"&&(n=t,t=e),n||(n=\"ace_step\");var i=new l(e,0,t,Infinity),s=this.addMarker(i,n,\"fullLine\",r);return i.id=s,i},this.setAnnotations=function(e){this.$annotations=e,this._emit(\"changeAnnotation\",{})},this.getAnnotations=function(){return this.$annotations||[]},this.clearAnnotations=function(){this.$annotations={},this._emit(\"changeAnnotation\",{})},this.$detectNewLine=function(e){var t=e.match(/^.*?(\\r?\\n)/m);t?this.$autoNewLine=t[1]:this.$autoNewLine=\"\\n\"},this.getWordRange=function(e,t){var n=this.getLine(e),r=!1;t>0&&(r=!!n.charAt(t-1).match(this.tokenRe)),r||(r=!!n.charAt(t).match(this.tokenRe));if(r)var i=this.tokenRe;else if(/^\\s+$/.test(n.slice(t-1,t+1)))var i=/\\s/;else var i=this.nonTokenRe;var s=t;if(s>0){do s--;while(s>=0&&n.charAt(s).match(i));s++}var o=t;while(o<n.length&&n.charAt(o).match(i))o++;return new l(e,s,e,o)},this.getAWordRange=function(e,t){var n=this.getWordRange(e,t),r=this.getLine(n.end.row);while(r.charAt(n.end.column).match(/[ \\t]/))n.end.column+=1;return n},this.setNewLineMode=function(e){this.doc.setNewLineMode(e)},this.getNewLineMode=function(){return this.doc.getNewLineMode()},this.$useWorker=!0,this.setUseWorker=function(e){if(this.$useWorker==e)return;this.$useWorker=e,this.$stopWorker(),e&&this.$startWorker()},this.getUseWorker=function(){return this.$useWorker},this.onReloadTokenizer=function(e){var t=e.data;this.bgTokenizer.start(t.first),this._emit(\"tokenizerUpdate\",e)},this.$modes={},this.$mode=null,this.$modeId=null,this.setMode=function(e){if(e&&typeof e==\"object\"){if(e.getTokenizer)return this.$onChangeMode(e);var t=e,n=t.path}else n=e||\"ace/mode/text\";this.$modes[\"ace/mode/text\"]||(this.$modes[\"ace/mode/text\"]=new f);if(this.$modes[n]&&!t)return this.$onChangeMode(this.$modes[n]);this.$modeId=n,r.loadModule([\"mode\",n],function(e){if(this.$modeId!==n)return;if(this.$modes[n]&&!t)return this.$onChangeMode(this.$modes[n]);e&&e.Mode&&(e=new e.Mode(t),t||(this.$modes[n]=e,e.$id=n),this.$onChangeMode(e))}.bind(this)),this.$mode||this.$onChangeMode(this.$modes[\"ace/mode/text\"],!0)},this.$onChangeMode=function(e,t){if(this.$mode===e)return;this.$mode=e,this.$stopWorker(),this.$useWorker&&this.$startWorker();var n=e.getTokenizer();if(n.addEventListener!==undefined){var r=this.onReloadTokenizer.bind(this);n.addEventListener(\"update\",r)}if(!this.bgTokenizer){this.bgTokenizer=new h(n);var i=this;this.bgTokenizer.addEventListener(\"update\",function(e){i._emit(\"tokenizerUpdate\",e)})}else this.bgTokenizer.setTokenizer(n);this.bgTokenizer.setDocument(this.getDocument()),this.tokenRe=e.tokenRe,this.nonTokenRe=e.nonTokenRe,t||(this.$modeId=e.$id,this.$setFolding(e.foldingRules),this._emit(\"changeMode\"),this.bgTokenizer.start(0))},this.$stopWorker=function(){this.$worker&&this.$worker.terminate(),this.$worker=null},this.$startWorker=function(){if(typeof Worker!=\"undefined\"&&!e.noWorker)try{this.$worker=this.$mode.createWorker(this)}catch(t){console.log(\"Could not load worker\"),console.log(t),this.$worker=null}else this.$worker=null},this.getMode=function(){return this.$mode},this.$scrollTop=0,this.setScrollTop=function(e){e=Math.round(Math.max(0,e));if(this.$scrollTop===e)return;this.$scrollTop=e,this._emit(\"changeScrollTop\",e)},this.getScrollTop=function(){return this.$scrollTop},this.$scrollLeft=0,this.setScrollLeft=function(e){e=Math.round(Math.max(0,e));if(this.$scrollLeft===e)return;this.$scrollLeft=e,this._emit(\"changeScrollLeft\",e)},this.getScrollLeft=function(){return this.$scrollLeft},this.getScreenWidth=function(){return this.$computeWidth(),this.screenWidth},this.$computeWidth=function(e){if(this.$modified||e){this.$modified=!1;if(this.$useWrapMode)return this.screenWidth=this.$wrapLimit;var t=this.doc.getAllLines(),n=this.$rowLengthCache,r=0,i=0,s=this.$foldData[i],o=s?s.start.row:Infinity,u=t.length;for(var a=0;a<u;a++){if(a>o){a=s.end.row+1;if(a>=u)break;s=this.$foldData[i++],o=s?s.start.row:Infinity}n[a]==null&&(n[a]=this.$getStringScreenWidth(t[a])[0]),n[a]>r&&(r=n[a])}this.screenWidth=r}},this.getLine=function(e){return this.doc.getLine(e)},this.getLines=function(e,t){return this.doc.getLines(e,t)},this.getLength=function(){return this.doc.getLength()},this.getTextRange=function(e){return this.doc.getTextRange(e||this.selection.getRange())},this.insert=function(e,t){return this.doc.insert(e,t)},this.remove=function(e){return this.doc.remove(e)},this.undoChanges=function(e,t){if(!e.length)return;this.$fromUndo=!0;var n=null;for(var r=e.length-1;r!=-1;r--){var i=e[r];i.group==\"doc\"?(this.doc.revertDeltas(i.deltas),n=this.$getUndoSelection(i.deltas,!0,n)):i.deltas.forEach(function(e){this.addFolds(e.folds)},this)}return this.$fromUndo=!1,n&&this.$undoSelect&&!t&&this.selection.setSelectionRange(n),n},this.redoChanges=function(e,t){if(!e.length)return;this.$fromUndo=!0;var n=null;for(var r=0;r<e.length;r++){var i=e[r];i.group==\"doc\"&&(this.doc.applyDeltas(i.deltas),n=this.$getUndoSelection(i.deltas,!1,n))}return this.$fromUndo=!1,n&&this.$undoSelect&&!t&&this.selection.setSelectionRange(n),n},this.setUndoSelect=function(e){this.$undoSelect=e},this.$getUndoSelection=function(e,t,n){function r(e){var n=e.action==\"insertText\"||e.action==\"insertLines\";return t?!n:n}var i=e[0],s,o,u=!1;r(i)?(s=i.range.clone(),u=!0):(s=l.fromPoints(i.range.start,i.range.start),u=!1);for(var a=1;a<e.length;a++)i=e[a],r(i)?(o=i.range.start,s.compare(o.row,o.column)==-1&&s.setStart(i.range.start),o=i.range.end,s.compare(o.row,o.column)==1&&s.setEnd(i.range.end),u=!0):(o=i.range.start,s.compare(o.row,o.column)==-1&&(s=l.fromPoints(i.range.start,i.range.start)),u=!1);if(n!=null){var f=n.compareRange(s);f==1?s.setStart(n.start):f==-1&&s.setEnd(n.end)}return s},this.replace=function(e,t){return this.doc.replace(e,t)},this.moveText=function(e,t){var n=this.getTextRange(e);this.remove(e);var r=t.row,i=t.column;!e.isMultiLine()&&e.start.row==r&&e.end.column<i&&(i-=n.length);if(e.isMultiLine()&&e.end.row<r){var s=this.doc.$split(n);r-=s.length-1}var o=r+e.end.row-e.start.row,u=e.isMultiLine()?e.end.column:i+e.end.column-e.start.column,a=new l(r,i,o,u);return this.insert(a.start,n),a},this.indentRows=function(e,t,n){n=n.replace(/\\t/g,this.getTabString());for(var r=e;r<=t;r++)this.insert({row:r,column:0},n)},this.outdentRows=function(e){var t=e.collapseRows(),n=new l(0,0,0,0),r=this.getTabSize();for(var i=t.start.row;i<=t.end.row;++i){var s=this.getLine(i);n.start.row=i,n.end.row=i;for(var o=0;o<r;++o)if(s.charAt(o)!=\" \")break;o<r&&s.charAt(o)==\"\t\"?(n.start.column=o,n.end.column=o+1):(n.start.column=0,n.end.column=o),this.remove(n)}},this.moveLinesUp=function(e,t){if(e<=0)return 0;var n=this.doc.removeLines(e,t);return this.doc.insertLines(e-1,n),-1},this.moveLinesDown=function(e,t){if(t>=this.doc.getLength()-1)return 0;var n=this.doc.removeLines(e,t);return this.doc.insertLines(e+1,n),1},this.duplicateLines=function(e,t){var e=this.$clipRowToDocument(e),t=this.$clipRowToDocument(t),n=this.getLines(e,t);this.doc.insertLines(e,n);var r=t-e+1;return r},this.$clipRowToDocument=function(e){return Math.max(0,Math.min(e,this.doc.getLength()-1))},this.$clipColumnToRow=function(e,t){return t<0?0:Math.min(this.doc.getLine(e).length,t)},this.$clipPositionToDocument=function(e,t){t=Math.max(0,t);if(e<0)e=0,t=0;else{var n=this.doc.getLength();e>=n?(e=n-1,t=this.doc.getLine(n-1).length):t=Math.min(this.doc.getLine(e).length,t)}return{row:e,column:t}},this.$clipRangeToDocument=function(e){e.start.row<0?(e.start.row=0,e.start.column=0):e.start.column=this.$clipColumnToRow(e.start.row,e.start.column);var t=this.doc.getLength()-1;return e.end.row>t?(e.end.row=t,e.end.column=this.doc.getLine(t).length):e.end.column=this.$clipColumnToRow(e.end.row,e.end.column),e},this.$wrapLimit=80,this.$useWrapMode=!1,this.$wrapLimitRange={min:null,max:null},this.setUseWrapMode=function(e){if(e!=this.$useWrapMode){this.$useWrapMode=e,this.$modified=!0,this.$resetRowCache(0);if(e){var t=this.getLength();this.$wrapData=[];for(var n=0;n<t;n++)this.$wrapData.push([]);this.$updateWrapData(0,t-1)}this._emit(\"changeWrapMode\")}},this.getUseWrapMode=function(){return this.$useWrapMode},this.setWrapLimitRange=function(e,t){if(this.$wrapLimitRange.min!==e||this.$wrapLimitRange.max!==t)this.$wrapLimitRange.min=e,this.$wrapLimitRange.max=t,this.$modified=!0,this._emit(\"changeWrapMode\")},this.adjustWrapLimit=function(e){var t=this.$constrainWrapLimit(e);return t!=this.$wrapLimit&&t>0?(this.$wrapLimit=t,this.$modified=!0,this.$useWrapMode&&(this.$updateWrapData(0,this.getLength()-1),this.$resetRowCache(0),this._emit(\"changeWrapLimit\")),!0):!1},this.$constrainWrapLimit=function(e){var t=this.$wrapLimitRange.min;t&&(e=Math.max(t,e));var n=this.$wrapLimitRange.max;return n&&(e=Math.min(n,e)),Math.max(1,e)},this.getWrapLimit=function(){return this.$wrapLimit},this.getWrapLimitRange=function(){return{min:this.$wrapLimitRange.min,max:this.$wrapLimitRange.max}},this.$updateInternalDataOnChange=function(e){var t=this.$useWrapMode,n,r=e.data.action,i=e.data.range.start.row,s=e.data.range.end.row,o=e.data.range.start,u=e.data.range.end,a=null;r.indexOf(\"Lines\")!=-1?(r==\"insertLines\"?s=i+e.data.lines.length:s=i,n=e.data.lines?e.data.lines.length:s-i):n=s-i;if(n!=0)if(r.indexOf(\"remove\")!=-1){this[t?\"$wrapData\":\"$rowLengthCache\"].splice(i,n);var f=this.$foldData;a=this.getFoldsInRange(e.data.range),this.removeFolds(a);var l=this.getFoldLine(u.row),c=0;if(l){l.addRemoveChars(u.row,u.column,o.column-u.column),l.shiftRow(-n);var h=this.getFoldLine(i);h&&h!==l&&(h.merge(l),l=h),c=f.indexOf(l)+1}for(c;c<f.length;c++){var l=f[c];l.start.row>=u.row&&l.shiftRow(-n)}s=i}else{var p;if(t){p=[i,0];for(var d=0;d<n;d++)p.push([]);this.$wrapData.splice.apply(this.$wrapData,p)}else p=Array(n),p.unshift(i,0),this.$rowLengthCache.splice.apply(this.$rowLengthCache,p);var f=this.$foldData,l=this.getFoldLine(i),c=0;if(l){var v=l.range.compareInside(o.row,o.column);v==0?(l=l.split(o.row,o.column),l.shiftRow(n),l.addRemoveChars(s,0,u.column-o.column)):v==-1&&(l.addRemoveChars(i,0,u.column-o.column),l.shiftRow(n)),c=f.indexOf(l)+1}for(c;c<f.length;c++){var l=f[c];l.start.row>=i&&l.shiftRow(n)}}else{n=Math.abs(e.data.range.start.column-e.data.range.end.column),r.indexOf(\"remove\")!=-1&&(a=this.getFoldsInRange(e.data.range),this.removeFolds(a),n=-n);var l=this.getFoldLine(i);l&&l.addRemoveChars(i,o.column,n)}return t&&this.$wrapData.length!=this.doc.getLength()&&console.error(\"doc.getLength() and $wrapData.length have to be the same!\"),t?this.$updateWrapData(i,s):this.$updateRowLengthCache(i,s),a},this.$updateRowLengthCache=function(e,t,n){this.$rowLengthCache[e]=null,this.$rowLengthCache[t]=null},this.$updateWrapData=function(e,t){var n=this.doc.getAllLines(),r=this.getTabSize(),i=this.$wrapData,u=this.$wrapLimit,f,l,c=e;t=Math.min(t,n.length-1);while(c<=t){l=this.getFoldLine(c,l);if(!l)f=this.$getDisplayTokens(s.stringTrimRight(n[c])),i[c]=this.$computeWrapSplits(f,u,r),c++;else{f=[],l.walk(function(e,t,r,i){var s;if(e!=null){s=this.$getDisplayTokens(e,f.length),s[0]=o;for(var u=1;u<s.length;u++)s[u]=a}else s=this.$getDisplayTokens(n[t].substring(i,r),f.length);f=f.concat(s)}.bind(this),l.end.row,n[l.end.row].length+1);while(f.length!=0&&f[f.length-1]>=d)f.pop();i[l.start.row]=this.$computeWrapSplits(f,u,r),c=l.end.row+1}}};var t=1,n=2,o=3,a=4,c=9,d=10,v=11,m=12;this.$computeWrapSplits=function(e,t){function u(t){var r=e.slice(i,t),o=r.length;r.join(\"\").replace(/12/g,function(){o-=1}).replace(/2/g,function(){o-=1}),s+=o,n.push(s),i=t}if(e.length==0)return[];var n=[],r=e.length,i=0,s=0;while(r-i>t){var f=i+t;if(e[f]>=d){while(e[f]>=d)f++;u(f);continue}if(e[f]==o||e[f]==a){for(f;f!=i-1;f--)if(e[f]==o)break;if(f>i){u(f);continue}f=i+t;for(f;f<e.length;f++)if(e[f]!=a)break;if(f==e.length)break;u(f);continue}var l=Math.max(f-10,i-1);while(f>l&&e[f]<o)f--;while(f>l&&e[f]==c)f--;if(f>l){u(++f);continue}f=i+t,u(f)}return n},this.$getDisplayTokens=function(e,r){var i=[],s;r=r||0;for(var o=0;o<e.length;o++){var u=e.charCodeAt(o);if(u==9){s=this.getScreenTabSize(i.length+r),i.push(v);for(var a=1;a<s;a++)i.push(m)}else u==32?i.push(d):u>39&&u<48||u>57&&u<64?i.push(c):u>=4352&&g(u)?i.push(t,n):i.push(t)}return i},this.$getStringScreenWidth=function(e,t,n){if(t==0)return[0,0];t==null&&(t=Infinity),n=n||0;var r,i;for(i=0;i<e.length;i++){r=e.charCodeAt(i),r==9?n+=this.getScreenTabSize(n):r>=4352&&g(r)?n+=2:n+=1;if(n>t)break}return[n,i]},this.getRowLength=function(e){return!this.$useWrapMode||!this.$wrapData[e]?1:this.$wrapData[e].length+1},this.getScreenLastRowColumn=function(e){var t=this.screenToDocumentPosition(e,Number.MAX_VALUE);return this.documentToScreenColumn(t.row,t.column)},this.getDocumentLastRowColumn=function(e,t){var n=this.documentToScreenRow(e,t);return this.getScreenLastRowColumn(n)},this.getDocumentLastRowColumnPosition=function(e,t){var n=this.documentToScreenRow(e,t);return this.screenToDocumentPosition(n,Number.MAX_VALUE/10)},this.getRowSplitData=function(e){return this.$useWrapMode?this.$wrapData[e]:undefined},this.getScreenTabSize=function(e){return this.$tabSize-e%this.$tabSize},this.screenToDocumentRow=function(e,t){return this.screenToDocumentPosition(e,t).row},this.screenToDocumentColumn=function(e,t){return this.screenToDocumentPosition(e,t).column},this.screenToDocumentPosition=function(e,t){if(e<0)return{row:0,column:0};var n,r=0,i=0,s,o=0,u=0,a=this.$screenRowCache,f=this.$getRowCacheIndex(a,e),l=a.length;if(l&&f>=0)var o=a[f],r=this.$docRowCache[f],c=e>a[l-1];else var c=!l;var h=this.getLength()-1,p=this.getNextFoldLine(r),d=p?p.start.row:Infinity;while(o<=e){u=this.getRowLength(r);if(o+u-1>=e||r>=h)break;o+=u,r++,r>d&&(r=p.end.row+1,p=this.getNextFoldLine(r,p),d=p?p.start.row:Infinity),c&&(this.$docRowCache.push(r),this.$screenRowCache.push(o))}if(p&&p.start.row<=r)n=this.getFoldDisplayLine(p),r=p.start.row;else{if(o+u<=e||r>h)return{row:h,column:this.getLine(h).length};n=this.getLine(r),p=null}if(this.$useWrapMode){var v=this.$wrapData[r];v&&(s=v[e-o],e>o&&v.length&&(i=v[e-o-1]||v[v.length-1],n=n.substring(i)))}return i+=this.$getStringScreenWidth(n,t)[1],this.$useWrapMode&&i>=s&&(i=s-1),p?p.idxToPosition(i):{row:r,column:i}},this.documentToScreenPosition=function(e,t){if(typeof t==\"undefined\")var n=this.$clipPositionToDocument(e.row,e.column);else n=this.$clipPositionToDocument(e,t);e=n.row,t=n.column;var r=0,i=null,s=null;s=this.getFoldAt(e,t,1),s&&(e=s.start.row,t=s.start.column);var o,u=0,a=this.$docRowCache,f=this.$getRowCacheIndex(a,e),l=a.length;if(l&&f>=0)var u=a[f],r=this.$screenRowCache[f],c=e>a[l-1];else var c=!l;var h=this.getNextFoldLine(u),p=h?h.start.row:Infinity;while(u<e){if(u>=p){o=h.end.row+1;if(o>e)break;h=this.getNextFoldLine(o,h),p=h?h.start.row:Infinity}else o=u+1;r+=this.getRowLength(u),u=o,c&&(this.$docRowCache.push(u),this.$screenRowCache.push(r))}var d=\"\";h&&u>=p?(d=this.getFoldDisplayLine(h,e,t),i=h.start.row):(d=this.getLine(e).substring(0,t),i=e);if(this.$useWrapMode){var v=this.$wrapData[i],m=0;while(d.length>=v[m])r++,m++;d=d.substring(v[m-1]||0,d.length)}return{row:r,column:this.$getStringScreenWidth(d)[0]}},this.documentToScreenColumn=function(e,t){return this.documentToScreenPosition(e,t).column},this.documentToScreenRow=function(e,t){return this.documentToScreenPosition(e,t).row},this.getScreenLength=function(){var e=0,t=null;if(!this.$useWrapMode){e=this.getLength();var n=this.$foldData;for(var r=0;r<n.length;r++)t=n[r],e-=t.end.row-t.start.row}else{var i=this.$wrapData.length,s=0,r=0,t=this.$foldData[r++],o=t?t.start.row:Infinity;while(s<i)e+=this.$wrapData[s].length+1,s++,s>o&&(s=t.end.row+1,t=this.$foldData[r++],o=t?t.start.row:Infinity)}return e}}).call(d.prototype),e(\"./edit_session/folding\").Folding.call(d.prototype),e(\"./edit_session/bracket_match\").BracketMatch.call(d.prototype),t.EditSession=d}),ace.define(\"ace/config\",[\"require\",\"exports\",\"module\",\"ace/lib/lang\",\"ace/lib/oop\",\"ace/lib/net\",\"ace/lib/event_emitter\"],function(e,t,n){\"no use strict\";function f(e){return e.replace(/-(.)/g,function(e,t){return t.toUpperCase()})}var r=e(\"./lib/lang\"),i=e(\"./lib/oop\"),s=e(\"./lib/net\"),o=e(\"./lib/event_emitter\").EventEmitter,u=function(){return this}(),a={packaged:!1,workerPath:null,modePath:null,themePath:null,basePath:\"\",suffix:\".js\",$moduleUrls:{}};t.get=function(e){if(!a.hasOwnProperty(e))throw new Error(\"Unknown config key: \"+e);return a[e]},t.set=function(e,t){if(!a.hasOwnProperty(e))throw new Error(\"Unknown config key: \"+e);a[e]=t},t.all=function(){return r.copyObject(a)},i.implement(t,o),t.moduleUrl=function(e,t){if(a.$moduleUrls[e])return a.$moduleUrls[e];var n=e.split(\"/\");t=t||n[n.length-2]||\"\";var r=n[n.length-1].replace(t,\"\").replace(/(^[\\-_])|([\\-_]$)/,\"\");!r&&n.length>1&&(r=n[n.length-2]);var i=a[t+\"Path\"];return i==null&&(i=a.basePath),i&&i.slice(-1)!=\"/\"&&(i+=\"/\"),i+t+\"-\"+r+this.get(\"suffix\")},t.setModuleUrl=function(e,t){return a.$moduleUrls[e]=t},t.loadModule=function(n,r){var i,o;Array.isArray(n)&&(o=n[0],n=n[1]);try{i=e(n)}catch(u){}if(i)return r(i);var a=function(){e([n],function(e){t._emit(\"load.module\",{name:n,module:e}),r(e)})};if(!t.get(\"packaged\"))return a();s.loadScript(t.moduleUrl(n,o),a)},t.init=function(){a.packaged=e.packaged||n.packaged||u.define&&define.packaged;if(!u.document)return\"\";var r={},i=\"\",s=document.getElementsByTagName(\"script\");for(var o=0;o<s.length;o++){var l=s[o],c=l.src||l.getAttribute(\"src\");if(!c)continue;var h=l.attributes;for(var p=0,d=h.length;p<d;p++){var v=h[p];v.name.indexOf(\"data-ace-\")===0&&(r[f(v.name.replace(/^data-ace-/,\"\"))]=v.value)}var m=c.match(/^(.*)\\/ace(\\-\\w+)?\\.js(\\?|$)/);m&&(i=m[1])}i&&(r.base=r.base||i,r.packaged=!0),r.basePath=r.base,r.workerPath=r.workerPath||r.base,r.modePath=r.modePath||r.base,r.themePath=r.themePath||r.base,delete r.base;for(var g in r)typeof r[g]!=\"undefined\"&&t.set(g,r[g])}}),ace.define(\"ace/lib/net\",[\"require\",\"exports\",\"module\",\"ace/lib/useragent\"],function(e,t,n){var r=e(\"./useragent\");t.get=function(e,n){var r=t.createXhr();r.open(\"GET\",e,!0),r.onreadystatechange=function(e){r.readyState===4&&n(r.responseText)},r.send(null)};var i=[\"Msxml2.XMLHTTP\",\"Microsoft.XMLHTTP\",\"Msxml2.XMLHTTP.4.0\"];t.createXhr=function(){var e,t,n;if(typeof XMLHttpRequest!=\"undefined\")return new XMLHttpRequest;for(t=0;t<3;t++){n=i[t];try{e=new ActiveXObject(n)}catch(r){}if(e){i=[n];break}}if(!e)throw new Error(\"createXhr(): XMLHttpRequest not available\");return e},t.loadScript=function(e,t){var n=document.getElementsByTagName(\"head\")[0],i=document.createElement(\"script\");i.src=e,n.appendChild(i),r.isOldIE?i.onreadystatechange=function(){this.readyState==\"loaded\"&&t()}:i.onload=t}}),ace.define(\"ace/lib/event_emitter\",[\"require\",\"exports\",\"module\"],function(e,t,n){var r={};r._emit=r._dispatchEvent=function(e,t){this._eventRegistry=this._eventRegistry||{},this._defaultHandlers=this._defaultHandlers||{};var n=this._eventRegistry[e]||[],r=this._defaultHandlers[e];if(!n.length&&!r)return;if(typeof t!=\"object\"||!t)t={};t.type||(t.type=e),t.stopPropagation||(t.stopPropagation=function(){this.propagationStopped=!0}),t.preventDefault||(t.preventDefault=function(){this.defaultPrevented=!0});for(var i=0;i<n.length;i++){n[i](t);if(t.propagationStopped)break}if(r&&!t.defaultPrevented)return r(t)},r.setDefaultHandler=function(e,t){this._defaultHandlers=this._defaultHandlers||{};if(this._defaultHandlers[e])throw new Error(\"The default handler for '\"+e+\"' is already set\");this._defaultHandlers[e]=t},r.on=r.addEventListener=function(e,t){this._eventRegistry=this._eventRegistry||{};var n=this._eventRegistry[e];n||(n=this._eventRegistry[e]=[]),n.indexOf(t)==-1&&n.push(t)},r.removeListener=r.removeEventListener=function(e,t){this._eventRegistry=this._eventRegistry||{};var n=this._eventRegistry[e];if(!n)return;var r=n.indexOf(t);r!==-1&&n.splice(r,1)},r.removeAllListeners=function(e){this._eventRegistry&&(this._eventRegistry[e]=[])},t.EventEmitter=r}),ace.define(\"ace/selection\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/lib/event_emitter\",\"ace/range\"],function(e,t,n){var r=e(\"./lib/oop\"),i=e(\"./lib/lang\"),s=e(\"./lib/event_emitter\").EventEmitter,o=e(\"./range\").Range,u=function(e){this.session=e,this.doc=e.getDocument(),this.clearSelection(),this.lead=this.selectionLead=this.doc.createAnchor(0,0),this.anchor=this.selectionAnchor=this.doc.createAnchor(0,0);var t=this;this.lead.on(\"change\",function(e){t._emit(\"changeCursor\"),t.$isEmpty||t._emit(\"changeSelection\"),!t.$keepDesiredColumnOnChange&&e.old.column!=e.value.column&&(t.$desiredColumn=null)}),this.selectionAnchor.on(\"change\",function(){t.$isEmpty||t._emit(\"changeSelection\")})};(function(){r.implement(this,s),this.isEmpty=function(){return this.$isEmpty||this.anchor.row==this.lead.row&&this.anchor.column==this.lead.column},this.isMultiLine=function(){return this.isEmpty()?!1:this.getRange().isMultiLine()},this.getCursor=function(){return this.lead.getPosition()},this.setSelectionAnchor=function(e,t){this.anchor.setPosition(e,t),this.$isEmpty&&(this.$isEmpty=!1,this._emit(\"changeSelection\"))},this.getSelectionAnchor=function(){return this.$isEmpty?this.getSelectionLead():this.anchor.getPosition()},this.getSelectionLead=function(){return this.lead.getPosition()},this.shiftSelection=function(e){if(this.$isEmpty){this.moveCursorTo(this.lead.row,this.lead.column+e);return}var t=this.getSelectionAnchor(),n=this.getSelectionLead(),r=this.isBackwards();(!r||t.column!==0)&&this.setSelectionAnchor(t.row,t.column+e),(r||n.column!==0)&&this.$moveSelection(function(){this.moveCursorTo(n.row,n.column+e)})},this.isBackwards=function(){var e=this.anchor,t=this.lead;return e.row>t.row||e.row==t.row&&e.column>t.column},this.getRange=function(){var e=this.anchor,t=this.lead;return this.isEmpty()?o.fromPoints(t,t):this.isBackwards()?o.fromPoints(t,e):o.fromPoints(e,t)},this.clearSelection=function(){this.$isEmpty||(this.$isEmpty=!0,this._emit(\"changeSelection\"))},this.selectAll=function(){var e=this.doc.getLength()-1;this.setSelectionAnchor(0,0),this.moveCursorTo(e,this.doc.getLine(e).length)},this.setRange=this.setSelectionRange=function(e,t){t?(this.setSelectionAnchor(e.end.row,e.end.column),this.selectTo(e.start.row,e.start.column)):(this.setSelectionAnchor(e.start.row,e.start.column),this.selectTo(e.end.row,e.end.column)),this.$desiredColumn=null},this.$moveSelection=function(e){var t=this.lead;this.$isEmpty&&this.setSelectionAnchor(t.row,t.column),e.call(this)},this.selectTo=function(e,t){this.$moveSelection(function(){this.moveCursorTo(e,t)})},this.selectToPosition=function(e){this.$moveSelection(function(){this.moveCursorToPosition(e)})},this.selectUp=function(){this.$moveSelection(this.moveCursorUp)},this.selectDown=function(){this.$moveSelection(this.moveCursorDown)},this.selectRight=function(){this.$moveSelection(this.moveCursorRight)},this.selectLeft=function(){this.$moveSelection(this.moveCursorLeft)},this.selectLineStart=function(){this.$moveSelection(this.moveCursorLineStart)},this.selectLineEnd=function(){this.$moveSelection(this.moveCursorLineEnd)},this.selectFileEnd=function(){this.$moveSelection(this.moveCursorFileEnd)},this.selectFileStart=function(){this.$moveSelection(this.moveCursorFileStart)},this.selectWordRight=function(){this.$moveSelection(this.moveCursorWordRight)},this.selectWordLeft=function(){this.$moveSelection(this.moveCursorWordLeft)},this.getWordRange=function(e,t){if(typeof t==\"undefined\"){var n=e||this.lead;e=n.row,t=n.column}return this.session.getWordRange(e,t)},this.selectWord=function(){this.setSelectionRange(this.getWordRange())},this.selectAWord=function(){var e=this.getCursor(),t=this.session.getAWordRange(e.row,e.column);this.setSelectionRange(t)},this.getLineRange=function(e,t){var n=typeof e==\"number\"?e:this.lead.row,r,i=this.session.getFoldLine(n);return i?(n=i.start.row,r=i.end.row):r=n,t?new o(n,0,r,this.session.getLine(r).length):new o(n,0,r+1,0)},this.selectLine=function(){this.setSelectionRange(this.getLineRange())},this.moveCursorUp=function(){this.moveCursorBy(-1,0)},this.moveCursorDown=function(){this.moveCursorBy(1,0)},this.moveCursorLeft=function(){var e=this.lead.getPosition(),t;if(t=this.session.getFoldAt(e.row,e.column,-1))this.moveCursorTo(t.start.row,t.start.column);else if(e.column==0)e.row>0&&this.moveCursorTo(e.row-1,this.doc.getLine(e.row-1).length);else{var n=this.session.getTabSize();this.session.isTabStop(e)&&this.doc.getLine(e.row).slice(e.column-n,e.column).split(\" \").length-1==n?this.moveCursorBy(0,-n):this.moveCursorBy(0,-1)}},this.moveCursorRight=function(){var e=this.lead.getPosition(),t;if(t=this.session.getFoldAt(e.row,e.column,1))this.moveCursorTo(t.end.row,t.end.column);else if(this.lead.column==this.doc.getLine(this.lead.row).length)this.lead.row<this.doc.getLength()-1&&this.moveCursorTo(this.lead.row+1,0);else{var n=this.session.getTabSize(),e=this.lead;this.session.isTabStop(e)&&this.doc.getLine(e.row).slice(e.column,e.column+n).split(\" \").length-1==n?this.moveCursorBy(0,n):this.moveCursorBy(0,1)}},this.moveCursorLineStart=function(){var e=this.lead.row,t=this.lead.column,n=this.session.documentToScreenRow(e,t),r=this.session.screenToDocumentPosition(n,0),i=this.session.getDisplayLine(e,null,r.row,r.column),s=i.match(/^\\s*/);s[0].length!=t&&!this.session.$useEmacsStyleLineStart&&(r.column+=s[0].length),this.moveCursorToPosition(r)},this.moveCursorLineEnd=function(){var e=this.lead,t=this.session.getDocumentLastRowColumnPosition(e.row,e.column);if(this.lead.column==t.column){var n=this.session.getLine(t.row);if(t.column==n.length){var r=n.search(/\\s+$/);r>0&&(t.column=r)}}this.moveCursorTo(t.row,t.column)},this.moveCursorFileEnd=function(){var e=this.doc.getLength()-1,t=this.doc.getLine(e).length;this.moveCursorTo(e,t)},this.moveCursorFileStart=function(){this.moveCursorTo(0,0)},this.moveCursorLongWordRight=function(){var e=this.lead.row,t=this.lead.column,n=this.doc.getLine(e),r=n.substring(t),i;this.session.nonTokenRe.lastIndex=0,this.session.tokenRe.lastIndex=0;var s=this.session.getFoldAt(e,t,1);if(s){this.moveCursorTo(s.end.row,s.end.column);return}if(i=this.session.nonTokenRe.exec(r))t+=this.session.nonTokenRe.lastIndex,this.session.nonTokenRe.lastIndex=0,r=n.substring(t);if(t>=n.length){this.moveCursorTo(e,n.length),this.moveCursorRight(),e<this.doc.getLength()-1&&this.moveCursorWordRight();return}if(i=this.session.tokenRe.exec(r))t+=this.session.tokenRe.lastIndex,this.session.tokenRe.lastIndex=0;this.moveCursorTo(e,t)},this.moveCursorLongWordLeft=function(){var e=this.lead.row,t=this.lead.column,n;if(n=this.session.getFoldAt(e,t,-1)){this.moveCursorTo(n.start.row,n.start.column);return}var r=this.session.getFoldStringAt(e,t,-1);r==null&&(r=this.doc.getLine(e).substring(0,t));var s=i.stringReverse(r),o;this.session.nonTokenRe.lastIndex=0,this.session.tokenRe.lastIndex=0;if(o=this.session.nonTokenRe.exec(s))t-=this.session.nonTokenRe.lastIndex,s=s.slice(this.session.nonTokenRe.lastIndex),this.session.nonTokenRe.lastIndex=0;if(t<=0){this.moveCursorTo(e,0),this.moveCursorLeft(),e>0&&this.moveCursorWordLeft();return}if(o=this.session.tokenRe.exec(s))t-=this.session.tokenRe.lastIndex,this.session.tokenRe.lastIndex=0;this.moveCursorTo(e,t)},this.$shortWordEndIndex=function(e){var t,n=0,r,i=/\\s/,s=this.session.tokenRe;s.lastIndex=0;if(t=this.session.tokenRe.exec(e))n=this.session.tokenRe.lastIndex;else{while((r=e[n])&&i.test(r))n++;if(n<=1){s.lastIndex=0;while((r=e[n])&&!s.test(r)){s.lastIndex=0,n++;if(i.test(r)){if(n>2){n--;break}while((r=e[n])&&i.test(r))n++;if(n>2)break}}}}return s.lastIndex=0,n},this.moveCursorShortWordRight=function(){var e=this.lead.row,t=this.lead.column,n=this.doc.getLine(e),r=n.substring(t),i=this.session.getFoldAt(e,t,1);if(i)return this.moveCursorTo(i.end.row,i.end.column);if(t==n.length){var s=this.doc.getLength();do e++,r=this.doc.getLine(e);while(e<s&&/^\\s*$/.test(r));/^\\s+/.test(r)||(r=\"\"),t=0}var o=this.$shortWordEndIndex(r);this.moveCursorTo(e,t+o)},this.moveCursorShortWordLeft=function(){var e=this.lead.row,t=this.lead.column,n;if(n=this.session.getFoldAt(e,t,-1))return this.moveCursorTo(n.start.row,n.start.column);var r=this.session.getLine(e).substring(0,t);if(t==0){do e--,r=this.doc.getLine(e);while(e>0&&/^\\s*$/.test(r));t=r.length,/\\s+$/.test(r)||(r=\"\")}var s=i.stringReverse(r),o=this.$shortWordEndIndex(s);return this.moveCursorTo(e,t-o)},this.moveCursorWordRight=function(){this.session.$selectLongWords?this.moveCursorLongWordRight():this.moveCursorShortWordRight()},this.moveCursorWordLeft=function(){this.session.$selectLongWords?this.moveCursorLongWordLeft():this.moveCursorShortWordLeft()},this.moveCursorBy=function(e,t){var n=this.session.documentToScreenPosition(this.lead.row,this.lead.column);t===0&&(this.$desiredColumn?n.column=this.$desiredColumn:this.$desiredColumn=n.column);var r=this.session.screenToDocumentPosition(n.row+e,n.column);this.moveCursorTo(r.row,r.column+t,t===0)},this.moveCursorToPosition=function(e){this.moveCursorTo(e.row,e.column)},this.moveCursorTo=function(e,t,n){var r=this.session.getFoldAt(e,t,1);r&&(e=r.start.row,t=r.start.column),this.$keepDesiredColumnOnChange=!0,this.lead.setPosition(e,t),this.$keepDesiredColumnOnChange=!1,n||(this.$desiredColumn=null)},this.moveCursorToScreen=function(e,t,n){var r=this.session.screenToDocumentPosition(e,t);this.moveCursorTo(r.row,r.column,n)},this.detach=function(){this.lead.detach(),this.anchor.detach(),this.session=this.doc=null},this.fromOrientedRange=function(e){this.setSelectionRange(e,e.cursor==e.start),this.$desiredColumn=e.desiredColumn||this.$desiredColumn},this.toOrientedRange=function(e){var t=this.getRange();return e?(e.start.column=t.start.column,e.start.row=t.start.row,e.end.column=t.end.column,e.end.row=t.end.row):e=t,e.cursor=this.isBackwards()?e.start:e.end,e.desiredColumn=this.$desiredColumn,e}}).call(u.prototype),t.Selection=u}),ace.define(\"ace/range\",[\"require\",\"exports\",\"module\"],function(e,t,n){var r=function(e,t,n,r){this.start={row:e,column:t},this.end={row:n,column:r}};(function(){this.isEqual=function(e){return this.start.row==e.start.row&&this.end.row==e.end.row&&this.start.column==e.start.column&&this.end.column==e.end.column},this.toString=function(){return\"Range: [\"+this.start.row+\"/\"+this.start.column+\"] -> [\"+this.end.row+\"/\"+this.end.column+\"]\"},this.contains=function(e,t){return this.compare(e,t)==0},this.compareRange=function(e){var t,n=e.end,r=e.start;return t=this.compare(n.row,n.column),t==1?(t=this.compare(r.row,r.column),t==1?2:t==0?1:0):t==-1?-2:(t=this.compare(r.row,r.column),t==-1?-1:t==1?42:0)},this.comparePoint=function(e){return this.compare(e.row,e.column)},this.containsRange=function(e){return this.comparePoint(e.start)==0&&this.comparePoint(e.end)==0},this.intersects=function(e){var t=this.compareRange(e);return t==-1||t==0||t==1},this.isEnd=function(e,t){return this.end.row==e&&this.end.column==t},this.isStart=function(e,t){return this.start.row==e&&this.start.column==t},this.setStart=function(e,t){typeof e==\"object\"?(this.start.column=e.column,this.start.row=e.row):(this.start.row=e,this.start.column=t)},this.setEnd=function(e,t){typeof e==\"object\"?(this.end.column=e.column,this.end.row=e.row):(this.end.row=e,this.end.column=t)},this.inside=function(e,t){return this.compare(e,t)==0?this.isEnd(e,t)||this.isStart(e,t)?!1:!0:!1},this.insideStart=function(e,t){return this.compare(e,t)==0?this.isEnd(e,t)?!1:!0:!1},this.insideEnd=function(e,t){return this.compare(e,t)==0?this.isStart(e,t)?!1:!0:!1},this.compare=function(e,t){return!this.isMultiLine()&&e===this.start.row?t<this.start.column?-1:t>this.end.column?1:0:e<this.start.row?-1:e>this.end.row?1:this.start.row===e?t>=this.start.column?0:-1:this.end.row===e?t<=this.end.column?0:1:0},this.compareStart=function(e,t){return this.start.row==e&&this.start.column==t?-1:this.compare(e,t)},this.compareEnd=function(e,t){return this.end.row==e&&this.end.column==t?1:this.compare(e,t)},this.compareInside=function(e,t){return this.end.row==e&&this.end.column==t?1:this.start.row==e&&this.start.column==t?-1:this.compare(e,t)},this.clipRows=function(e,t){if(this.end.row>t)var n={row:t+1,column:0};if(this.start.row>t)var i={row:t+1,column:0};if(this.start.row<e)var i={row:e,column:0};if(this.end.row<e)var n={row:e,column:0};return r.fromPoints(i||this.start,n||this.end)},this.extend=function(e,t){var n=this.compare(e,t);if(n==0)return this;if(n==-1)var i={row:e,column:t};else var s={row:e,column:t};return r.fromPoints(i||this.start,s||this.end)},this.isEmpty=function(){return this.start.row==this.end.row&&this.start.column==this.end.column},this.isMultiLine=function(){return this.start.row!==this.end.row},this.clone=function(){return r.fromPoints(this.start,this.end)},this.collapseRows=function(){return this.end.column==0?new r(this.start.row,0,Math.max(this.start.row,this.end.row-1),0):new r(this.start.row,0,this.end.row,0)},this.toScreenRange=function(e){var t=e.documentToScreenPosition(this.start),n=e.documentToScreenPosition(this.end);return new r(t.row,t.column,n.row,n.column)}}).call(r.prototype),r.fromPoints=function(e,t){return new r(e.row,e.column,t.row,t.column)},t.Range=r}),ace.define(\"ace/mode/text\",[\"require\",\"exports\",\"module\",\"ace/tokenizer\",\"ace/mode/text_highlight_rules\",\"ace/mode/behaviour\",\"ace/unicode\"],function(e,t,n){var r=e(\"../tokenizer\").Tokenizer,i=e(\"./text_highlight_rules\").TextHighlightRules,s=e(\"./behaviour\").Behaviour,o=e(\"../unicode\"),u=function(){this.$tokenizer=new r((new i).getRules()),this.$behaviour=new s};(function(){this.tokenRe=new RegExp(\"^[\"+o.packages.L+o.packages.Mn+o.packages.Mc+o.packages.Nd+o.packages.Pc+\"\\\\$_]+\",\"g\"),this.nonTokenRe=new RegExp(\"^(?:[^\"+o.packages.L+o.packages.Mn+o.packages.Mc+o.packages.Nd+o.packages.Pc+\"\\\\$_]|s])+\",\"g\"),this.getTokenizer=function(){return this.$tokenizer},this.toggleCommentLines=function(e,t,n,r){},this.getNextLineIndent=function(e,t,n){return\"\"},this.checkOutdent=function(e,t,n){return!1},this.autoOutdent=function(e,t,n){},this.$getIndent=function(e){var t=e.match(/^(\\s+)/);return t?t[1]:\"\"},this.createWorker=function(e){return null},this.createModeDelegates=function(e){if(!this.$embeds)return;this.$modes={};for(var t=0;t<this.$embeds.length;t++)e[this.$embeds[t]]&&(this.$modes[this.$embeds[t]]=new e[this.$embeds[t]]);var n=[\"toggleCommentLines\",\"getNextLineIndent\",\"checkOutdent\",\"autoOutdent\",\"transformAction\"];for(var t=0;t<n.length;t++)(function(e){var r=n[t],i=e[r];e[n[t]]=function(){return this.$delegator(r,arguments,i)}})(this)},this.$delegator=function(e,t,n){var r=t[0];for(var i=0;i<this.$embeds.length;i++){if(!this.$modes[this.$embeds[i]])continue;var s=r.split(this.$embeds[i]);if(!s[0]&&s[1]){t[0]=s[1];var o=this.$modes[this.$embeds[i]];return o[e].apply(o,t)}}var u=n.apply(this,t);return n?u:undefined},this.transformAction=function(e,t,n,r,i){if(this.$behaviour){var s=this.$behaviour.getBehaviours();for(var o in s)if(s[o][t]){var u=s[o][t].apply(this,arguments);if(u)return u}}}}).call(u.prototype),t.Mode=u}),ace.define(\"ace/tokenizer\",[\"require\",\"exports\",\"module\"],function(e,t,n){var r=function(e,t){t=t?\"g\"+t:\"g\",this.states=e,this.regExps={},this.matchMappings={};for(var n in this.states){var r=this.states[n],i=[],s=0,o=this.matchMappings[n]={defaultToken:\"text\"};for(var u=0;u<r.length;u++){var a=r[u];if(a.defaultToken){o.defaultToken=a.defaultToken;continue}a.regex instanceof RegExp&&(a.regex=a.regex.toString().slice(1,-1));var f=a.regex,l=(new RegExp(\"(?:(\"+f+\")|(.))\")).exec(\"a\").length-2;Array.isArray(a.token)&&(a.token.length==1?a.token=a.token[0]:(a.tokenArray=a.token,a.token=this.$arrayTokens)),l>1&&(/\\\\\\d/.test(a.regex)?f=a.regex.replace(/\\\\([0-9]+)/g,function(e,t){return\"\\\\\"+(parseInt(t,10)+s+1)}):(l=1,f=this.removeCapturingGroups(a.regex)),a.splitRegex||(a.splitRegex=this.createSplitterRegexp(a.regex,t))),o[s]=u,s+=l,i.push(f)}this.regExps[n]=new RegExp(\"(\"+i.join(\")|(\")+\")|($)\",t)}};(function(){this.$arrayTokens=function(e){if(!e)return[];var t=e.split(this.splitRegex),n=[],r=this.tokenArray;if(r.length!=t.length-2)return window.console&&console.error(r.length,t.length-2,e,this.splitRegex),[{type:\"error.invalid\",value:e}];for(var i=0;i<r.length;i++)t[i+1]&&(n[n.length]={type:r[i],value:t[i+1]});return n},this.removeCapturingGroups=function(e){var t=e.replace(/\\[(?:\\\\.|[^\\]])*?\\]|\\\\.|\\(\\?[:=!]|(\\()/g,function(e,t){return t?\"(?:\":e});return t},this.createSplitterRegexp=function(e,t){return e=e.replace(/\\(\\?=([^()]|\\\\.)*?\\)$/,\"\"),new RegExp(e,t)},this.getLineTokens=function(e,t){if(t&&typeof t!=\"string\"){var n=t.slice(0);t=n[0]}else var n=[];var r=t||\"start\",i=this.states[r],s=this.matchMappings[r],o=this.regExps[r];o.lastIndex=0;var u,a=[],f=0,l={type:null,value:\"\"};while(u=o.exec(e)){var c=s.defaultToken,h=null,p=u[0],d=o.lastIndex;if(d-p.length>f){var v=e.substring(f,d-p.length);l.type==c?l.value+=v:(l.type&&a.push(l),l={type:c,value:v})}for(var m=0;m<u.length-2;m++){if(u[m+1]===undefined)continue;h=i[s[m]],c=typeof h.token==\"function\"?h.token(p,r,n):h.token,h.next&&(r=h.next,i=this.states[r],i||(window.console&&console.error&&console.error(r,\"doesn't exist\"),r=\"start\",i=this.states[r]),s=this.matchMappings[r],f=d,o=this.regExps[r],o.lastIndex=d);break}if(p)if(typeof c==\"string\")!!h&&h.merge===!1||l.type!==c?(l.type&&a.push(l),l={type:c,value:p}):l.value+=p;else{l.type&&a.push(l),l={type:null,value:\"\"};for(var m=0;m<c.length;m++)a.push(c[m])}if(f==e.length)break;f=d}return l.type&&a.push(l),{tokens:a,state:n.length?n:r}}}).call(r.prototype),t.Tokenizer=r}),ace.define(\"ace/mode/text_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/lang\"],function(e,t,n){var r=e(\"../lib/lang\"),i=function(){this.$rules={start:[{token:\"empty_line\",regex:\"^$\"},{token:\"text\",regex:\".+\"}]}};(function(){this.addRules=function(e,t){for(var n in e){var r=e[n];for(var i=0;i<r.length;i++){var s=r[i];s.next&&(s.next=t+s.next)}this.$rules[t+n]=r}},this.getRules=function(){return this.$rules},this.embedRules=function(e,t,n,i,s){var o=(new e).getRules();if(i)for(var u=0;u<i.length;u++)i[u]=t+i[u];else{i=[];for(var a in o)i.push(t+a)}this.addRules(o,t);if(n){var f=Array.prototype[s?\"push\":\"unshift\"];for(var u=0;u<i.length;u++)f.apply(this.$rules[i[u]],r.deepCopy(n))}this.$embeds||(this.$embeds=[]),this.$embeds.push(t)},this.getEmbeds=function(){return this.$embeds},this.normalizeRules=function(){var e=0;for(var t in this.$rules){var n=this.$rules[t];for(var r=0;r<n.length;r++){var i=n[r];if(i.next&&Array.isArray(i.next)){var s=i.stateName||\"state\"+e++;this.$rules[s]=i.next,i.next=s}if(i.rules)for(var o in i.rules)this.$rules[o]?this.$rules[o].push&&this.$rules[o].push.apply(this.$rules[o],i.rules[o]):this.$rules[o]=i.rules[o];if(i.include||typeof i==\"string\"){var u=[r,1].concat(this.$rules[i.include||i]);i.noEscape&&(u=u.filter(function(e){return!e.next})),n.splice.apply(n,u)}}}},this.createKeywordMapper=function(e,t,n,r){var i=Object.create(null);return Object.keys(e).forEach(function(t){var s=e[t];n&&(s=s.toLowerCase());var o=s.split(r||\"|\");for(var u=o.length;u--;)i[o[u]]=t}),e=null,n?function(e){return i[e.toLowerCase()]||t}:function(e){return i[e]||t}},this.getKeywords=function(){return this.$keywords}}).call(i.prototype),t.TextHighlightRules=i}),ace.define(\"ace/mode/behaviour\",[\"require\",\"exports\",\"module\"],function(e,t,n){var r=function(){this.$behaviours={}};(function(){this.add=function(e,t,n){switch(undefined){case this.$behaviours:this.$behaviours={};case this.$behaviours[e]:this.$behaviours[e]={}}this.$behaviours[e][t]=n},this.addBehaviours=function(e){for(var t in e)for(var n in e[t])this.add(t,n,e[t][n])},this.remove=function(e){this.$behaviours&&this.$behaviours[e]&&delete this.$behaviours[e]},this.inherit=function(e,t){if(typeof e==\"function\")var n=(new e).getBehaviours(t);else var n=e.getBehaviours(t);this.addBehaviours(n)},this.getBehaviours=function(e){if(!e)return this.$behaviours;var t={};for(var n=0;n<e.length;n++)this.$behaviours[e[n]]&&(t[e[n]]=this.$behaviours[e[n]]);return t}}).call(r.prototype),t.Behaviour=r}),ace.define(\"ace/unicode\",[\"require\",\"exports\",\"module\"],function(e,t,n){function r(e){var n=/\\w{4}/g;for(var r in e)t.packages[r]=e[r].replace(n,\"\\\\u$&\")}t.packages={},r({L:\"0041-005A0061-007A00AA00B500BA00C0-00D600D8-00F600F8-02C102C6-02D102E0-02E402EC02EE0370-037403760377037A-037D03860388-038A038C038E-03A103A3-03F503F7-0481048A-05250531-055605590561-058705D0-05EA05F0-05F20621-064A066E066F0671-06D306D506E506E606EE06EF06FA-06FC06FF07100712-072F074D-07A507B107CA-07EA07F407F507FA0800-0815081A082408280904-0939093D09500958-0961097109720979-097F0985-098C098F09900993-09A809AA-09B009B209B6-09B909BD09CE09DC09DD09DF-09E109F009F10A05-0A0A0A0F0A100A13-0A280A2A-0A300A320A330A350A360A380A390A59-0A5C0A5E0A72-0A740A85-0A8D0A8F-0A910A93-0AA80AAA-0AB00AB20AB30AB5-0AB90ABD0AD00AE00AE10B05-0B0C0B0F0B100B13-0B280B2A-0B300B320B330B35-0B390B3D0B5C0B5D0B5F-0B610B710B830B85-0B8A0B8E-0B900B92-0B950B990B9A0B9C0B9E0B9F0BA30BA40BA8-0BAA0BAE-0BB90BD00C05-0C0C0C0E-0C100C12-0C280C2A-0C330C35-0C390C3D0C580C590C600C610C85-0C8C0C8E-0C900C92-0CA80CAA-0CB30CB5-0CB90CBD0CDE0CE00CE10D05-0D0C0D0E-0D100D12-0D280D2A-0D390D3D0D600D610D7A-0D7F0D85-0D960D9A-0DB10DB3-0DBB0DBD0DC0-0DC60E01-0E300E320E330E40-0E460E810E820E840E870E880E8A0E8D0E94-0E970E99-0E9F0EA1-0EA30EA50EA70EAA0EAB0EAD-0EB00EB20EB30EBD0EC0-0EC40EC60EDC0EDD0F000F40-0F470F49-0F6C0F88-0F8B1000-102A103F1050-1055105A-105D106110651066106E-10701075-1081108E10A0-10C510D0-10FA10FC1100-1248124A-124D1250-12561258125A-125D1260-1288128A-128D1290-12B012B2-12B512B8-12BE12C012C2-12C512C8-12D612D8-13101312-13151318-135A1380-138F13A0-13F41401-166C166F-167F1681-169A16A0-16EA1700-170C170E-17111720-17311740-17511760-176C176E-17701780-17B317D717DC1820-18771880-18A818AA18B0-18F51900-191C1950-196D1970-19741980-19AB19C1-19C71A00-1A161A20-1A541AA71B05-1B331B45-1B4B1B83-1BA01BAE1BAF1C00-1C231C4D-1C4F1C5A-1C7D1CE9-1CEC1CEE-1CF11D00-1DBF1E00-1F151F18-1F1D1F20-1F451F48-1F4D1F50-1F571F591F5B1F5D1F5F-1F7D1F80-1FB41FB6-1FBC1FBE1FC2-1FC41FC6-1FCC1FD0-1FD31FD6-1FDB1FE0-1FEC1FF2-1FF41FF6-1FFC2071207F2090-209421022107210A-211321152119-211D212421262128212A-212D212F-2139213C-213F2145-2149214E218321842C00-2C2E2C30-2C5E2C60-2CE42CEB-2CEE2D00-2D252D30-2D652D6F2D80-2D962DA0-2DA62DA8-2DAE2DB0-2DB62DB8-2DBE2DC0-2DC62DC8-2DCE2DD0-2DD62DD8-2DDE2E2F300530063031-3035303B303C3041-3096309D-309F30A1-30FA30FC-30FF3105-312D3131-318E31A0-31B731F0-31FF3400-4DB54E00-9FCBA000-A48CA4D0-A4FDA500-A60CA610-A61FA62AA62BA640-A65FA662-A66EA67F-A697A6A0-A6E5A717-A71FA722-A788A78BA78CA7FB-A801A803-A805A807-A80AA80C-A822A840-A873A882-A8B3A8F2-A8F7A8FBA90A-A925A930-A946A960-A97CA984-A9B2A9CFAA00-AA28AA40-AA42AA44-AA4BAA60-AA76AA7AAA80-AAAFAAB1AAB5AAB6AAB9-AABDAAC0AAC2AADB-AADDABC0-ABE2AC00-D7A3D7B0-D7C6D7CB-D7FBF900-FA2DFA30-FA6DFA70-FAD9FB00-FB06FB13-FB17FB1DFB1F-FB28FB2A-FB36FB38-FB3CFB3EFB40FB41FB43FB44FB46-FBB1FBD3-FD3DFD50-FD8FFD92-FDC7FDF0-FDFBFE70-FE74FE76-FEFCFF21-FF3AFF41-FF5AFF66-FFBEFFC2-FFC7FFCA-FFCFFFD2-FFD7FFDA-FFDC\",Ll:\"0061-007A00AA00B500BA00DF-00F600F8-00FF01010103010501070109010B010D010F01110113011501170119011B011D011F01210123012501270129012B012D012F01310133013501370138013A013C013E014001420144014601480149014B014D014F01510153015501570159015B015D015F01610163016501670169016B016D016F0171017301750177017A017C017E-0180018301850188018C018D019201950199-019B019E01A101A301A501A801AA01AB01AD01B001B401B601B901BA01BD-01BF01C601C901CC01CE01D001D201D401D601D801DA01DC01DD01DF01E101E301E501E701E901EB01ED01EF01F001F301F501F901FB01FD01FF02010203020502070209020B020D020F02110213021502170219021B021D021F02210223022502270229022B022D022F02310233-0239023C023F0240024202470249024B024D024F-02930295-02AF037103730377037B-037D039003AC-03CE03D003D103D5-03D703D903DB03DD03DF03E103E303E503E703E903EB03ED03EF-03F303F503F803FB03FC0430-045F04610463046504670469046B046D046F04710473047504770479047B047D047F0481048B048D048F04910493049504970499049B049D049F04A104A304A504A704A904AB04AD04AF04B104B304B504B704B904BB04BD04BF04C204C404C604C804CA04CC04CE04CF04D104D304D504D704D904DB04DD04DF04E104E304E504E704E904EB04ED04EF04F104F304F504F704F904FB04FD04FF05010503050505070509050B050D050F05110513051505170519051B051D051F0521052305250561-05871D00-1D2B1D62-1D771D79-1D9A1E011E031E051E071E091E0B1E0D1E0F1E111E131E151E171E191E1B1E1D1E1F1E211E231E251E271E291E2B1E2D1E2F1E311E331E351E371E391E3B1E3D1E3F1E411E431E451E471E491E4B1E4D1E4F1E511E531E551E571E591E5B1E5D1E5F1E611E631E651E671E691E6B1E6D1E6F1E711E731E751E771E791E7B1E7D1E7F1E811E831E851E871E891E8B1E8D1E8F1E911E931E95-1E9D1E9F1EA11EA31EA51EA71EA91EAB1EAD1EAF1EB11EB31EB51EB71EB91EBB1EBD1EBF1EC11EC31EC51EC71EC91ECB1ECD1ECF1ED11ED31ED51ED71ED91EDB1EDD1EDF1EE11EE31EE51EE71EE91EEB1EED1EEF1EF11EF31EF51EF71EF91EFB1EFD1EFF-1F071F10-1F151F20-1F271F30-1F371F40-1F451F50-1F571F60-1F671F70-1F7D1F80-1F871F90-1F971FA0-1FA71FB0-1FB41FB61FB71FBE1FC2-1FC41FC61FC71FD0-1FD31FD61FD71FE0-1FE71FF2-1FF41FF61FF7210A210E210F2113212F21342139213C213D2146-2149214E21842C30-2C5E2C612C652C662C682C6A2C6C2C712C732C742C76-2C7C2C812C832C852C872C892C8B2C8D2C8F2C912C932C952C972C992C9B2C9D2C9F2CA12CA32CA52CA72CA92CAB2CAD2CAF2CB12CB32CB52CB72CB92CBB2CBD2CBF2CC12CC32CC52CC72CC92CCB2CCD2CCF2CD12CD32CD52CD72CD92CDB2CDD2CDF2CE12CE32CE42CEC2CEE2D00-2D25A641A643A645A647A649A64BA64DA64FA651A653A655A657A659A65BA65DA65FA663A665A667A669A66BA66DA681A683A685A687A689A68BA68DA68FA691A693A695A697A723A725A727A729A72BA72DA72F-A731A733A735A737A739A73BA73DA73FA741A743A745A747A749A74BA74DA74FA751A753A755A757A759A75BA75DA75FA761A763A765A767A769A76BA76DA76FA771-A778A77AA77CA77FA781A783A785A787A78CFB00-FB06FB13-FB17FF41-FF5A\",Lu:\"0041-005A00C0-00D600D8-00DE01000102010401060108010A010C010E01100112011401160118011A011C011E01200122012401260128012A012C012E01300132013401360139013B013D013F0141014301450147014A014C014E01500152015401560158015A015C015E01600162016401660168016A016C016E017001720174017601780179017B017D018101820184018601870189-018B018E-0191019301940196-0198019C019D019F01A001A201A401A601A701A901AC01AE01AF01B1-01B301B501B701B801BC01C401C701CA01CD01CF01D101D301D501D701D901DB01DE01E001E201E401E601E801EA01EC01EE01F101F401F6-01F801FA01FC01FE02000202020402060208020A020C020E02100212021402160218021A021C021E02200222022402260228022A022C022E02300232023A023B023D023E02410243-02460248024A024C024E03700372037603860388-038A038C038E038F0391-03A103A3-03AB03CF03D2-03D403D803DA03DC03DE03E003E203E403E603E803EA03EC03EE03F403F703F903FA03FD-042F04600462046404660468046A046C046E04700472047404760478047A047C047E0480048A048C048E04900492049404960498049A049C049E04A004A204A404A604A804AA04AC04AE04B004B204B404B604B804BA04BC04BE04C004C104C304C504C704C904CB04CD04D004D204D404D604D804DA04DC04DE04E004E204E404E604E804EA04EC04EE04F004F204F404F604F804FA04FC04FE05000502050405060508050A050C050E05100512051405160518051A051C051E0520052205240531-055610A0-10C51E001E021E041E061E081E0A1E0C1E0E1E101E121E141E161E181E1A1E1C1E1E1E201E221E241E261E281E2A1E2C1E2E1E301E321E341E361E381E3A1E3C1E3E1E401E421E441E461E481E4A1E4C1E4E1E501E521E541E561E581E5A1E5C1E5E1E601E621E641E661E681E6A1E6C1E6E1E701E721E741E761E781E7A1E7C1E7E1E801E821E841E861E881E8A1E8C1E8E1E901E921E941E9E1EA01EA21EA41EA61EA81EAA1EAC1EAE1EB01EB21EB41EB61EB81EBA1EBC1EBE1EC01EC21EC41EC61EC81ECA1ECC1ECE1ED01ED21ED41ED61ED81EDA1EDC1EDE1EE01EE21EE41EE61EE81EEA1EEC1EEE1EF01EF21EF41EF61EF81EFA1EFC1EFE1F08-1F0F1F18-1F1D1F28-1F2F1F38-1F3F1F48-1F4D1F591F5B1F5D1F5F1F68-1F6F1FB8-1FBB1FC8-1FCB1FD8-1FDB1FE8-1FEC1FF8-1FFB21022107210B-210D2110-211221152119-211D212421262128212A-212D2130-2133213E213F214521832C00-2C2E2C602C62-2C642C672C692C6B2C6D-2C702C722C752C7E-2C802C822C842C862C882C8A2C8C2C8E2C902C922C942C962C982C9A2C9C2C9E2CA02CA22CA42CA62CA82CAA2CAC2CAE2CB02CB22CB42CB62CB82CBA2CBC2CBE2CC02CC22CC42CC62CC82CCA2CCC2CCE2CD02CD22CD42CD62CD82CDA2CDC2CDE2CE02CE22CEB2CEDA640A642A644A646A648A64AA64CA64EA650A652A654A656A658A65AA65CA65EA662A664A666A668A66AA66CA680A682A684A686A688A68AA68CA68EA690A692A694A696A722A724A726A728A72AA72CA72EA732A734A736A738A73AA73CA73EA740A742A744A746A748A74AA74CA74EA750A752A754A756A758A75AA75CA75EA760A762A764A766A768A76AA76CA76EA779A77BA77DA77EA780A782A784A786A78BFF21-FF3A\",Lt:\"01C501C801CB01F21F88-1F8F1F98-1F9F1FA8-1FAF1FBC1FCC1FFC\",Lm:\"02B0-02C102C6-02D102E0-02E402EC02EE0374037A0559064006E506E607F407F507FA081A0824082809710E460EC610FC17D718431AA71C78-1C7D1D2C-1D611D781D9B-1DBF2071207F2090-20942C7D2D6F2E2F30053031-3035303B309D309E30FC-30FEA015A4F8-A4FDA60CA67FA717-A71FA770A788A9CFAA70AADDFF70FF9EFF9F\",Lo:\"01BB01C0-01C3029405D0-05EA05F0-05F20621-063F0641-064A066E066F0671-06D306D506EE06EF06FA-06FC06FF07100712-072F074D-07A507B107CA-07EA0800-08150904-0939093D09500958-096109720979-097F0985-098C098F09900993-09A809AA-09B009B209B6-09B909BD09CE09DC09DD09DF-09E109F009F10A05-0A0A0A0F0A100A13-0A280A2A-0A300A320A330A350A360A380A390A59-0A5C0A5E0A72-0A740A85-0A8D0A8F-0A910A93-0AA80AAA-0AB00AB20AB30AB5-0AB90ABD0AD00AE00AE10B05-0B0C0B0F0B100B13-0B280B2A-0B300B320B330B35-0B390B3D0B5C0B5D0B5F-0B610B710B830B85-0B8A0B8E-0B900B92-0B950B990B9A0B9C0B9E0B9F0BA30BA40BA8-0BAA0BAE-0BB90BD00C05-0C0C0C0E-0C100C12-0C280C2A-0C330C35-0C390C3D0C580C590C600C610C85-0C8C0C8E-0C900C92-0CA80CAA-0CB30CB5-0CB90CBD0CDE0CE00CE10D05-0D0C0D0E-0D100D12-0D280D2A-0D390D3D0D600D610D7A-0D7F0D85-0D960D9A-0DB10DB3-0DBB0DBD0DC0-0DC60E01-0E300E320E330E40-0E450E810E820E840E870E880E8A0E8D0E94-0E970E99-0E9F0EA1-0EA30EA50EA70EAA0EAB0EAD-0EB00EB20EB30EBD0EC0-0EC40EDC0EDD0F000F40-0F470F49-0F6C0F88-0F8B1000-102A103F1050-1055105A-105D106110651066106E-10701075-1081108E10D0-10FA1100-1248124A-124D1250-12561258125A-125D1260-1288128A-128D1290-12B012B2-12B512B8-12BE12C012C2-12C512C8-12D612D8-13101312-13151318-135A1380-138F13A0-13F41401-166C166F-167F1681-169A16A0-16EA1700-170C170E-17111720-17311740-17511760-176C176E-17701780-17B317DC1820-18421844-18771880-18A818AA18B0-18F51900-191C1950-196D1970-19741980-19AB19C1-19C71A00-1A161A20-1A541B05-1B331B45-1B4B1B83-1BA01BAE1BAF1C00-1C231C4D-1C4F1C5A-1C771CE9-1CEC1CEE-1CF12135-21382D30-2D652D80-2D962DA0-2DA62DA8-2DAE2DB0-2DB62DB8-2DBE2DC0-2DC62DC8-2DCE2DD0-2DD62DD8-2DDE3006303C3041-3096309F30A1-30FA30FF3105-312D3131-318E31A0-31B731F0-31FF3400-4DB54E00-9FCBA000-A014A016-A48CA4D0-A4F7A500-A60BA610-A61FA62AA62BA66EA6A0-A6E5A7FB-A801A803-A805A807-A80AA80C-A822A840-A873A882-A8B3A8F2-A8F7A8FBA90A-A925A930-A946A960-A97CA984-A9B2AA00-AA28AA40-AA42AA44-AA4BAA60-AA6FAA71-AA76AA7AAA80-AAAFAAB1AAB5AAB6AAB9-AABDAAC0AAC2AADBAADCABC0-ABE2AC00-D7A3D7B0-D7C6D7CB-D7FBF900-FA2DFA30-FA6DFA70-FAD9FB1DFB1F-FB28FB2A-FB36FB38-FB3CFB3EFB40FB41FB43FB44FB46-FBB1FBD3-FD3DFD50-FD8FFD92-FDC7FDF0-FDFBFE70-FE74FE76-FEFCFF66-FF6FFF71-FF9DFFA0-FFBEFFC2-FFC7FFCA-FFCFFFD2-FFD7FFDA-FFDC\",M:\"0300-036F0483-04890591-05BD05BF05C105C205C405C505C70610-061A064B-065E067006D6-06DC06DE-06E406E706E806EA-06ED07110730-074A07A6-07B007EB-07F30816-0819081B-08230825-08270829-082D0900-0903093C093E-094E0951-0955096209630981-098309BC09BE-09C409C709C809CB-09CD09D709E209E30A01-0A030A3C0A3E-0A420A470A480A4B-0A4D0A510A700A710A750A81-0A830ABC0ABE-0AC50AC7-0AC90ACB-0ACD0AE20AE30B01-0B030B3C0B3E-0B440B470B480B4B-0B4D0B560B570B620B630B820BBE-0BC20BC6-0BC80BCA-0BCD0BD70C01-0C030C3E-0C440C46-0C480C4A-0C4D0C550C560C620C630C820C830CBC0CBE-0CC40CC6-0CC80CCA-0CCD0CD50CD60CE20CE30D020D030D3E-0D440D46-0D480D4A-0D4D0D570D620D630D820D830DCA0DCF-0DD40DD60DD8-0DDF0DF20DF30E310E34-0E3A0E47-0E4E0EB10EB4-0EB90EBB0EBC0EC8-0ECD0F180F190F350F370F390F3E0F3F0F71-0F840F860F870F90-0F970F99-0FBC0FC6102B-103E1056-1059105E-10601062-10641067-106D1071-10741082-108D108F109A-109D135F1712-17141732-1734175217531772177317B6-17D317DD180B-180D18A91920-192B1930-193B19B0-19C019C819C91A17-1A1B1A55-1A5E1A60-1A7C1A7F1B00-1B041B34-1B441B6B-1B731B80-1B821BA1-1BAA1C24-1C371CD0-1CD21CD4-1CE81CED1CF21DC0-1DE61DFD-1DFF20D0-20F02CEF-2CF12DE0-2DFF302A-302F3099309AA66F-A672A67CA67DA6F0A6F1A802A806A80BA823-A827A880A881A8B4-A8C4A8E0-A8F1A926-A92DA947-A953A980-A983A9B3-A9C0AA29-AA36AA43AA4CAA4DAA7BAAB0AAB2-AAB4AAB7AAB8AABEAABFAAC1ABE3-ABEAABECABEDFB1EFE00-FE0FFE20-FE26\",Mn:\"0300-036F0483-04870591-05BD05BF05C105C205C405C505C70610-061A064B-065E067006D6-06DC06DF-06E406E706E806EA-06ED07110730-074A07A6-07B007EB-07F30816-0819081B-08230825-08270829-082D0900-0902093C0941-0948094D0951-095509620963098109BC09C1-09C409CD09E209E30A010A020A3C0A410A420A470A480A4B-0A4D0A510A700A710A750A810A820ABC0AC1-0AC50AC70AC80ACD0AE20AE30B010B3C0B3F0B41-0B440B4D0B560B620B630B820BC00BCD0C3E-0C400C46-0C480C4A-0C4D0C550C560C620C630CBC0CBF0CC60CCC0CCD0CE20CE30D41-0D440D4D0D620D630DCA0DD2-0DD40DD60E310E34-0E3A0E47-0E4E0EB10EB4-0EB90EBB0EBC0EC8-0ECD0F180F190F350F370F390F71-0F7E0F80-0F840F860F870F90-0F970F99-0FBC0FC6102D-10301032-10371039103A103D103E10581059105E-10601071-1074108210851086108D109D135F1712-17141732-1734175217531772177317B7-17BD17C617C9-17D317DD180B-180D18A91920-19221927192819321939-193B1A171A181A561A58-1A5E1A601A621A65-1A6C1A73-1A7C1A7F1B00-1B031B341B36-1B3A1B3C1B421B6B-1B731B801B811BA2-1BA51BA81BA91C2C-1C331C361C371CD0-1CD21CD4-1CE01CE2-1CE81CED1DC0-1DE61DFD-1DFF20D0-20DC20E120E5-20F02CEF-2CF12DE0-2DFF302A-302F3099309AA66FA67CA67DA6F0A6F1A802A806A80BA825A826A8C4A8E0-A8F1A926-A92DA947-A951A980-A982A9B3A9B6-A9B9A9BCAA29-AA2EAA31AA32AA35AA36AA43AA4CAAB0AAB2-AAB4AAB7AAB8AABEAABFAAC1ABE5ABE8ABEDFB1EFE00-FE0FFE20-FE26\",Mc:\"0903093E-09400949-094C094E0982098309BE-09C009C709C809CB09CC09D70A030A3E-0A400A830ABE-0AC00AC90ACB0ACC0B020B030B3E0B400B470B480B4B0B4C0B570BBE0BBF0BC10BC20BC6-0BC80BCA-0BCC0BD70C01-0C030C41-0C440C820C830CBE0CC0-0CC40CC70CC80CCA0CCB0CD50CD60D020D030D3E-0D400D46-0D480D4A-0D4C0D570D820D830DCF-0DD10DD8-0DDF0DF20DF30F3E0F3F0F7F102B102C10311038103B103C105610571062-10641067-106D108310841087-108C108F109A-109C17B617BE-17C517C717C81923-19261929-192B193019311933-193819B0-19C019C819C91A19-1A1B1A551A571A611A631A641A6D-1A721B041B351B3B1B3D-1B411B431B441B821BA11BA61BA71BAA1C24-1C2B1C341C351CE11CF2A823A824A827A880A881A8B4-A8C3A952A953A983A9B4A9B5A9BAA9BBA9BD-A9C0AA2FAA30AA33AA34AA4DAA7BABE3ABE4ABE6ABE7ABE9ABEAABEC\",Me:\"0488048906DE20DD-20E020E2-20E4A670-A672\",N:\"0030-003900B200B300B900BC-00BE0660-066906F0-06F907C0-07C90966-096F09E6-09EF09F4-09F90A66-0A6F0AE6-0AEF0B66-0B6F0BE6-0BF20C66-0C6F0C78-0C7E0CE6-0CEF0D66-0D750E50-0E590ED0-0ED90F20-0F331040-10491090-10991369-137C16EE-16F017E0-17E917F0-17F91810-18191946-194F19D0-19DA1A80-1A891A90-1A991B50-1B591BB0-1BB91C40-1C491C50-1C5920702074-20792080-20892150-21822185-21892460-249B24EA-24FF2776-27932CFD30073021-30293038-303A3192-31953220-32293251-325F3280-328932B1-32BFA620-A629A6E6-A6EFA830-A835A8D0-A8D9A900-A909A9D0-A9D9AA50-AA59ABF0-ABF9FF10-FF19\",Nd:\"0030-00390660-066906F0-06F907C0-07C90966-096F09E6-09EF0A66-0A6F0AE6-0AEF0B66-0B6F0BE6-0BEF0C66-0C6F0CE6-0CEF0D66-0D6F0E50-0E590ED0-0ED90F20-0F291040-10491090-109917E0-17E91810-18191946-194F19D0-19DA1A80-1A891A90-1A991B50-1B591BB0-1BB91C40-1C491C50-1C59A620-A629A8D0-A8D9A900-A909A9D0-A9D9AA50-AA59ABF0-ABF9FF10-FF19\",Nl:\"16EE-16F02160-21822185-218830073021-30293038-303AA6E6-A6EF\",No:\"00B200B300B900BC-00BE09F4-09F90BF0-0BF20C78-0C7E0D70-0D750F2A-0F331369-137C17F0-17F920702074-20792080-20892150-215F21892460-249B24EA-24FF2776-27932CFD3192-31953220-32293251-325F3280-328932B1-32BFA830-A835\",P:\"0021-00230025-002A002C-002F003A003B003F0040005B-005D005F007B007D00A100AB00B700BB00BF037E0387055A-055F0589058A05BE05C005C305C605F305F40609060A060C060D061B061E061F066A-066D06D40700-070D07F7-07F90830-083E0964096509700DF40E4F0E5A0E5B0F04-0F120F3A-0F3D0F850FD0-0FD4104A-104F10FB1361-13681400166D166E169B169C16EB-16ED1735173617D4-17D617D8-17DA1800-180A1944194519DE19DF1A1E1A1F1AA0-1AA61AA8-1AAD1B5A-1B601C3B-1C3F1C7E1C7F1CD32010-20272030-20432045-20512053-205E207D207E208D208E2329232A2768-277527C527C627E6-27EF2983-299829D8-29DB29FC29FD2CF9-2CFC2CFE2CFF2E00-2E2E2E302E313001-30033008-30113014-301F3030303D30A030FBA4FEA4FFA60D-A60FA673A67EA6F2-A6F7A874-A877A8CEA8CFA8F8-A8FAA92EA92FA95FA9C1-A9CDA9DEA9DFAA5C-AA5FAADEAADFABEBFD3EFD3FFE10-FE19FE30-FE52FE54-FE61FE63FE68FE6AFE6BFF01-FF03FF05-FF0AFF0C-FF0FFF1AFF1BFF1FFF20FF3B-FF3DFF3FFF5BFF5DFF5F-FF65\",Pd:\"002D058A05BE140018062010-20152E172E1A301C303030A0FE31FE32FE58FE63FF0D\",Ps:\"0028005B007B0F3A0F3C169B201A201E2045207D208D23292768276A276C276E27702772277427C527E627E827EA27EC27EE2983298529872989298B298D298F299129932995299729D829DA29FC2E222E242E262E283008300A300C300E3010301430163018301A301DFD3EFE17FE35FE37FE39FE3BFE3DFE3FFE41FE43FE47FE59FE5BFE5DFF08FF3BFF5BFF5FFF62\",Pe:\"0029005D007D0F3B0F3D169C2046207E208E232A2769276B276D276F27712773277527C627E727E927EB27ED27EF298429862988298A298C298E2990299229942996299829D929DB29FD2E232E252E272E293009300B300D300F3011301530173019301B301E301FFD3FFE18FE36FE38FE3AFE3CFE3EFE40FE42FE44FE48FE5AFE5CFE5EFF09FF3DFF5DFF60FF63\",Pi:\"00AB2018201B201C201F20392E022E042E092E0C2E1C2E20\",Pf:\"00BB2019201D203A2E032E052E0A2E0D2E1D2E21\",Pc:\"005F203F20402054FE33FE34FE4D-FE4FFF3F\",Po:\"0021-00230025-0027002A002C002E002F003A003B003F0040005C00A100B700BF037E0387055A-055F058905C005C305C605F305F40609060A060C060D061B061E061F066A-066D06D40700-070D07F7-07F90830-083E0964096509700DF40E4F0E5A0E5B0F04-0F120F850FD0-0FD4104A-104F10FB1361-1368166D166E16EB-16ED1735173617D4-17D617D8-17DA1800-18051807-180A1944194519DE19DF1A1E1A1F1AA0-1AA61AA8-1AAD1B5A-1B601C3B-1C3F1C7E1C7F1CD3201620172020-20272030-2038203B-203E2041-20432047-205120532055-205E2CF9-2CFC2CFE2CFF2E002E012E06-2E082E0B2E0E-2E162E182E192E1B2E1E2E1F2E2A-2E2E2E302E313001-3003303D30FBA4FEA4FFA60D-A60FA673A67EA6F2-A6F7A874-A877A8CEA8CFA8F8-A8FAA92EA92FA95FA9C1-A9CDA9DEA9DFAA5C-AA5FAADEAADFABEBFE10-FE16FE19FE30FE45FE46FE49-FE4CFE50-FE52FE54-FE57FE5F-FE61FE68FE6AFE6BFF01-FF03FF05-FF07FF0AFF0CFF0EFF0FFF1AFF1BFF1FFF20FF3CFF61FF64FF65\",S:\"0024002B003C-003E005E0060007C007E00A2-00A900AC00AE-00B100B400B600B800D700F702C2-02C502D2-02DF02E5-02EB02ED02EF-02FF03750384038503F604820606-0608060B060E060F06E906FD06FE07F609F209F309FA09FB0AF10B700BF3-0BFA0C7F0CF10CF20D790E3F0F01-0F030F13-0F170F1A-0F1F0F340F360F380FBE-0FC50FC7-0FCC0FCE0FCF0FD5-0FD8109E109F13601390-139917DB194019E0-19FF1B61-1B6A1B74-1B7C1FBD1FBF-1FC11FCD-1FCF1FDD-1FDF1FED-1FEF1FFD1FFE20442052207A-207C208A-208C20A0-20B8210021012103-21062108210921142116-2118211E-2123212521272129212E213A213B2140-2144214A-214D214F2190-2328232B-23E82400-24262440-244A249C-24E92500-26CD26CF-26E126E326E8-26FF2701-27042706-2709270C-27272729-274B274D274F-27522756-275E2761-276727942798-27AF27B1-27BE27C0-27C427C7-27CA27CC27D0-27E527F0-29822999-29D729DC-29FB29FE-2B4C2B50-2B592CE5-2CEA2E80-2E992E9B-2EF32F00-2FD52FF0-2FFB300430123013302030363037303E303F309B309C319031913196-319F31C0-31E33200-321E322A-32503260-327F328A-32B032C0-32FE3300-33FF4DC0-4DFFA490-A4C6A700-A716A720A721A789A78AA828-A82BA836-A839AA77-AA79FB29FDFCFDFDFE62FE64-FE66FE69FF04FF0BFF1C-FF1EFF3EFF40FF5CFF5EFFE0-FFE6FFE8-FFEEFFFCFFFD\",Sm:\"002B003C-003E007C007E00AC00B100D700F703F60606-060820442052207A-207C208A-208C2140-2144214B2190-2194219A219B21A021A321A621AE21CE21CF21D221D421F4-22FF2308-230B23202321237C239B-23B323DC-23E125B725C125F8-25FF266F27C0-27C427C7-27CA27CC27D0-27E527F0-27FF2900-29822999-29D729DC-29FB29FE-2AFF2B30-2B442B47-2B4CFB29FE62FE64-FE66FF0BFF1C-FF1EFF5CFF5EFFE2FFE9-FFEC\",Sc:\"002400A2-00A5060B09F209F309FB0AF10BF90E3F17DB20A0-20B8A838FDFCFE69FF04FFE0FFE1FFE5FFE6\",Sk:\"005E006000A800AF00B400B802C2-02C502D2-02DF02E5-02EB02ED02EF-02FF0375038403851FBD1FBF-1FC11FCD-1FCF1FDD-1FDF1FED-1FEF1FFD1FFE309B309CA700-A716A720A721A789A78AFF3EFF40FFE3\",So:\"00A600A700A900AE00B000B60482060E060F06E906FD06FE07F609FA0B700BF3-0BF80BFA0C7F0CF10CF20D790F01-0F030F13-0F170F1A-0F1F0F340F360F380FBE-0FC50FC7-0FCC0FCE0FCF0FD5-0FD8109E109F13601390-1399194019E0-19FF1B61-1B6A1B74-1B7C210021012103-21062108210921142116-2118211E-2123212521272129212E213A213B214A214C214D214F2195-2199219C-219F21A121A221A421A521A7-21AD21AF-21CD21D021D121D321D5-21F32300-2307230C-231F2322-2328232B-237B237D-239A23B4-23DB23E2-23E82400-24262440-244A249C-24E92500-25B625B8-25C025C2-25F72600-266E2670-26CD26CF-26E126E326E8-26FF2701-27042706-2709270C-27272729-274B274D274F-27522756-275E2761-276727942798-27AF27B1-27BE2800-28FF2B00-2B2F2B452B462B50-2B592CE5-2CEA2E80-2E992E9B-2EF32F00-2FD52FF0-2FFB300430123013302030363037303E303F319031913196-319F31C0-31E33200-321E322A-32503260-327F328A-32B032C0-32FE3300-33FF4DC0-4DFFA490-A4C6A828-A82BA836A837A839AA77-AA79FDFDFFE4FFE8FFEDFFEEFFFCFFFD\",Z:\"002000A01680180E2000-200A20282029202F205F3000\",Zs:\"002000A01680180E2000-200A202F205F3000\",Zl:\"2028\",Zp:\"2029\",C:\"0000-001F007F-009F00AD03780379037F-0383038B038D03A20526-05300557055805600588058B-059005C8-05CF05EB-05EF05F5-0605061C061D0620065F06DD070E070F074B074C07B2-07BF07FB-07FF082E082F083F-08FF093A093B094F095609570973-097809800984098D098E0991099209A909B109B3-09B509BA09BB09C509C609C909CA09CF-09D609D8-09DB09DE09E409E509FC-0A000A040A0B-0A0E0A110A120A290A310A340A370A3A0A3B0A3D0A43-0A460A490A4A0A4E-0A500A52-0A580A5D0A5F-0A650A76-0A800A840A8E0A920AA90AB10AB40ABA0ABB0AC60ACA0ACE0ACF0AD1-0ADF0AE40AE50AF00AF2-0B000B040B0D0B0E0B110B120B290B310B340B3A0B3B0B450B460B490B4A0B4E-0B550B58-0B5B0B5E0B640B650B72-0B810B840B8B-0B8D0B910B96-0B980B9B0B9D0BA0-0BA20BA5-0BA70BAB-0BAD0BBA-0BBD0BC3-0BC50BC90BCE0BCF0BD1-0BD60BD8-0BE50BFB-0C000C040C0D0C110C290C340C3A-0C3C0C450C490C4E-0C540C570C5A-0C5F0C640C650C70-0C770C800C810C840C8D0C910CA90CB40CBA0CBB0CC50CC90CCE-0CD40CD7-0CDD0CDF0CE40CE50CF00CF3-0D010D040D0D0D110D290D3A-0D3C0D450D490D4E-0D560D58-0D5F0D640D650D76-0D780D800D810D840D97-0D990DB20DBC0DBE0DBF0DC7-0DC90DCB-0DCE0DD50DD70DE0-0DF10DF5-0E000E3B-0E3E0E5C-0E800E830E850E860E890E8B0E8C0E8E-0E930E980EA00EA40EA60EA80EA90EAC0EBA0EBE0EBF0EC50EC70ECE0ECF0EDA0EDB0EDE-0EFF0F480F6D-0F700F8C-0F8F0F980FBD0FCD0FD9-0FFF10C6-10CF10FD-10FF1249124E124F12571259125E125F1289128E128F12B112B612B712BF12C112C612C712D7131113161317135B-135E137D-137F139A-139F13F5-13FF169D-169F16F1-16FF170D1715-171F1737-173F1754-175F176D17711774-177F17B417B517DE17DF17EA-17EF17FA-17FF180F181A-181F1878-187F18AB-18AF18F6-18FF191D-191F192C-192F193C-193F1941-1943196E196F1975-197F19AC-19AF19CA-19CF19DB-19DD1A1C1A1D1A5F1A7D1A7E1A8A-1A8F1A9A-1A9F1AAE-1AFF1B4C-1B4F1B7D-1B7F1BAB-1BAD1BBA-1BFF1C38-1C3A1C4A-1C4C1C80-1CCF1CF3-1CFF1DE7-1DFC1F161F171F1E1F1F1F461F471F4E1F4F1F581F5A1F5C1F5E1F7E1F7F1FB51FC51FD41FD51FDC1FF01FF11FF51FFF200B-200F202A-202E2060-206F20722073208F2095-209F20B9-20CF20F1-20FF218A-218F23E9-23FF2427-243F244B-245F26CE26E226E4-26E727002705270A270B2728274C274E2753-2755275F27602795-279727B027BF27CB27CD-27CF2B4D-2B4F2B5A-2BFF2C2F2C5F2CF2-2CF82D26-2D2F2D66-2D6E2D70-2D7F2D97-2D9F2DA72DAF2DB72DBF2DC72DCF2DD72DDF2E32-2E7F2E9A2EF4-2EFF2FD6-2FEF2FFC-2FFF3040309730983100-3104312E-3130318F31B8-31BF31E4-31EF321F32FF4DB6-4DBF9FCC-9FFFA48D-A48FA4C7-A4CFA62C-A63FA660A661A674-A67BA698-A69FA6F8-A6FFA78D-A7FAA82C-A82FA83A-A83FA878-A87FA8C5-A8CDA8DA-A8DFA8FC-A8FFA954-A95EA97D-A97FA9CEA9DA-A9DDA9E0-A9FFAA37-AA3FAA4EAA4FAA5AAA5BAA7C-AA7FAAC3-AADAAAE0-ABBFABEEABEFABFA-ABFFD7A4-D7AFD7C7-D7CAD7FC-F8FFFA2EFA2FFA6EFA6FFADA-FAFFFB07-FB12FB18-FB1CFB37FB3DFB3FFB42FB45FBB2-FBD2FD40-FD4FFD90FD91FDC8-FDEFFDFEFDFFFE1A-FE1FFE27-FE2FFE53FE67FE6C-FE6FFE75FEFD-FF00FFBF-FFC1FFC8FFC9FFD0FFD1FFD8FFD9FFDD-FFDFFFE7FFEF-FFFBFFFEFFFF\",Cc:\"0000-001F007F-009F\",Cf:\"00AD0600-060306DD070F17B417B5200B-200F202A-202E2060-2064206A-206FFEFFFFF9-FFFB\",Co:\"E000-F8FF\",Cs:\"D800-DFFF\",Cn:\"03780379037F-0383038B038D03A20526-05300557055805600588058B-059005C8-05CF05EB-05EF05F5-05FF06040605061C061D0620065F070E074B074C07B2-07BF07FB-07FF082E082F083F-08FF093A093B094F095609570973-097809800984098D098E0991099209A909B109B3-09B509BA09BB09C509C609C909CA09CF-09D609D8-09DB09DE09E409E509FC-0A000A040A0B-0A0E0A110A120A290A310A340A370A3A0A3B0A3D0A43-0A460A490A4A0A4E-0A500A52-0A580A5D0A5F-0A650A76-0A800A840A8E0A920AA90AB10AB40ABA0ABB0AC60ACA0ACE0ACF0AD1-0ADF0AE40AE50AF00AF2-0B000B040B0D0B0E0B110B120B290B310B340B3A0B3B0B450B460B490B4A0B4E-0B550B58-0B5B0B5E0B640B650B72-0B810B840B8B-0B8D0B910B96-0B980B9B0B9D0BA0-0BA20BA5-0BA70BAB-0BAD0BBA-0BBD0BC3-0BC50BC90BCE0BCF0BD1-0BD60BD8-0BE50BFB-0C000C040C0D0C110C290C340C3A-0C3C0C450C490C4E-0C540C570C5A-0C5F0C640C650C70-0C770C800C810C840C8D0C910CA90CB40CBA0CBB0CC50CC90CCE-0CD40CD7-0CDD0CDF0CE40CE50CF00CF3-0D010D040D0D0D110D290D3A-0D3C0D450D490D4E-0D560D58-0D5F0D640D650D76-0D780D800D810D840D97-0D990DB20DBC0DBE0DBF0DC7-0DC90DCB-0DCE0DD50DD70DE0-0DF10DF5-0E000E3B-0E3E0E5C-0E800E830E850E860E890E8B0E8C0E8E-0E930E980EA00EA40EA60EA80EA90EAC0EBA0EBE0EBF0EC50EC70ECE0ECF0EDA0EDB0EDE-0EFF0F480F6D-0F700F8C-0F8F0F980FBD0FCD0FD9-0FFF10C6-10CF10FD-10FF1249124E124F12571259125E125F1289128E128F12B112B612B712BF12C112C612C712D7131113161317135B-135E137D-137F139A-139F13F5-13FF169D-169F16F1-16FF170D1715-171F1737-173F1754-175F176D17711774-177F17DE17DF17EA-17EF17FA-17FF180F181A-181F1878-187F18AB-18AF18F6-18FF191D-191F192C-192F193C-193F1941-1943196E196F1975-197F19AC-19AF19CA-19CF19DB-19DD1A1C1A1D1A5F1A7D1A7E1A8A-1A8F1A9A-1A9F1AAE-1AFF1B4C-1B4F1B7D-1B7F1BAB-1BAD1BBA-1BFF1C38-1C3A1C4A-1C4C1C80-1CCF1CF3-1CFF1DE7-1DFC1F161F171F1E1F1F1F461F471F4E1F4F1F581F5A1F5C1F5E1F7E1F7F1FB51FC51FD41FD51FDC1FF01FF11FF51FFF2065-206920722073208F2095-209F20B9-20CF20F1-20FF218A-218F23E9-23FF2427-243F244B-245F26CE26E226E4-26E727002705270A270B2728274C274E2753-2755275F27602795-279727B027BF27CB27CD-27CF2B4D-2B4F2B5A-2BFF2C2F2C5F2CF2-2CF82D26-2D2F2D66-2D6E2D70-2D7F2D97-2D9F2DA72DAF2DB72DBF2DC72DCF2DD72DDF2E32-2E7F2E9A2EF4-2EFF2FD6-2FEF2FFC-2FFF3040309730983100-3104312E-3130318F31B8-31BF31E4-31EF321F32FF4DB6-4DBF9FCC-9FFFA48D-A48FA4C7-A4CFA62C-A63FA660A661A674-A67BA698-A69FA6F8-A6FFA78D-A7FAA82C-A82FA83A-A83FA878-A87FA8C5-A8CDA8DA-A8DFA8FC-A8FFA954-A95EA97D-A97FA9CEA9DA-A9DDA9E0-A9FFAA37-AA3FAA4EAA4FAA5AAA5BAA7C-AA7FAAC3-AADAAAE0-ABBFABEEABEFABFA-ABFFD7A4-D7AFD7C7-D7CAD7FC-D7FFFA2EFA2FFA6EFA6FFADA-FAFFFB07-FB12FB18-FB1CFB37FB3DFB3FFB42FB45FBB2-FBD2FD40-FD4FFD90FD91FDC8-FDEFFDFEFDFFFE1A-FE1FFE27-FE2FFE53FE67FE6C-FE6FFE75FEFDFEFEFF00FFBF-FFC1FFC8FFC9FFD0FFD1FFD8FFD9FFDD-FFDFFFE7FFEF-FFF8FFFEFFFF\"})}),ace.define(\"ace/document\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/event_emitter\",\"ace/range\",\"ace/anchor\"],function(e,t,n){var r=e(\"./lib/oop\"),i=e(\"./lib/event_emitter\").EventEmitter,s=e(\"./range\").Range,o=e(\"./anchor\").Anchor,u=function(e){this.$lines=[],e.length==0?this.$lines=[\"\"]:Array.isArray(e)?this.insertLines(0,e):this.insert({row:0,column:0},e)};(function(){r.implement(this,i),this.setValue=function(e){var t=this.getLength();this.remove(new s(0,0,t,this.getLine(t-1).length)),this.insert({row:0,column:0},e)},this.getValue=function(){return this.getAllLines().join(this.getNewLineCharacter())},this.createAnchor=function(e,t){return new o(this,e,t)},\"aaa\".split(/a/).length==0?this.$split=function(e){return e.replace(/\\r\\n|\\r/g,\"\\n\").split(\"\\n\")}:this.$split=function(e){return e.split(/\\r\\n|\\r|\\n/)},this.$detectNewLine=function(e){var t=e.match(/^.*?(\\r\\n|\\r|\\n)/m);t?this.$autoNewLine=t[1]:this.$autoNewLine=\"\\n\"},this.getNewLineCharacter=function(){switch(this.$newLineMode){case\"windows\":return\"\\r\\n\";case\"unix\":return\"\\n\";default:return this.$autoNewLine}},this.$autoNewLine=\"\\n\",this.$newLineMode=\"auto\",this.setNewLineMode=function(e){if(this.$newLineMode===e)return;this.$newLineMode=e},this.getNewLineMode=function(){return this.$newLineMode},this.isNewLine=function(e){return e==\"\\r\\n\"||e==\"\\r\"||e==\"\\n\"},this.getLine=function(e){return this.$lines[e]||\"\"},this.getLines=function(e,t){return this.$lines.slice(e,t+1)},this.getAllLines=function(){return this.getLines(0,this.getLength())},this.getLength=function(){return this.$lines.length},this.getTextRange=function(e){if(e.start.row==e.end.row)return this.$lines[e.start.row].substring(e.start.column,e.end.column);var t=this.getLines(e.start.row+1,e.end.row-1);return t.unshift((this.$lines[e.start.row]||\"\").substring(e.start.column)),t.push((this.$lines[e.end.row]||\"\").substring(0,e.end.column)),t.join(this.getNewLineCharacter())},this.$clipPosition=function(e){var t=this.getLength();return e.row>=t&&(e.row=Math.max(0,t-1),e.column=this.getLine(t-1).length),e},this.insert=function(e,t){if(!t||t.length===0)return e;e=this.$clipPosition(e),this.getLength()<=1&&this.$detectNewLine(t);var n=this.$split(t),r=n.splice(0,1)[0],i=n.length==0?null:n.splice(n.length-1,1)[0];return e=this.insertInLine(e,r),i!==null&&(e=this.insertNewLine(e),e=this.insertLines(e.row,n),e=this.insertInLine(e,i||\"\")),e},this.insertLines=function(e,t){if(t.length==0)return{row:e,column:0};if(t.length>65535){var n=this.insertLines(e,t.slice(65535));t=t.slice(0,65535)}var r=[e,0];r.push.apply(r,t),this.$lines.splice.apply(this.$lines,r);var i=new s(e,0,e+t.length,0),o={action:\"insertLines\",range:i,lines:t};return this._emit(\"change\",{data:o}),n||i.end},this.insertNewLine=function(e){e=this.$clipPosition(e);var t=this.$lines[e.row]||\"\";this.$lines[e.row]=t.substring(0,e.column),this.$lines.splice(e.row+1,0,t.substring(e.column,t.length));var n={row:e.row+1,column:0},r={action:\"insertText\",range:s.fromPoints(e,n),text:this.getNewLineCharacter()};return this._emit(\"change\",{data:r}),n},this.insertInLine=function(e,t){if(t.length==0)return e;var n=this.$lines[e.row]||\"\";this.$lines[e.row]=n.substring(0,e.column)+t+n.substring(e.column);var r={row:e.row,column:e.column+t.length},i={action:\"insertText\",range:s.fromPoints(e,r),text:t};return this._emit(\"change\",{data:i}),r},this.remove=function(e){e.start=this.$clipPosition(e.start),e.end=this.$clipPosition(e.end);if(e.isEmpty())return e.start;var t=e.start.row,n=e.end.row;if(e.isMultiLine()){var r=e.start.column==0?t:t+1,i=n-1;e.end.column>0&&this.removeInLine(n,0,e.end.column),i>=r&&this.removeLines(r,i),r!=t&&(this.removeInLine(t,e.start.column,this.getLine(t).length),this.removeNewLine(e.start.row))}else this.removeInLine(t,e.start.column,e.end.column);return e.start},this.removeInLine=function(e,t,n){if(t==n)return;var r=new s(e,t,e,n),i=this.getLine(e),o=i.substring(t,n),u=i.substring(0,t)+i.substring(n,i.length);this.$lines.splice(e,1,u);var a={action:\"removeText\",range:r,text:o};return this._emit(\"change\",{data:a}),r.start},this.removeLines=function(e,t){var n=new s(e,0,t+1,0),r=this.$lines.splice(e,t-e+1),i={action:\"removeLines\",range:n,nl:this.getNewLineCharacter(),lines:r};return this._emit(\"change\",{data:i}),r},this.removeNewLine=function(e){var t=this.getLine(e),n=this.getLine(e+1),r=new s(e,t.length,e+1,0),i=t+n;this.$lines.splice(e,2,i);var o={action:\"removeText\",range:r,text:this.getNewLineCharacter()};this._emit(\"change\",{data:o})},this.replace=function(e,t){if(t.length==0&&e.isEmpty())return e.start;if(t==this.getTextRange(e))return e.end;this.remove(e);if(t)var n=this.insert(e.start,t);else n=e.start;return n},this.applyDeltas=function(e){for(var t=0;t<e.length;t++){var n=e[t],r=s.fromPoints(n.range.start,n.range.end);n.action==\"insertLines\"?this.insertLines(r.start.row,n.lines):n.action==\"insertText\"?this.insert(r.start,n.text):n.action==\"removeLines\"?this.removeLines(r.start.row,r.end.row-1):n.action==\"removeText\"&&this.remove(r)}},this.revertDeltas=function(e){for(var t=e.length-1;t>=0;t--){var n=e[t],r=s.fromPoints(n.range.start,n.range.end);n.action==\"insertLines\"?this.removeLines(r.start.row,r.end.row-1):n.action==\"insertText\"?this.remove(r):n.action==\"removeLines\"?this.insertLines(r.start.row,n.lines):n.action==\"removeText\"&&this.insert(r.start,n.text)}},this.indexToPosition=function(e,t){var n=this.$lines||this.getAllLines(),r=this.getNewLineCharacter().length;for(var i=t||0,s=n.length;i<s;i++){e-=n[i].length+r;if(e<0)return{row:i,column:e+n[i].length+r}}return{row:s-1,column:n[s-1].length}},this.positionToIndex=function(e,t){var n=this.$lines||this.getAllLines(),r=this.getNewLineCharacter().length,i=0,s=Math.min(e.row,n.length);for(var o=t||0;o<s;++o)i+=n[o].length;return i+r*o+e.column}}).call(u.prototype),t.Document=u}),ace.define(\"ace/anchor\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/event_emitter\"],function(e,t,n){var r=e(\"./lib/oop\"),i=e(\"./lib/event_emitter\").EventEmitter,s=t.Anchor=function(e,t,n){this.document=e,typeof n==\"undefined\"?this.setPosition(t.row,t.column):this.setPosition(t,n),this.$onChange=this.onChange.bind(this),e.on(\"change\",this.$onChange)};(function(){r.implement(this,i),this.getPosition=function(){return this.$clipPositionToDocument(this.row,this.column)},this.getDocument=function(){return this.document},this.onChange=function(e){var t=e.data,n=t.range;if(n.start.row==n.end.row&&n.start.row!=this.row)return;if(n.start.row>this.row)return;if(n.start.row==this.row&&n.start.column>this.column)return;var r=this.row,i=this.column;t.action===\"insertText\"?n.start.row===r&&n.start.column<=i?n.start.row===n.end.row?i+=n.end.column-n.start.column:(i-=n.start.column,r+=n.end.row-n.start.row):n.start.row!==n.end.row&&n.start.row<r&&(r+=n.end.row-n.start.row):t.action===\"insertLines\"?n.start.row<=r&&(r+=n.end.row-n.start.row):t.action==\"removeText\"?n.start.row==r&&n.start.column<i?n.end.column>=i?i=n.start.column:i=Math.max(0,i-(n.end.column-n.start.column)):n.start.row!==n.end.row&&n.start.row<r?(n.end.row==r&&(i=Math.max(0,i-n.end.column)+n.start.column),r-=n.end.row-n.start.row):n.end.row==r&&(r-=n.end.row-n.start.row,i=Math.max(0,i-n.end.column)+n.start.column):t.action==\"removeLines\"&&n.start.row<=r&&(n.end.row<=r?r-=n.end.row-n.start.row:(r=n.start.row,i=0)),this.setPosition(r,i,!0)},this.setPosition=function(e,t,n){var r;n?r={row:e,column:t}:r=this.$clipPositionToDocument(e,t);if(this.row==r.row&&this.column==r.column)return;var i={row:this.row,column:this.column};this.row=r.row,this.column=r.column,this._emit(\"change\",{old:i,value:r})},this.detach=function(){this.document.removeEventListener(\"change\",this.$onChange)},this.$clipPositionToDocument=function(e,t){var n={};return e>=this.document.getLength()?(n.row=Math.max(0,this.document.getLength()-1),n.column=this.document.getLine(n.row).length):e<0?(n.row=0,n.column=0):(n.row=e,n.column=Math.min(this.document.getLine(n.row).length,Math.max(0,t))),t<0&&(n.column=0),n}}).call(s.prototype)}),ace.define(\"ace/background_tokenizer\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/event_emitter\"],function(e,t,n){var r=e(\"./lib/oop\"),i=e(\"./lib/event_emitter\").EventEmitter,s=5e3,o=function(e,t){this.running=!1,this.lines=[],this.states=[],this.currentLine=0,this.tokenizer=e;var n=this;this.$worker=function(){if(!n.running)return;var e=new Date,t=n.currentLine,r=n.doc,i=0,s=r.getLength();while(n.currentLine<s){n.$tokenizeRow(n.currentLine);while(n.lines[n.currentLine])n.currentLine++;i++;if(i%5==0&&new Date-e>20){n.fireUpdateEvent(t,n.currentLine-1),n.running=setTimeout(n.$worker,20);return}}n.running=!1,n.fireUpdateEvent(t,s-1)}};(function(){r.implement(this,i),this.setTokenizer=function(e){this.tokenizer=e,this.lines=[],this.states=[],this.start(0)},this.setDocument=function(e){this.doc=e,this.lines=[],this.states=[],this.stop()},this.fireUpdateEvent=function(e,t){var n={first:e,last:t};this._emit(\"update\",{data:n})},this.start=function(e){this.currentLine=Math.min(e||0,this.currentLine,this.doc.getLength()),this.lines.splice(this.currentLine,this.lines.length),this.states.splice(this.currentLine,this.states.length),this.stop(),this.running=setTimeout(this.$worker,700)},this.$updateOnChange=function(e){var t=e.range,n=t.start.row,r=t.end.row-n;if(r===0)this.lines[n]=null;else if(e.action==\"removeText\"||e.action==\"removeLines\")this.lines.splice(n,r+1,null),this.states.splice(n,r+1,null);else{var i=Array(r+1);i.unshift(n,1),this.lines.splice.apply(this.lines,i),this.states.splice.apply(this.states,i)}this.currentLine=Math.min(n,this.currentLine,this.doc.getLength()),this.stop(),this.running=setTimeout(this.$worker,700)},this.stop=function(){this.running&&clearTimeout(this.running),this.running=!1},this.getTokens=function(e){return this.lines[e]||this.$tokenizeRow(e)},this.getState=function(e){return this.currentLine==e&&this.$tokenizeRow(e),this.states[e]||\"start\"},this.$tokenizeRow=function(e){var t=this.doc.getLine(e),n=this.states[e-1];if(t.length>s){var r={value:t.substr(s),type:\"text\"};t=t.slice(0,s)}var i=this.tokenizer.getLineTokens(t,n);return r&&(i.tokens.push(r),i.state=\"start\"),this.states[e]+\"\"!=i.state+\"\"?(this.states[e]=i.state,this.lines[e+1]=null,this.currentLine>e+1&&(this.currentLine=e+1)):this.currentLine==e&&(this.currentLine=e+1),this.lines[e]=i.tokens}}).call(o.prototype),t.BackgroundTokenizer=o}),ace.define(\"ace/search_highlight\",[\"require\",\"exports\",\"module\",\"ace/lib/lang\",\"ace/lib/oop\",\"ace/range\"],function(e,t,n){var r=e(\"./lib/lang\"),i=e(\"./lib/oop\"),s=e(\"./range\").Range,o=function(e,t,n){this.setRegexp(e),this.clazz=t,this.type=n||\"text\"};(function(){this.MAX_RANGES=500,this.setRegexp=function(e){if(this.regExp+\"\"==e+\"\")return;this.regExp=e,this.cache=[]},this.update=function(e,t,n,i){if(!this.regExp)return;var o=i.firstRow,u=i.lastRow;for(var a=o;a<=u;a++){var f=this.cache[a];f==null&&(f=r.getMatchOffsets(n.getLine(a),this.regExp),f.length>this.MAX_RANGES&&(f=f.slice(0,this.MAX_RANGES)),f=f.map(function(e){return new s(a,e.offset,a,e.offset+e.length)}),this.cache[a]=f.length?f:\"\");for(var l=f.length;l--;)t.drawSingleLineMarker(e,f[l].toScreenRange(n),this.clazz,i,null,this.type)}}}).call(o.prototype),t.SearchHighlight=o}),ace.define(\"ace/edit_session/folding\",[\"require\",\"exports\",\"module\",\"ace/range\",\"ace/edit_session/fold_line\",\"ace/edit_session/fold\",\"ace/token_iterator\"],function(e,t,n){function u(){this.getFoldAt=function(e,t,n){var r=this.getFoldLine(e);if(!r)return null;var i=r.folds;for(var s=0;s<i.length;s++){var o=i[s];if(o.range.contains(e,t)){if(n==1&&o.range.isEnd(e,t))continue;if(n==-1&&o.range.isStart(e,t))continue;return o}}},this.getFoldsInRange=function(e){e=e.clone();var t=e.start,n=e.end,r=this.$foldData,i=[];t.column+=1,n.column-=1;for(var s=0;s<r.length;s++){var o=r[s].range.compareRange(e);if(o==2)continue;if(o==-2)break;var u=r[s].folds;for(var a=0;a<u.length;a++){var f=u[a];o=f.range.compareRange(e);if(o==-2)break;if(o==2)continue;if(o==42)break;i.push(f)}}return i},this.getAllFolds=function(){function n(t){e.push(t);if(!t.subFolds)return;for(var r=0;r<t.subFolds.length;r++)n(t.subFolds[r])}var e=[],t=this.$foldData;for(var r=0;r<t.length;r++)for(var i=0;i<t[r].folds.length;i++)n(t[r].folds[i]);return e},this.getFoldStringAt=function(e,t,n,r){r=r||this.getFoldLine(e);if(!r)return null;var i={end:{column:0}},s,o;for(var u=0;u<r.folds.length;u++){o=r.folds[u];var a=o.range.compareEnd(e,t);if(a==-1){s=this.getLine(o.start.row).substring(i.end.column,o.start.column);break}if(a===0)return null;i=o}return s||(s=this.getLine(o.start.row).substring(i.end.column)),n==-1?s.substring(0,t-i.end.column):n==1?s.substring(t-i.end.column):s},this.getFoldLine=function(e,t){var n=this.$foldData,r=0;t&&(r=n.indexOf(t)),r==-1&&(r=0);for(r;r<n.length;r++){var i=n[r];if(i.start.row<=e&&i.end.row>=e)return i;if(i.end.row>e)return null}return null},this.getNextFoldLine=function(e,t){var n=this.$foldData,r=0;t&&(r=n.indexOf(t)),r==-1&&(r=0);for(r;r<n.length;r++){var i=n[r];if(i.end.row>=e)return i}return null},this.getFoldedRowCount=function(e,t){var n=this.$foldData,r=t-e+1;for(var i=0;i<n.length;i++){var s=n[i],o=s.end.row,u=s.start.row;if(o>=t){u<t&&(u>=e?r-=t-u:r=0);break}o>=e&&(u>=e?r-=o-u:r-=o-e+1)}return r},this.$addFoldLine=function(e){return this.$foldData.push(e),this.$foldData.sort(function(e,t){return e.start.row-t.start.row}),e},this.addFold=function(e,t){var n=this.$foldData,r=!1,o;e instanceof s?o=e:o=new s(t,e),this.$clipRangeToDocument(o.range);var u=o.start.row,a=o.start.column,f=o.end.row,l=o.end.column;if(u==f&&l-a<2)throw\"The range has to be at least 2 characters width\";var c=this.getFoldAt(u,a,1),h=this.getFoldAt(f,l,-1);if(c&&h==c)return c.addSubFold(o);if(c&&!c.range.isStart(u,a)||h&&!h.range.isEnd(f,l))throw\"A fold can't intersect already existing fold\"+o.range+c.range;var p=this.getFoldsInRange(o.range);p.length>0&&(this.removeFolds(p),o.subFolds=p);for(var d=0;d<n.length;d++){var v=n[d];if(f==v.start.row){v.addFold(o),r=!0;break}if(u==v.end.row){v.addFold(o),r=!0;if(!o.sameRow){var m=n[d+1];if(m&&m.start.row==f){v.merge(m);break}}break}if(f<=v.start.row)break}return r||(v=this.$addFoldLine(new i(this.$foldData,o))),this.$useWrapMode?this.$updateWrapData(v.start.row,v.start.row):this.$updateRowLengthCache(v.start.row,v.start.row),this.$modified=!0,this._emit(\"changeFold\",{data:o}),o},this.addFolds=function(e){e.forEach(function(e){this.addFold(e)},this)},this.removeFold=function(e){var t=e.foldLine,n=t.start.row,r=t.end.row,i=this.$foldData,s=t.folds;if(s.length==1)i.splice(i.indexOf(t),1);else if(t.range.isEnd(e.end.row,e.end.column))s.pop(),t.end.row=s[s.length-1].end.row,t.end.column=s[s.length-1].end.column;else if(t.range.isStart(e.start.row,e.start.column))s.shift(),t.start.row=s[0].start.row,t.start.column=s[0].start.column;else if(e.sameRow)s.splice(s.indexOf(e),1);else{var o=t.split(e.start.row,e.start.column);s=o.folds,s.shift(),o.start.row=s[0].start.row,o.start.column=s[0].start.column}this.$useWrapMode?this.$updateWrapData(n,r):this.$updateRowLengthCache(n,r),this.$modified=!0,this._emit(\"changeFold\",{data:e})},this.removeFolds=function(e){var t=[];for(var n=0;n<e.length;n++)t.push(e[n]);t.forEach(function(e){this.removeFold(e)},this),this.$modified=!0},this.expandFold=function(e){this.removeFold(e),e.subFolds.forEach(function(e){this.addFold(e)},this),e.subFolds=[]},this.expandFolds=function(e){e.forEach(function(e){this.expandFold(e)},this)},this.unfold=function(e,t){var n,i;e==null?n=new r(0,0,this.getLength(),0):typeof e==\"number\"?n=new r(e,0,e,this.getLine(e).length):\"row\"in e?n=r.fromPoints(e,e):n=e,i=this.getFoldsInRange(n);if(t)this.removeFolds(i);else while(i.length)this.expandFolds(i),i=this.getFoldsInRange(n)},this.isRowFolded=function(e,t){return!!this.getFoldLine(e,t)},this.getRowFoldEnd=function(e,t){var n=this.getFoldLine(e,t);return n?n.end.row:e},this.getFoldDisplayLine=function(e,t,n,r,i){r==null&&(r=e.start.row,i=0),t==null&&(t=e.end.row,n=this.getLine(t).length);var s=this.doc,o=\"\";return e.walk(function(e,t,n,u){if(t<r)return;if(t==r){if(n<i)return;u=Math.max(i,u)}e!=null?o+=e:o+=s.getLine(t).substring(u,n)}.bind(this),t,n),o},this.getDisplayLine=function(e,t,n,r){var i=this.getFoldLine(e);if(!i){var s;return s=this.doc.getLine(e),s.substring(r||0,t||s.length)}return this.getFoldDisplayLine(i,e,t,n,r)},this.$cloneFoldData=function(){var e=[];return e=this.$foldData.map(function(t){var n=t.folds.map(function(e){return e.clone()});return new i(e,n)}),e},this.toggleFold=function(e){var t=this.selection,n=t.getRange(),r,i;if(n.isEmpty()){var s=n.start;r=this.getFoldAt(s.row,s.column);if(r){this.expandFold(r);return}(i=this.findMatchingBracket(s))?n.comparePoint(i)==1?n.end=i:(n.start=i,n.start.column++,n.end.column--):(i=this.findMatchingBracket({row:s.row,column:s.column+1}))?(n.comparePoint(i)==1?n.end=i:n.start=i,n.start.column++):n=this.getCommentFoldRange(s.row,s.column)||n}else{var o=this.getFoldsInRange(n);if(e&&o.length){this.expandFolds(o);return}o.length==1&&(r=o[0])}r||(r=this.getFoldAt(n.start.row,n.start.column));if(r&&r.range.toString()==n.toString()){this.expandFold(r);return}var u=\"...\";if(!n.isMultiLine()){u=this.getTextRange(n);if(u.length<4)return;u=u.trim().substring(0,2)+\"..\"}this.addFold(u,n)},this.getCommentFoldRange=function(e,t,n){var i=new o(this,e,t),s=i.getCurrentToken();if(s&&/^comment|string/.test(s.type)){var u=new r,a=new RegExp(s.type.replace(/\\..*/,\"\\\\.\"));if(n!=1){do s=i.stepBackward();while(s&&a.test(s.type));i.stepForward()}u.start.row=i.getCurrentTokenRow(),u.start.column=i.getCurrentTokenColumn()+2,i=new o(this,e,t);if(n!=-1){do s=i.stepForward();while(s&&a.test(s.type));s=i.stepBackward()}else s=i.getCurrentToken();return u.end.row=i.getCurrentTokenRow(),u.end.column=i.getCurrentTokenColumn()+s.value.length-2,u}},this.foldAll=function(e,t){var n=this.foldWidgets;t=t||this.getLength();for(var r=e||0;r<t;r++){n[r]==null&&(n[r]=this.getFoldWidget(r));if(n[r]!=\"start\")continue;var i=this.getFoldWidgetRange(r);if(i&&i.end.row<=t)try{this.addFold(\"...\",i)}catch(s){}}},this.$foldStyles={manual:1,markbegin:1,markbeginend:1},this.$foldStyle=\"markbegin\",this.setFoldStyle=function(e){if(!this.$foldStyles[e])throw new Error(\"invalid fold style: \"+e+\"[\"+Object.keys(this.$foldStyles).join(\", \")+\"]\");if(this.$foldStyle==e)return;this.$foldStyle=e,e==\"manual\"&&this.unfold();var t=this.$foldMode;this.$setFolding(null),this.$setFolding(t)},this.$setFolding=function(e){if(this.$foldMode==e)return;this.$foldMode=e,this.removeListener(\"change\",this.$updateFoldWidgets),this._emit(\"changeAnnotation\");if(!e||this.$foldStyle==\"manual\"){this.foldWidgets=null;return}this.foldWidgets=[],this.getFoldWidget=e.getFoldWidget.bind(e,this,this.$foldStyle),this.getFoldWidgetRange=e.getFoldWidgetRange.bind(e,this,this.$foldStyle),this.$updateFoldWidgets=this.updateFoldWidgets.bind(this),this.on(\"change\",this.$updateFoldWidgets)},this.onFoldWidgetClick=function(e,t){t=t.domEvent;var n=this.getFoldWidget(e),r=this.getLine(e),i=t.shiftKey,s=i||t.ctrlKey||t.altKey||t.metaKey,o;n==\"end\"?o=this.getFoldAt(e,0,-1):o=this.getFoldAt(e,r.length,1);if(o){s?this.removeFold(o):this.expandFold(o);return}var u=this.getFoldWidgetRange(e);if(u){if(!u.isMultiLine()){o=this.getFoldAt(u.start.row,u.start.column,1);if(o&&u.isEqual(o.range)){this.removeFold(o);return}}i||this.addFold(\"...\",u),s&&this.foldAll(u.start.row+1,u.end.row)}else s&&this.foldAll(e+1,this.getLength()),(t.target||t.srcElement).className+=\" ace_invalid\"},this.updateFoldWidgets=function(e){var t=e.data,n=t.range,r=n.start.row,i=n.end.row-r;if(i===0)this.foldWidgets[r]=null;else if(t.action==\"removeText\"||t.action==\"removeLines\")this.foldWidgets.splice(r,i+1,null);else{var s=Array(i+1);s.unshift(r,1),this.foldWidgets.splice.apply(this.foldWidgets,s)}}}var r=e(\"../range\").Range,i=e(\"./fold_line\").FoldLine,s=e(\"./fold\").Fold,o=e(\"../token_iterator\").TokenIterator;t.Folding=u}),ace.define(\"ace/edit_session/fold_line\",[\"require\",\"exports\",\"module\",\"ace/range\"],function(e,t,n){function i(e,t){this.foldData=e,Array.isArray(t)?this.folds=t:t=this.folds=[t];var n=t[t.length-1];this.range=new r(t[0].start.row,t[0].start.column,n.end.row,n.end.column),this.start=this.range.start,this.end=this.range.end,this.folds.forEach(function(e){e.setFoldLine(this)},this)}var r=e(\"../range\").Range;(function(){this.shiftRow=function(e){this.start.row+=e,this.end.row+=e,this.folds.forEach(function(t){t.start.row+=e,t.end.row+=e})},this.addFold=function(e){if(e.sameRow){if(e.start.row<this.startRow||e.endRow>this.endRow)throw\"Can't add a fold to this FoldLine as it has no connection\";this.folds.push(e),this.folds.sort(function(e,t){return-e.range.compareEnd(t.start.row,t.start.column)}),this.range.compareEnd(e.start.row,e.start.column)>0?(this.end.row=e.end.row,this.end.column=e.end.column):this.range.compareStart(e.end.row,e.end.column)<0&&(this.start.row=e.start.row,this.start.column=e.start.column)}else if(e.start.row==this.end.row)this.folds.push(e),this.end.row=e.end.row,this.end.column=e.end.column;else{if(e.end.row!=this.start.row)throw\"Trying to add fold to FoldRow that doesn't have a matching row\";this.folds.unshift(e),this.start.row=e.start.row,this.start.column=e.start.column}e.foldLine=this},this.containsRow=function(e){return e>=this.start.row&&e<=this.end.row},this.walk=function(e,t,n){var r=0,i=this.folds,s,o,u,a=!0;t==null&&(t=this.end.row,n=this.end.column);for(var f=0;f<i.length;f++){s=i[f],o=s.range.compareStart(t,n);if(o==-1){e(null,t,n,r,a);return}u=e(null,s.start.row,s.start.column,r,a),u=!u&&e(s.placeholder,s.start.row,s.start.column,r);if(u||o==0)return;a=!s.sameRow,r=s.end.column}e(null,t,n,r,a)},this.getNextFoldTo=function(e,t){var n,r;for(var i=0;i<this.folds.length;i++){n=this.folds[i],r=n.range.compareEnd(e,t);if(r==-1)return{fold:n,kind:\"after\"};if(r==0)return{fold:n,kind:\"inside\"}}return null},this.addRemoveChars=function(e,t,n){var r=this.getNextFoldTo(e,t),i,s;if(r){i=r.fold;if(r.kind==\"inside\"&&i.start.column!=t&&i.start.row!=e)window.console&&window.console.log(e,t,i);else if(i.start.row==e){s=this.folds;var o=s.indexOf(i);o==0&&(this.start.column+=n);for(o;o<s.length;o++){i=s[o],i.start.column+=n;if(!i.sameRow)return;i.end.column+=n}this.end.column+=n}}},this.split=function(e,t){var n=this.getNextFoldTo(e,t).fold,r=this.folds,s=this.foldData;if(!n)return null;var o=r.indexOf(n),u=r[o-1];this.end.row=u.end.row,this.end.column=u.end.column,r=r.splice(o,r.length-o);var a=new i(s,r);return s.splice(s.indexOf(this)+1,0,a),a},this.merge=function(e){var t=e.folds;for(var n=0;n<t.length;n++)this.addFold(t[n]);var r=this.foldData;r.splice(r.indexOf(e),1)},this.toString=function(){var e=[this.range.toString()+\": [\"];return this.folds.forEach(function(t){e.push(\"  \"+t.toString())}),e.push(\"]\"),e.join(\"\\n\")},this.idxToPosition=function(e){var t=0,n;for(var r=0;r<this.folds.length;r++){var n=this.folds[r];e-=n.start.column-t;if(e<0)return{row:n.start.row,column:n.start.column+e};e-=n.placeholder.length;if(e<0)return n.start;t=n.end.column}return{row:this.end.row,column:this.end.column+e}}}).call(i.prototype),t.FoldLine=i}),ace.define(\"ace/edit_session/fold\",[\"require\",\"exports\",\"module\"],function(e,t,n){var r=t.Fold=function(e,t){this.foldLine=null,this.placeholder=t,this.range=e,this.start=e.start,this.end=e.end,this.sameRow=e.start.row==e.end.row,this.subFolds=[]};(function(){this.toString=function(){return'\"'+this.placeholder+'\" '+this.range.toString()},this.setFoldLine=function(e){this.foldLine=e,this.subFolds.forEach(function(t){t.setFoldLine(e)})},this.clone=function(){var e=this.range.clone(),t=new r(e,this.placeholder);return this.subFolds.forEach(function(e){t.subFolds.push(e.clone())}),t},this.addSubFold=function(e){if(this.range.isEqual(e))return this;if(!this.range.containsRange(e))throw\"A fold can't intersect already existing fold\"+e.range+this.range;var t=e.range.start.row,n=e.range.start.column;for(var r=0,i=-1;r<this.subFolds.length;r++){i=this.subFolds[r].range.compare(t,n);if(i!=1)break}var s=this.subFolds[r];if(i==0)return s.addSubFold(e);var t=e.range.end.row,n=e.range.end.column;for(var o=r,i=-1;o<this.subFolds.length;o++){i=this.subFolds[o].range.compare(t,n);if(i!=1)break}var u=this.subFolds[o];if(i==0)throw\"A fold can't intersect already existing fold\"+e.range+this.range;var a=this.subFolds.splice(r,o-r,e);return e.setFoldLine(this.foldLine),e}}).call(r.prototype)}),ace.define(\"ace/token_iterator\",[\"require\",\"exports\",\"module\"],function(e,t,n){var r=function(e,t,n){this.$session=e,this.$row=t,this.$rowTokens=e.getTokens(t);var r=e.getTokenAt(t,n);this.$tokenIndex=r?r.index:-1};(function(){this.stepBackward=function(){this.$tokenIndex-=1;while(this.$tokenIndex<0){this.$row-=1;if(this.$row<0)return this.$row=0,null;this.$rowTokens=this.$session.getTokens(this.$row),this.$tokenIndex=this.$rowTokens.length-1}return this.$rowTokens[this.$tokenIndex]},this.stepForward=function(){var e=this.$session.getLength();this.$tokenIndex+=1;while(this.$tokenIndex>=this.$rowTokens.length){this.$row+=1;if(this.$row>=e)return this.$row=e-1,null;this.$rowTokens=this.$session.getTokens(this.$row),this.$tokenIndex=0}return this.$rowTokens[this.$tokenIndex]},this.getCurrentToken=function(){return this.$rowTokens[this.$tokenIndex]},this.getCurrentTokenRow=function(){return this.$row},this.getCurrentTokenColumn=function(){var e=this.$rowTokens,t=this.$tokenIndex,n=e[t].start;if(n!==undefined)return n;n=0;while(t>0)t-=1,n+=e[t].value.length;return n}}).call(r.prototype),t.TokenIterator=r}),ace.define(\"ace/edit_session/bracket_match\",[\"require\",\"exports\",\"module\",\"ace/token_iterator\",\"ace/range\"],function(e,t,n){function s(){this.findMatchingBracket=function(e,t){if(e.column==0)return null;var n=t||this.getLine(e.row).charAt(e.column-1);if(n==\"\")return null;var r=n.match(/([\\(\\[\\{])|([\\)\\]\\}])/);return r?r[1]?this.$findClosingBracket(r[1],e):this.$findOpeningBracket(r[2],e):null},this.getBracketRange=function(e){var t=this.getLine(e.row),n=!0,r,s=t.charAt(e.column-1),o=s&&s.match(/([\\(\\[\\{])|([\\)\\]\\}])/);o||(s=t.charAt(e.column),e={row:e.row,column:e.column+1},o=s&&s.match(/([\\(\\[\\{])|([\\)\\]\\}])/),n=!1);if(!o)return null;if(o[1]){var u=this.$findClosingBracket(o[1],e);if(!u)return null;r=i.fromPoints(e,u),n||(r.end.column++,r.start.column--),r.cursor=r.end}else{var u=this.$findOpeningBracket(o[2],e);if(!u)return null;r=i.fromPoints(u,e),n||(r.start.column++,r.end.column--),r.cursor=r.start}return r},this.$brackets={\")\":\"(\",\"(\":\")\",\"]\":\"[\",\"[\":\"]\",\"{\":\"}\",\"}\":\"{\"},this.$findOpeningBracket=function(e,t,n){var i=this.$brackets[e],s=1,o=new r(this,t.row,t.column),u=o.getCurrentToken();u||(u=o.stepForward());if(!u)return;n||(n=new RegExp(\"(\\\\.?\"+u.type.replace(\".\",\"\\\\.\").replace(\"rparen\",\".paren\")+\")+\"));var a=t.column-o.getCurrentTokenColumn()-2,f=u.value;for(;;){while(a>=0){var l=f.charAt(a);if(l==i){s-=1;if(s==0)return{row:o.getCurrentTokenRow(),column:a+o.getCurrentTokenColumn()}}else l==e&&(s+=1);a-=1}do u=o.stepBackward();while(u&&!n.test(u.type));if(u==null)break;f=u.value,a=f.length-1}return null},this.$findClosingBracket=function(e,t,n){var i=this.$brackets[e],s=1,o=new r(this,t.row,t.column),u=o.getCurrentToken();u||(u=o.stepForward());if(!u)return;n||(n=new RegExp(\"(\\\\.?\"+u.type.replace(\".\",\"\\\\.\").replace(\"lparen\",\".paren\")+\")+\"));var a=t.column-o.getCurrentTokenColumn();for(;;){var f=u.value,l=f.length;while(a<l){var c=f.charAt(a);if(c==i){s-=1;if(s==0)return{row:o.getCurrentTokenRow(),column:a+o.getCurrentTokenColumn()}}else c==e&&(s+=1);a+=1}do u=o.stepForward();while(u&&!n.test(u.type));if(u==null)break;a=0}return null}}var r=e(\"../token_iterator\").TokenIterator,i=e(\"../range\").Range;t.BracketMatch=s}),ace.define(\"ace/search\",[\"require\",\"exports\",\"module\",\"ace/lib/lang\",\"ace/lib/oop\",\"ace/range\"],function(e,t,n){var r=e(\"./lib/lang\"),i=e(\"./lib/oop\"),s=e(\"./range\").Range,o=function(){this.$options={}};(function(){this.set=function(e){return i.mixin(this.$options,e),this},this.getOptions=function(){return r.copyObject(this.$options)},this.setOptions=function(e){this.$options=e},this.find=function(e){var t=this.$matchIterator(e,this.$options);if(!t)return!1;var n=null;return t.forEach(function(e,t,r){if(!e.start){var i=e.offset+(r||0);n=new s(t,i,t,i+e.length)}else n=e;return!0}),n},this.findAll=function(e){var t=this.$options;if(!t.needle)return[];this.$assembleRegExp(t);var n=t.range,i=n?e.getLines(n.start.row,n.end.row):e.doc.getAllLines(),o=[],u=t.re;if(t.$isMultiLine){var a=u.length,f=i.length-a;for(var l=u.offset||0;l<=f;l++){for(var c=0;c<a;c++)if(i[l+c].search(u[c])==-1)break;var h=i[l],p=i[l+a-1],d=h.match(u[0])[0].length,v=p.match(u[a-1])[0].length;o.push(new s(l,h.length-d,l+a-1,v))}}else for(var m=0;m<i.length;m++){var g=r.getMatchOffsets(i[m],u);for(var c=0;c<g.length;c++){var y=g[c];o.push(new s(m,y.offset,m,y.offset+y.length))}}if(n){var b=n.start.column,w=n.start.column,m=0,c=o.length-1;while(m<c&&o[m].start.column<b&&o[m].start.row==n.start.row)m++;while(m<c&&o[c].end.column>w&&o[c].end.row==n.end.row)c--;return o.slice(m,c+1)}return o},this.replace=function(e,t){var n=this.$options,r=this.$assembleRegExp(n);if(n.$isMultiLine)return t;if(!r)return;var i=r.exec(e);if(!i||i[0].length!=e.length)return null;t=e.replace(r,t);if(n.preserveCase){t=t.split(\"\");for(var s=Math.min(e.length,e.length);s--;){var o=e[s];o&&o.toLowerCase()!=o?t[s]=t[s].toUpperCase():t[s]=t[s].toLowerCase()}t=t.join(\"\")}return t},this.$matchIterator=function(e,t){var n=this.$assembleRegExp(t);if(!n)return!1;var i=this,o,u=t.backwards;if(t.$isMultiLine)var a=n.length,f=function(t,r,i){var u=t.search(n[0]);if(u==-1)return;for(var f=1;f<a;f++){t=e.getLine(r+f);if(t.search(n[f])==-1)return}var l=t.match(n[a-1])[0].length,c=new s(r,u,r+a-1,l);n.offset==1?(c.start.row--,c.start.column=Number.MAX_VALUE):i&&(c.start.column+=i);if(o(c))return!0};else if(u)var f=function(e,t,i){var s=r.getMatchOffsets(e,n);for(var u=s.length-1;u>=0;u--)if(o(s[u],t,i))return!0};else var f=function(e,t,i){var s=r.getMatchOffsets(e,n);for(var u=0;u<s.length;u++)if(o(s[u],t,i))return!0};return{forEach:function(n){o=n,i.$lineIterator(e,t).forEach(f)}}},this.$assembleRegExp=function(e){if(e.needle instanceof RegExp)return e.re=e.needle;var t=e.needle;if(!e.needle)return e.re=!1;e.regExp||(t=r.escapeRegExp(t)),e.wholeWord&&(t=\"\\\\b\"+t+\"\\\\b\");var n=e.caseSensitive?\"g\":\"gi\";e.$isMultiLine=/[\\n\\r]/.test(t);if(e.$isMultiLine)return e.re=this.$assembleMultilineRegExp(t,n);try{var i=new RegExp(t,n)}catch(s){i=!1}return e.re=i},this.$assembleMultilineRegExp=function(e,t){var n=e.replace(/\\r\\n|\\r|\\n/g,\"$\\n^\").split(\"\\n\"),r=[];for(var i=0;i<n.length;i++)try{r.push(new RegExp(n[i],t))}catch(s){return!1}return n[0]==\"\"?(r.shift(),r.offset=1):r.offset=0,r},this.$lineIterator=function(e,t){var n=t.backwards==1,r=t.skipCurrent!=0,i=t.range,s=t.start;s||(s=i?i[n?\"end\":\"start\"]:e.selection.getRange()),s.start&&(s=s[r!=n?\"end\":\"start\"]);var o=i?i.start.row:0,u=i?i.end.row:e.getLength()-1,a=n?function(n){var r=s.row,i=e.getLine(r).substring(0,s.column);if(n(i,r))return;for(r--;r>=o;r--)if(n(e.getLine(r),r))return;if(t.wrap==0)return;for(r=u,o=s.row;r>=o;r--)if(n(e.getLine(r),r))return}:function(n){var r=s.row,i=e.getLine(r).substr(s.column);if(n(i,r,s.column))return;for(r+=1;r<=u;r++)if(n(e.getLine(r),r))return;if(t.wrap==0)return;for(r=o,u=s.row;r<=u;r++)if(n(e.getLine(r),r))return};return{forEach:a}}}).call(o.prototype),t.Search=o}),ace.define(\"ace/commands/command_manager\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/keyboard/hash_handler\",\"ace/lib/event_emitter\"],function(e,t,n){var r=e(\"../lib/oop\"),i=e(\"../keyboard/hash_handler\").HashHandler,s=e(\"../lib/event_emitter\").EventEmitter,o=function(e,t){this.platform=e,this.commands=this.byName={},this.commmandKeyBinding={},this.addCommands(t),this.setDefaultHandler(\"exec\",function(e){return e.command.exec(e.editor,e.args||{})})};r.inherits(o,i),function(){r.implement(this,s),this.exec=function(e,t,n){typeof e==\"string\"&&(e=this.commands[e]);if(!e)return!1;if(t&&t.$readOnly&&!e.readOnly)return!1;var r=this._emit(\"exec\",{editor:t,command:e,args:n});return r===!1?!1:!0},this.toggleRecording=function(e){if(this.$inReplay)return;return e&&e._emit(\"changeStatus\"),this.recording?(this.macro.pop(),this.removeEventListener(\"exec\",this.$addCommandToMacro),this.macro.length||(this.macro=this.oldMacro),this.recording=!1):(this.$addCommandToMacro||(this.$addCommandToMacro=function(e){this.macro.push([e.command,e.args])}.bind(this)),this.oldMacro=this.macro,this.macro=[],this.on(\"exec\",this.$addCommandToMacro),this.recording=!0)},this.replay=function(e){if(this.$inReplay||!this.macro)return;if(this.recording)return this.toggleRecording(e);try{this.$inReplay=!0,this.macro.forEach(function(t){typeof t==\"string\"?this.exec(t,e):this.exec(t[0],e,t[1])},this)}finally{this.$inReplay=!1}},this.trimMacro=function(e){return e.map(function(e){return typeof e[0]!=\"string\"&&(e[0]=e[0].name),e[1]||(e=e[0]),e})}}.call(o.prototype),t.CommandManager=o}),ace.define(\"ace/keyboard/hash_handler\",[\"require\",\"exports\",\"module\",\"ace/lib/keys\"],function(e,t,n){function i(e,t){this.platform=t,this.commands={},this.commmandKeyBinding={},this.addCommands(e)}var r=e(\"../lib/keys\");(function(){this.addCommand=function(e){this.commands[e.name]&&this.removeCommand(e),this.commands[e.name]=e,e.bindKey&&this._buildKeyHash(e)},this.removeCommand=function(e){var t=typeof e==\"string\"?e:e.name;e=this.commands[t],delete this.commands[t];var n=this.commmandKeyBinding;for(var r in n)for(var i in n[r])n[r][i]==e&&delete n[r][i]},this.bindKey=function(e,t){if(!e)return;if(typeof t==\"function\"){this.addCommand({exec:t,bindKey:e,name:e});return}var n=this.commmandKeyBinding;e.split(\"|\").forEach(function(e){var r=this.parseKeys(e,t),i=r.hashId;(n[i]||(n[i]={}))[r.key]=t},this)},this.addCommands=function(e){e&&Object.keys(e).forEach(function(t){var n=e[t];if(typeof n==\"string\")return this.bindKey(n,t);typeof n==\"function\"&&(n={exec:n}),n.name||(n.name=t),this.addCommand(n)},this)},this.removeCommands=function(e){Object.keys(e).forEach(function(t){this.removeCommand(e[t])},this)},this.bindKeys=function(e){Object.keys(e).forEach(function(t){this.bindKey(t,e[t])},this)},this._buildKeyHash=function(e){var t=e.bindKey;if(!t)return;var n=typeof t==\"string\"?t:t[this.platform];this.bindKey(n,e)},this.parseKeys=function(e){var t=e.toLowerCase().split(/[\\-\\+]([\\-\\+])?/).filter(function(e){return e}),n=t.pop(),i=r[n];if(r.FUNCTION_KEYS[i])n=r.FUNCTION_KEYS[i].toLowerCase();else{if(!t.length)return{key:n,hashId:-1};if(t.length==1&&t[0]==\"shift\")return{key:n.toUpperCase(),hashId:-1}}var s=0;for(var o=t.length;o--;){var u=r.KEY_MODS[t[o]];if(u==null)throw\"invalid modifier \"+t[o]+\" in \"+e;s|=u}return{key:n,hashId:s}},this.findKeyCommand=function(t,n){var r=this.commmandKeyBinding;return r[t]&&r[t][n]},this.handleKeyboard=function(e,t,n,r){return{command:this.findKeyCommand(t,n)}}}).call(i.prototype),t.HashHandler=i}),ace.define(\"ace/commands/default_commands\",[\"require\",\"exports\",\"module\",\"ace/lib/lang\",\"ace/config\"],function(e,t,n){function s(e,t){return{win:e,mac:t}}var r=e(\"../lib/lang\"),i=e(\"../config\");t.commands=[{name:\"selectall\",bindKey:s(\"Ctrl-A\",\"Command-A\"),exec:function(e){e.selectAll()},readOnly:!0},{name:\"centerselection\",bindKey:s(null,\"Ctrl-L\"),exec:function(e){e.centerSelection()},readOnly:!0},{name:\"gotoline\",bindKey:s(\"Ctrl-L\",\"Command-L\"),exec:function(e){var t=parseInt(prompt(\"Enter line number:\"),10);isNaN(t)||e.gotoLine(t)},readOnly:!0},{name:\"fold\",bindKey:s(\"Alt-L|Ctrl-F1\",\"Command-Alt-L|Command-F1\"),exec:function(e){e.session.toggleFold(!1)},readOnly:!0},{name:\"unfold\",bindKey:s(\"Alt-Shift-L|Ctrl-Shift-F1\",\"Command-Alt-Shift-L|Command-Shift-F1\"),exec:function(e){e.session.toggleFold(!0)},readOnly:!0},{name:\"foldall\",bindKey:s(\"Alt-0\",\"Command-Option-0\"),exec:function(e){e.session.foldAll()},readOnly:!0},{name:\"unfoldall\",bindKey:s(\"Alt-Shift-0\",\"Command-Option-Shift-0\"),exec:function(e){e.session.unfold()},readOnly:!0},{name:\"findnext\",bindKey:s(\"Ctrl-K\",\"Command-G\"),exec:function(e){e.findNext()},readOnly:!0},{name:\"findprevious\",bindKey:s(\"Ctrl-Shift-K\",\"Command-Shift-G\"),exec:function(e){e.findPrevious()},readOnly:!0},{name:\"find\",bindKey:s(\"Ctrl-F\",\"Command-F\"),exec:function(e){i.loadModule(\"ace/ext/searchbox\",function(t){t.Search(e)})},readOnly:!0},{name:\"overwrite\",bindKey:\"Insert\",exec:function(e){e.toggleOverwrite()},readOnly:!0},{name:\"selecttostart\",bindKey:s(\"Ctrl-Shift-Home\",\"Command-Shift-Up\"),exec:function(e){e.getSelection().selectFileStart()},multiSelectAction:\"forEach\",readOnly:!0},{name:\"gotostart\",bindKey:s(\"Ctrl-Home\",\"Command-Home|Command-Up\"),exec:function(e){e.navigateFileStart()},multiSelectAction:\"forEach\",readOnly:!0},{name:\"selectup\",bindKey:s(\"Shift-Up\",\"Shift-Up\"),exec:function(e){e.getSelection().selectUp()},multiSelectAction:\"forEach\",readOnly:!0},{name:\"golineup\",bindKey:s(\"Up\",\"Up|Ctrl-P\"),exec:function(e,t){e.navigateUp(t.times)},multiSelectAction:\"forEach\",readOnly:!0},{name:\"selecttoend\",bindKey:s(\"Ctrl-Shift-End\",\"Command-Shift-Down\"),exec:function(e){e.getSelection().selectFileEnd()},multiSelectAction:\"forEach\",readOnly:!0},{name:\"gotoend\",bindKey:s(\"Ctrl-End\",\"Command-End|Command-Down\"),exec:function(e){e.navigateFileEnd()},multiSelectAction:\"forEach\",readOnly:!0},{name:\"selectdown\",bindKey:s(\"Shift-Down\",\"Shift-Down\"),exec:function(e){e.getSelection().selectDown()},multiSelectAction:\"forEach\",readOnly:!0},{name:\"golinedown\",bindKey:s(\"Down\",\"Down|Ctrl-N\"),exec:function(e,t){e.navigateDown(t.times)},multiSelectAction:\"forEach\",readOnly:!0},{name:\"selectwordleft\",bindKey:s(\"Ctrl-Shift-Left\",\"Option-Shift-Left\"),exec:function(e){e.getSelection().selectWordLeft()},multiSelectAction:\"forEach\",readOnly:!0},{name:\"gotowordleft\",bindKey:s(\"Ctrl-Left\",\"Option-Left\"),exec:function(e){e.navigateWordLeft()},multiSelectAction:\"forEach\",readOnly:!0},{name:\"selecttolinestart\",bindKey:s(\"Alt-Shift-Left\",\"Command-Shift-Left\"),exec:function(e){e.getSelection().selectLineStart()},multiSelectAction:\"forEach\",readOnly:!0},{name:\"gotolinestart\",bindKey:s(\"Alt-Left|Home\",\"Command-Left|Home|Ctrl-A\"),exec:function(e){e.navigateLineStart()},multiSelectAction:\"forEach\",readOnly:!0},{name:\"selectleft\",bindKey:s(\"Shift-Left\",\"Shift-Left\"),exec:function(e){e.getSelection().selectLeft()},multiSelectAction:\"forEach\",readOnly:!0},{name:\"gotoleft\",bindKey:s(\"Left\",\"Left|Ctrl-B\"),exec:function(e,t){e.navigateLeft(t.times)},multiSelectAction:\"forEach\",readOnly:!0},{name:\"selectwordright\",bindKey:s(\"Ctrl-Shift-Right\",\"Option-Shift-Right\"),exec:function(e){e.getSelection().selectWordRight()},multiSelectAction:\"forEach\",readOnly:!0},{name:\"gotowordright\",bindKey:s(\"Ctrl-Right\",\"Option-Right\"),exec:function(e){e.navigateWordRight()},multiSelectAction:\"forEach\",readOnly:!0},{name:\"selecttolineend\",bindKey:s(\"Alt-Shift-Right\",\"Command-Shift-Right\"),exec:function(e){e.getSelection().selectLineEnd()},multiSelectAction:\"forEach\",readOnly:!0},{name:\"gotolineend\",bindKey:s(\"Alt-Right|End\",\"Command-Right|End|Ctrl-E\"),exec:function(e){e.navigateLineEnd()},multiSelectAction:\"forEach\",readOnly:!0},{name:\"selectright\",bindKey:s(\"Shift-Right\",\"Shift-Right\"),exec:function(e){e.getSelection().selectRight()},multiSelectAction:\"forEach\",readOnly:!0},{name:\"gotoright\",bindKey:s(\"Right\",\"Right|Ctrl-F\"),exec:function(e,t){e.navigateRight(t.times)},multiSelectAction:\"forEach\",readOnly:!0},{name:\"selectpagedown\",bindKey:\"Shift-PageDown\",exec:function(e){e.selectPageDown()},readOnly:!0},{name:\"pagedown\",bindKey:s(null,\"Option-PageDown\"),exec:function(e){e.scrollPageDown()},readOnly:!0},{name:\"gotopagedown\",bindKey:s(\"PageDown\",\"PageDown|Ctrl-V\"),exec:function(e){e.gotoPageDown()},readOnly:!0},{name:\"selectpageup\",bindKey:\"Shift-PageUp\",exec:function(e){e.selectPageUp()},readOnly:!0},{name:\"pageup\",bindKey:s(null,\"Option-PageUp\"),exec:function(e){e.scrollPageUp()},readOnly:!0},{name:\"gotopageup\",bindKey:\"PageUp\",exec:function(e){e.gotoPageUp()},readOnly:!0},{name:\"scrollup\",bindKey:s(\"Ctrl-Up\",null),exec:function(e){e.renderer.scrollBy(0,-2*e.renderer.layerConfig.lineHeight)},readOnly:!0},{name:\"scrolldown\",bindKey:s(\"Ctrl-Down\",null),exec:function(e){e.renderer.scrollBy(0,2*e.renderer.layerConfig.lineHeight)},readOnly:!0},{name:\"selectlinestart\",bindKey:\"Shift-Home\",exec:function(e){e.getSelection().selectLineStart()},multiSelectAction:\"forEach\",readOnly:!0},{name:\"selectlineend\",bindKey:\"Shift-End\",exec:function(e){e.getSelection().selectLineEnd()},multiSelectAction:\"forEach\",readOnly:!0},{name:\"togglerecording\",bindKey:s(\"Ctrl-Alt-E\",\"Command-Option-E\"),exec:function(e){e.commands.toggleRecording(e)},readOnly:!0},{name:\"replaymacro\",bindKey:s(\"Ctrl-Shift-E\",\"Command-Shift-E\"),exec:function(e){e.commands.replay(e)},readOnly:!0},{name:\"jumptomatching\",bindKey:s(\"Ctrl-P\",\"Ctrl-Shift-P\"),exec:function(e){e.jumpToMatching()},multiSelectAction:\"forEach\",readOnly:!0},{name:\"selecttomatching\",bindKey:s(\"Ctrl-Shift-P\",null),exec:function(e){e.jumpToMatching(!0)},readOnly:!0},{name:\"cut\",exec:function(e){var t=e.getSelectionRange();e._emit(\"cut\",t),e.selection.isEmpty()||(e.session.remove(t),e.clearSelection())},multiSelectAction:\"forEach\"},{name:\"removeline\",bindKey:s(\"Ctrl-D\",\"Command-D\"),exec:function(e){e.removeLines()},multiSelectAction:\"forEach\"},{name:\"duplicateSelection\",bindKey:s(\"Ctrl-Shift-D\",\"Command-Shift-D\"),exec:function(e){e.duplicateSelection()},multiSelectAction:\"forEach\"},{name:\"sortlines\",bindKey:s(\"Ctrl-Alt-S\",\"Command-Alt-S\"),exec:function(e){e.sortLines()},multiSelectAction:\"forEach\"},{name:\"togglecomment\",bindKey:s(\"Ctrl-/\",\"Command-/\"),exec:function(e){e.toggleCommentLines()},multiSelectAction:\"forEach\"},{name:\"modifyNumberUp\",bindKey:s(\"Ctrl-Shift-Up\",\"Alt-Shift-Up\"),exec:function(e){e.modifyNumber(1)},multiSelectAction:\"forEach\"},{name:\"modifyNumberDown\",bindKey:s(\"Ctrl-Shift-Down\",\"Alt-Shift-Down\"),exec:function(e){e.modifyNumber(-1)},multiSelectAction:\"forEach\"},{name:\"replace\",bindKey:s(\"Ctrl-H\",\"Command-Option-F\"),exec:function(e){i.loadModule(\"ace/ext/searchbox\",function(t){t.Search(e,!0)})}},{name:\"undo\",bindKey:s(\"Ctrl-Z\",\"Command-Z\"),exec:function(e){e.undo()}},{name:\"redo\",bindKey:s(\"Ctrl-Shift-Z|Ctrl-Y\",\"Command-Shift-Z|Command-Y\"),exec:function(e){e.redo()}},{name:\"copylinesup\",bindKey:s(\"Alt-Shift-Up\",\"Command-Option-Up\"),exec:function(e){e.copyLinesUp()}},{name:\"movelinesup\",bindKey:s(\"Alt-Up\",\"Option-Up\"),exec:function(e){e.moveLinesUp()}},{name:\"copylinesdown\",bindKey:s(\"Alt-Shift-Down\",\"Command-Option-Down\"),exec:function(e){e.copyLinesDown()}},{name:\"movelinesdown\",bindKey:s(\"Alt-Down\",\"Option-Down\"),exec:function(e){e.moveLinesDown()}},{name:\"del\",bindKey:s(\"Delete\",\"Delete|Ctrl-D\"),exec:function(e){e.remove(\"right\")},multiSelectAction:\"forEach\"},{name:\"backspace\",bindKey:s(\"Command-Backspace|Option-Backspace|Shift-Backspace|Backspace\",\"Ctrl-Backspace|Command-Backspace|Shift-Backspace|Backspace|Ctrl-H\"),exec:function(e){e.remove(\"left\")},multiSelectAction:\"forEach\"},{name:\"removetolinestart\",bindKey:s(\"Alt-Backspace\",\"Command-Backspace\"),exec:function(e){e.removeToLineStart()},multiSelectAction:\"forEach\"},{name:\"removetolineend\",bindKey:s(\"Alt-Delete\",\"Ctrl-K\"),exec:function(e){e.removeToLineEnd()},multiSelectAction:\"forEach\"},{name:\"removewordleft\",bindKey:s(\"Ctrl-Backspace\",\"Alt-Backspace|Ctrl-Alt-Backspace\"),exec:function(e){e.removeWordLeft()},multiSelectAction:\"forEach\"},{name:\"removewordright\",bindKey:s(\"Ctrl-Delete\",\"Alt-Delete\"),exec:function(e){e.removeWordRight()},multiSelectAction:\"forEach\"},{name:\"outdent\",bindKey:s(\"Shift-Tab\",\"Shift-Tab\"),exec:function(e){e.blockOutdent()},multiSelectAction:\"forEach\"},{name:\"indent\",bindKey:s(\"Tab\",\"Tab\"),exec:function(e){e.indent()},multiSelectAction:\"forEach\"},{name:\"blockoutdent\",bindKey:s(\"Ctrl-[\",\"Ctrl-[\"),exec:function(e){e.blockOutdent()},multiSelectAction:\"forEach\"},{name:\"blockindent\",bindKey:s(\"Ctrl-]\",\"Ctrl-]\"),exec:function(e){e.blockIndent()},multiSelectAction:\"forEach\"},{name:\"insertstring\",exec:function(e,t){e.insert(t)},multiSelectAction:\"forEach\"},{name:\"inserttext\",exec:function(e,t){e.insert(r.stringRepeat(t.text||\"\",t.times||1))},multiSelectAction:\"forEach\"},{name:\"splitline\",bindKey:s(null,\"Ctrl-O\"),exec:function(e){e.splitLine()},multiSelectAction:\"forEach\"},{name:\"transposeletters\",bindKey:s(\"Ctrl-T\",\"Ctrl-T\"),exec:function(e){e.transposeLetters()},multiSelectAction:function(e){e.transposeSelections(1)}},{name:\"touppercase\",bindKey:s(\"Ctrl-U\",\"Ctrl-U\"),exec:function(e){e.toUpperCase()},multiSelectAction:\"forEach\"},{name:\"tolowercase\",bindKey:s(\"Ctrl-Shift-U\",\"Ctrl-Shift-U\"),exec:function(e){e.toLowerCase()},multiSelectAction:\"forEach\"}]}),ace.define(\"ace/undomanager\",[\"require\",\"exports\",\"module\"],function(e,t,n){var r=function(){this.reset()};(function(){this.execute=function(e){var t=e.args[0];this.$doc=e.args[1],this.$undoStack.push(t),this.$redoStack=[]},this.undo=function(e){var t=this.$undoStack.pop(),n=null;return t&&(n=this.$doc.undoChanges(t,e),this.$redoStack.push(t)),n},this.redo=function(e){var t=this.$redoStack.pop(),n=null;return t&&(n=this.$doc.redoChanges(t,e),this.$undoStack.push(t)),n},this.reset=function(){this.$undoStack=[],this.$redoStack=[]},this.hasUndo=function(){return this.$undoStack.length>0},this.hasRedo=function(){return this.$redoStack.length>0}}).call(r.prototype),t.UndoManager=r}),ace.define(\"ace/virtual_renderer\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/dom\",\"ace/lib/event\",\"ace/lib/useragent\",\"ace/config\",\"ace/lib/net\",\"ace/layer/gutter\",\"ace/layer/marker\",\"ace/layer/text\",\"ace/layer/cursor\",\"ace/scrollbar\",\"ace/renderloop\",\"ace/lib/event_emitter\"],function(e,t,n){var r=e(\"./lib/oop\"),i=e(\"./lib/dom\"),s=e(\"./lib/event\"),o=e(\"./lib/useragent\"),u=e(\"./config\"),a=e(\"./lib/net\"),f=e(\"./layer/gutter\").Gutter,l=e(\"./layer/marker\").Marker,c=e(\"./layer/text\").Text,h=e(\"./layer/cursor\").Cursor,p=e(\"./scrollbar\").ScrollBar,d=e(\"./renderloop\").RenderLoop,v=e(\"./lib/event_emitter\").EventEmitter,m=\".ace_editor {position: relative;overflow: hidden;font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', 'Consolas', 'source-code-pro', monospace;font-size: 12px;line-height: normal;}.ace_scroller {position: absolute;overflow: hidden;top: 0;bottom: 0;}.ace_content {position: absolute;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;cursor: text;}.ace_gutter {position: absolute;overflow : hidden;width: auto;top: 0;bottom: 0;left: 0;cursor: default;z-index: 4;}.ace_gutter-active-line {position: absolute;left: 0;right: 0;}.ace_scroller.ace_scroll-left {box-shadow: 17px 0 16px -16px rgba(0, 0, 0, 0.4) inset;}.ace_gutter-cell {padding-left: 19px;padding-right: 6px;background-repeat: no-repeat;}.ace_gutter-cell.ace_error {background-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QUM2OEZDQTQ4RTU0MTFFMUEzM0VFRTM2RUY1M0RBMjYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QUM2OEZDQTU4RTU0MTFFMUEzM0VFRTM2RUY1M0RBMjYiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpBQzY4RkNBMjhFNTQxMUUxQTMzRUVFMzZFRjUzREEyNiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpBQzY4RkNBMzhFNTQxMUUxQTMzRUVFMzZFRjUzREEyNiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PkgXxbAAAAJbSURBVHjapFNNaBNBFH4zs5vdZLP5sQmNpT82QY209heh1ioWisaDRcSKF0WKJ0GQnrzrxasHsR6EnlrwD0TagxJabaVEpFYxLWlLSS822tr87m66ccfd2GKyVhA6MMybgfe97/vmPUQphd0sZjto9XIn9OOsvlu2nkqRzVU+6vvlzPf8W6bk8dxQ0NPbxAALgCgg2JkaQuhzQau/El0zbmUA7U0Es8v2CiYmKQJHGO1QICCLoqilMhkmurDAyapKgqItezi/USRdJqEYY4D5jCy03ht2yMkkvL91jTTX10qzyyu2hruPRN7jgbH+EOsXcMLgYiThEgAMhABW85oqy1DXdRIdvP1AHJ2acQXvDIrVHcdQNrEKNYSVMSZGMjEzIIAwDXIo+6G/FxcGnzkC3T2oMhLjre49sBB+RRcHLqdafK6sYdE/GGBwU1VpFNj0aN8pJbe+BkZyevUrvLl6Xmm0W9IuTc0DxrDNAJd5oEvI/KRsNC3bQyNjPO9yQ1YHcfj2QvfQc/5TUhJTBc2iM0U7AWDQtc1nJHvD/cfO2s7jaGkiTEfa/Ep8coLu7zmNmh8+dc5lZDuUeFAGUNA/OY6JVaypQ0vjr7XYjUvJM37vt+j1vuTK5DgVfVUoTjVe+y3/LxMxY2GgU+CSLy4cpfsYorRXuXIOi0Vt40h67uZFTdIo6nLaZcwUJWAzwNS0tBnqqKzQDnjdG/iPyZxo46HaKUpbvYkj8qYRTZsBhge+JHhZyh0x9b95JqjVJkT084kZIPwu/mPWqPgfQ5jXh2+92Ay7HedfAgwA6KDWafb4w3cAAAAASUVORK5CYII=\\\");background-repeat: no-repeat;background-position: 2px center;}.ace_gutter-cell.ace_warning {background-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QUM2OEZDQTg4RTU0MTFFMUEzM0VFRTM2RUY1M0RBMjYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QUM2OEZDQTk4RTU0MTFFMUEzM0VFRTM2RUY1M0RBMjYiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpBQzY4RkNBNjhFNTQxMUUxQTMzRUVFMzZFRjUzREEyNiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpBQzY4RkNBNzhFNTQxMUUxQTMzRUVFMzZFRjUzREEyNiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pgd7PfIAAAGmSURBVHjaYvr//z8DJZiJgUIANoCRkREb9gLiSVAaQx4OQM7AAkwd7XU2/v++/rOttdYGEB9dASEvOMydGKfH8Gv/p4XTkvRBfLxeQAP+1cUhXopyvzhP7P/IoSj7g7Mw09cNKO6J1QQ0L4gICPIv/veg/8W+JdFvQNLHVsW9/nmn9zk7B+cCkDwhL7gt6knSZnx9/LuCEOcvkIAMP+cvto9nfqyZmmUAksfnBUtbM60gX/3/kgyv3/xSFOL5DZT+L8vP+Yfh5cvfPvp/xUHyQHXGyAYwgpwBjZYFT3Y1OEl/OfCH4ffv3wzc4iwMvNIsDJ+f/mH4+vIPAxsb631WW0Yln6ZpQLXdMK/DXGDflh+sIv37EivD5x//Gb7+YWT4y86sl7BCCkSD+Z++/1dkvsFRl+HnD1Rvje4F8whjMXmGj58YGf5zsDMwcnAwfPvKcml62DsQDeaDxN+/Y0qwlpEHqrdB94IRNIDUgfgfKJChGK4OikEW3gTiXUB950ASLFAF54AC94A0G9QAfOnmF9DCDzABFqS08IHYDIScdijOjQABBgC+/9awBH96jwAAAABJRU5ErkJggg==\\\");background-position: 2px center;}.ace_gutter-cell.ace_info {background-image: url(\\\"data:image/gif;base64,R0lGODlhEAAQAMQAAAAAAEFBQVJSUl5eXmRkZGtra39/f4WFhYmJiZGRkaampry8vMPDw8zMzNXV1dzc3OTk5Orq6vDw8P///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAkAABQALAAAAAAQABAAAAUuICWOZGmeaBml5XGwFCQSBGyXRSAwtqQIiRuiwIM5BoYVbEFIyGCQoeJGrVptIQA7\\\");background-position: 2px center;}.ace_dark .ace_gutter-cell.ace_info {background-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpGRTk5MTVGREIxNDkxMUUxOTc5Q0FFREQyMTNGMjBFQyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpGRTk5MTVGRUIxNDkxMUUxOTc5Q0FFREQyMTNGMjBFQyI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkZFOTkxNUZCQjE0OTExRTE5NzlDQUVERDIxM0YyMEVDIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkZFOTkxNUZDQjE0OTExRTE5NzlDQUVERDIxM0YyMEVDIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+SIDkjAAAAJ1JREFUeNpi/P//PwMlgImBQkB7A6qrq/+DMC55FkIGKCoq4pVnpFkgTp069f/+/fv/r1u37r+tre1/kg0A+ptn9uzZYLaRkRHpLvjw4cNXWVlZhufPnzOcO3eOdAO0tbVPAjHDmzdvGA4fPsxIsgGSkpJmv379Ynj37h2DjIyMCMkG3LhxQ/T27dsMampqDHZ2dq/pH41DxwCAAAMAFdc68dUsFZgAAAAASUVORK5CYII=\\\");}.ace_scrollbar {position: absolute;overflow-x: hidden;overflow-y: scroll;right: 0;top: 0;bottom: 0;}.ace_scrollbar-inner {position: absolute;width: 1px;left: 0;}.ace_print-margin {position: absolute;height: 100%;}.ace_text-input {position: absolute;z-index: 0;width: 0.5em;height: 1em;opacity: 0;background: transparent;-moz-appearance: none;appearance: none;border: none;resize: none;outline: none;overflow: hidden;font: inherit;}.ace_text-input.ace_composition {background: #f8f8f8;color: #111;z-index: 1000;opacity: 1;border: solid lightgray 1px;margin: -1px;padding: 0 1px;}.ace_layer {z-index: 1;position: absolute;overflow: hidden;white-space: nowrap;height: 100%;width: 100%;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;/* setting pointer-events: auto; on node under the mouse, which changesduring scroll, will break mouse wheel scrolling in Safari */pointer-events: none;}.ace_gutter-layer {position: relative;width: auto;text-align: right;pointer-events: auto;}.ace_text-layer {color: black;font: inherit !important;}.ace_cjk {display: inline-block;text-align: center;}.ace_cursor-layer {z-index: 4;}.ace_cursor {z-index: 4;position: absolute;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;}.ace_hidden-cursors .ace_cursor {opacity: 0.2;}.ace_smooth-blinking .ace_cursor {-moz-transition: opacity 0.18s;-webkit-transition: opacity 0.18s;-o-transition: opacity 0.18s;-ms-transition: opacity 0.18s;transition: opacity 0.18s;}.ace_cursor[style*=\\\"opacity: 0\\\"]{-ms-filter: \\\"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)\\\";}.ace_editor.ace_multiselect .ace_cursor {border-left-width: 1px;}.ace_line {white-space: nowrap;}.ace_marker-layer .ace_step {position: absolute;z-index: 3;}.ace_marker-layer .ace_selection {position: absolute;z-index: 5;}.ace_marker-layer .ace_bracket {position: absolute;z-index: 6;}.ace_marker-layer .ace_active-line {position: absolute;z-index: 2;}.ace_marker-layer .ace_selected-word {position: absolute;z-index: 4;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;}.ace_line .ace_fold {-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;display: inline-block;height: 11px;margin-top: -2px;vertical-align: middle;background-image:url(\\\"data:image/png,%89PNG%0D%0A%1A%0A%00%00%00%0DIHDR%00%00%00%11%00%00%00%09%08%06%00%00%00%D4%E8%C7%0C%00%00%03%1EiCCPICC%20Profile%00%00x%01%85T%DFk%D3P%14%FE%DAe%9D%B0%E1%8B%3Ag%11%09%3Eh%91ndStC%9C%B6kW%BA%CDZ%EA6%B7!H%9B%A6m%5C%9A%C6%24%ED~%B0%07%D9%8Bo%3A%C5w%F1%07%3E%F9%07%0C%D9%83o%7B%92%0D%C6%14a%F8%AC%88%22L%F6%22%B3%9E%9B4M'S%03%B9%F7%BB%DF%F9%EE9'%E7%E4%5E%A0%F9qZ%D3%14%2F%0F%14USO%C5%C2%FC%C4%E4%14%DF%F2%01%5E%1CC%2B%FChM%8B%86%16J%26G%40%0F%D3%B2y%EF%B3%F3%0E%1E%C6lt%EEo%DF%AB%FEc%D5%9A%95%0C%11%F0%1C%20%BE%945%C4%22%E1Y%A0i%5C%D4t%13%E0%D6%89%EF%9D15%C2%CDLsX%A7%04%09%1Fg8oc%81%E1%8C%8D%23%96f45%40%9A%09%C2%07%C5B%3AK%B8%408%98i%E0%F3%0D%D8%CE%81%14%E4'%26%A9%92.%8B%3C%ABER%2F%E5dE%B2%0C%F6%F0%1Fs%83%F2_%B0%A8%94%E9%9B%AD%E7%10%8Dm%9A%19N%D1%7C%8A%DE%1F9%7Dp%8C%E6%00%D5%C1%3F_%18%BDA%B8%9DpX6%E3%A35~B%CD%24%AE%11%26%BD%E7%EEti%98%EDe%9A%97Y)%12%25%1C%24%BCbT%AE3li%E6%0B%03%89%9A%E6%D3%ED%F4P%92%B0%9F4%BF43Y%F3%E3%EDP%95%04%EB1%C5%F5%F6KF%F4%BA%BD%D7%DB%91%93%07%E35%3E%A7)%D6%7F%40%FE%BD%F7%F5r%8A%E5y%92%F0%EB%B4%1E%8D%D5%F4%5B%92%3AV%DB%DB%E4%CD%A6%23%C3%C4wQ%3F%03HB%82%8E%1Cd(%E0%91B%0Ca%9Ac%C4%AA%F8L%16%19%22J%A4%D2itTy%B28%D6%3B(%93%96%ED%1CGx%C9_%0E%B8%5E%16%F5%5B%B2%B8%F6%E0%FB%9E%DD%25%D7%8E%BC%15%85%C5%B7%A3%D8Q%ED%B5%81%E9%BA%B2%13%9A%1B%7Fua%A5%A3n%E17%B9%E5%9B%1Bm%AB%0B%08Q%FE%8A%E5%B1H%5Ee%CAO%82Q%D7u6%E6%90S%97%FCu%0B%CF2%94%EE%25v%12X%0C%BA%AC%F0%5E%F8*l%0AO%85%17%C2%97%BF%D4%C8%CE%DE%AD%11%CB%80q%2C%3E%AB%9ES%CD%C6%EC%25%D2L%D2%EBd%B8%BF%8A%F5B%C6%18%F9%901CZ%9D%BE%24M%9C%8A9%F2%DAP%0B'%06w%82%EB%E6%E2%5C%2F%D7%07%9E%BB%CC%5D%E1%FA%B9%08%AD.r%23%8E%C2%17%F5E%7C!%F0%BE3%BE%3E_%B7o%88a%A7%DB%BE%D3d%EB%A31Z%EB%BB%D3%91%BA%A2%B1z%94%8F%DB'%F6%3D%8E%AA%13%19%B2%B1%BE%B1~V%08%2B%B4%A2cjJ%B3tO%00%03%25mN%97%F3%05%93%EF%11%84%0B%7C%88%AE-%89%8F%ABbW%90O%2B%0Ao%99%0C%5E%97%0CI%AFH%D9.%B0%3B%8F%ED%03%B6S%D6%5D%E6i_s9%F3*p%E9%1B%FD%C3%EB.7U%06%5E%19%C0%D1s.%17%A03u%E4%09%B0%7C%5E%2C%EB%15%DB%1F%3C%9E%B7%80%91%3B%DBc%AD%3Dma%BA%8B%3EV%AB%DBt.%5B%1E%01%BB%0F%AB%D5%9F%CF%AA%D5%DD%E7%E4%7F%0Bx%A3%FC%06%A9%23%0A%D6%C2%A1_2%00%00%00%09pHYs%00%00%0B%13%00%00%0B%13%01%00%9A%9C%18%00%00%00%B5IDAT(%15%A5%91%3D%0E%02!%10%85ac%E1%05%D6%CE%D6%C6%CE%D2%E8%ED%CD%DE%C0%C6%D6N.%E0V%F8%3D%9Ca%891XH%C2%BE%D9y%3F%90!%E6%9C%C3%BFk%E5%011%C6-%F5%C8N%04%DF%BD%FF%89%DFt%83DN%60%3E%F3%AB%A0%DE%1A%5Dg%BE%10Q%97%1B%40%9C%A8o%10%8F%5E%828%B4%1B%60%87%F6%02%26%85%1Ch%1E%C1%2B%5Bk%FF%86%EE%B7j%09%9A%DA%9B%ACe%A3%F9%EC%DA!9%B4%D5%A6%81%86%86%98%CC%3C%5B%40%FA%81%B3%E9%CB%23%94%C16Azo%05%D4%E1%C1%95a%3B%8A'%A0%E8%CC%17%22%85%1D%BA%00%A2%FA%DC%0A%94%D1%D1%8D%8B%3A%84%17B%C7%60%1A%25Z%FC%8D%00%00%00%00IEND%AEB%60%82\\\"),url(\\\"data:image/png,%89PNG%0D%0A%1A%0A%00%00%00%0DIHDR%00%00%00%05%00%00%007%08%06%00%00%00%C4%DD%80C%00%00%03%1EiCCPICC%20Profile%00%00x%01%85T%DFk%D3P%14%FE%DAe%9D%B0%E1%8B%3Ag%11%09%3Eh%91ndStC%9C%B6kW%BA%CDZ%EA6%B7!H%9B%A6m%5C%9A%C6%24%ED~%B0%07%D9%8Bo%3A%C5w%F1%07%3E%F9%07%0C%D9%83o%7B%92%0D%C6%14a%F8%AC%88%22L%F6%22%B3%9E%9B4M'S%03%B9%F7%BB%DF%F9%EE9'%E7%E4%5E%A0%F9qZ%D3%14%2F%0F%14USO%C5%C2%FC%C4%E4%14%DF%F2%01%5E%1CC%2B%FChM%8B%86%16J%26G%40%0F%D3%B2y%EF%B3%F3%0E%1E%C6lt%EEo%DF%AB%FEc%D5%9A%95%0C%11%F0%1C%20%BE%945%C4%22%E1Y%A0i%5C%D4t%13%E0%D6%89%EF%9D15%C2%CDLsX%A7%04%09%1Fg8oc%81%E1%8C%8D%23%96f45%40%9A%09%C2%07%C5B%3AK%B8%408%98i%E0%F3%0D%D8%CE%81%14%E4'%26%A9%92.%8B%3C%ABER%2F%E5dE%B2%0C%F6%F0%1Fs%83%F2_%B0%A8%94%E9%9B%AD%E7%10%8Dm%9A%19N%D1%7C%8A%DE%1F9%7Dp%8C%E6%00%D5%C1%3F_%18%BDA%B8%9DpX6%E3%A35~B%CD%24%AE%11%26%BD%E7%EEti%98%EDe%9A%97Y)%12%25%1C%24%BCbT%AE3li%E6%0B%03%89%9A%E6%D3%ED%F4P%92%B0%9F4%BF43Y%F3%E3%EDP%95%04%EB1%C5%F5%F6KF%F4%BA%BD%D7%DB%91%93%07%E35%3E%A7)%D6%7F%40%FE%BD%F7%F5r%8A%E5y%92%F0%EB%B4%1E%8D%D5%F4%5B%92%3AV%DB%DB%E4%CD%A6%23%C3%C4wQ%3F%03HB%82%8E%1Cd(%E0%91B%0Ca%9Ac%C4%AA%F8L%16%19%22J%A4%D2itTy%B28%D6%3B(%93%96%ED%1CGx%C9_%0E%B8%5E%16%F5%5B%B2%B8%F6%E0%FB%9E%DD%25%D7%8E%BC%15%85%C5%B7%A3%D8Q%ED%B5%81%E9%BA%B2%13%9A%1B%7Fua%A5%A3n%E17%B9%E5%9B%1Bm%AB%0B%08Q%FE%8A%E5%B1H%5Ee%CAO%82Q%D7u6%E6%90S%97%FCu%0B%CF2%94%EE%25v%12X%0C%BA%AC%F0%5E%F8*l%0AO%85%17%C2%97%BF%D4%C8%CE%DE%AD%11%CB%80q%2C%3E%AB%9ES%CD%C6%EC%25%D2L%D2%EBd%B8%BF%8A%F5B%C6%18%F9%901CZ%9D%BE%24M%9C%8A9%F2%DAP%0B'%06w%82%EB%E6%E2%5C%2F%D7%07%9E%BB%CC%5D%E1%FA%B9%08%AD.r%23%8E%C2%17%F5E%7C!%F0%BE3%BE%3E_%B7o%88a%A7%DB%BE%D3d%EB%A31Z%EB%BB%D3%91%BA%A2%B1z%94%8F%DB'%F6%3D%8E%AA%13%19%B2%B1%BE%B1~V%08%2B%B4%A2cjJ%B3tO%00%03%25mN%97%F3%05%93%EF%11%84%0B%7C%88%AE-%89%8F%ABbW%90O%2B%0Ao%99%0C%5E%97%0CI%AFH%D9.%B0%3B%8F%ED%03%B6S%D6%5D%E6i_s9%F3*p%E9%1B%FD%C3%EB.7U%06%5E%19%C0%D1s.%17%A03u%E4%09%B0%7C%5E%2C%EB%15%DB%1F%3C%9E%B7%80%91%3B%DBc%AD%3Dma%BA%8B%3EV%AB%DBt.%5B%1E%01%BB%0F%AB%D5%9F%CF%AA%D5%DD%E7%E4%7F%0Bx%A3%FC%06%A9%23%0A%D6%C2%A1_2%00%00%00%09pHYs%00%00%0B%13%00%00%0B%13%01%00%9A%9C%18%00%00%00%3AIDAT8%11c%FC%FF%FF%7F%18%03%1A%60%01%F2%3F%A0%891%80%04%FF%11-%F8%17%9BJ%E2%05%B1ZD%81v%26t%E7%80%F8%A3%82h%A12%1A%20%A3%01%02%0F%01%BA%25%06%00%19%C0%0D%AEF%D5%3ES%00%00%00%00IEND%AEB%60%82\\\");background-repeat: no-repeat, repeat-x;background-position: center center, top left;color: transparent;border: 1px solid black;-moz-border-radius: 2px;-webkit-border-radius: 2px;border-radius: 2px;cursor: pointer;pointer-events: auto;}.ace_dark .ace_fold {}.ace_fold:hover{background-image:url(\\\"data:image/png,%89PNG%0D%0A%1A%0A%00%00%00%0DIHDR%00%00%00%11%00%00%00%09%08%06%00%00%00%D4%E8%C7%0C%00%00%03%1EiCCPICC%20Profile%00%00x%01%85T%DFk%D3P%14%FE%DAe%9D%B0%E1%8B%3Ag%11%09%3Eh%91ndStC%9C%B6kW%BA%CDZ%EA6%B7!H%9B%A6m%5C%9A%C6%24%ED~%B0%07%D9%8Bo%3A%C5w%F1%07%3E%F9%07%0C%D9%83o%7B%92%0D%C6%14a%F8%AC%88%22L%F6%22%B3%9E%9B4M'S%03%B9%F7%BB%DF%F9%EE9'%E7%E4%5E%A0%F9qZ%D3%14%2F%0F%14USO%C5%C2%FC%C4%E4%14%DF%F2%01%5E%1CC%2B%FChM%8B%86%16J%26G%40%0F%D3%B2y%EF%B3%F3%0E%1E%C6lt%EEo%DF%AB%FEc%D5%9A%95%0C%11%F0%1C%20%BE%945%C4%22%E1Y%A0i%5C%D4t%13%E0%D6%89%EF%9D15%C2%CDLsX%A7%04%09%1Fg8oc%81%E1%8C%8D%23%96f45%40%9A%09%C2%07%C5B%3AK%B8%408%98i%E0%F3%0D%D8%CE%81%14%E4'%26%A9%92.%8B%3C%ABER%2F%E5dE%B2%0C%F6%F0%1Fs%83%F2_%B0%A8%94%E9%9B%AD%E7%10%8Dm%9A%19N%D1%7C%8A%DE%1F9%7Dp%8C%E6%00%D5%C1%3F_%18%BDA%B8%9DpX6%E3%A35~B%CD%24%AE%11%26%BD%E7%EEti%98%EDe%9A%97Y)%12%25%1C%24%BCbT%AE3li%E6%0B%03%89%9A%E6%D3%ED%F4P%92%B0%9F4%BF43Y%F3%E3%EDP%95%04%EB1%C5%F5%F6KF%F4%BA%BD%D7%DB%91%93%07%E35%3E%A7)%D6%7F%40%FE%BD%F7%F5r%8A%E5y%92%F0%EB%B4%1E%8D%D5%F4%5B%92%3AV%DB%DB%E4%CD%A6%23%C3%C4wQ%3F%03HB%82%8E%1Cd(%E0%91B%0Ca%9Ac%C4%AA%F8L%16%19%22J%A4%D2itTy%B28%D6%3B(%93%96%ED%1CGx%C9_%0E%B8%5E%16%F5%5B%B2%B8%F6%E0%FB%9E%DD%25%D7%8E%BC%15%85%C5%B7%A3%D8Q%ED%B5%81%E9%BA%B2%13%9A%1B%7Fua%A5%A3n%E17%B9%E5%9B%1Bm%AB%0B%08Q%FE%8A%E5%B1H%5Ee%CAO%82Q%D7u6%E6%90S%97%FCu%0B%CF2%94%EE%25v%12X%0C%BA%AC%F0%5E%F8*l%0AO%85%17%C2%97%BF%D4%C8%CE%DE%AD%11%CB%80q%2C%3E%AB%9ES%CD%C6%EC%25%D2L%D2%EBd%B8%BF%8A%F5B%C6%18%F9%901CZ%9D%BE%24M%9C%8A9%F2%DAP%0B'%06w%82%EB%E6%E2%5C%2F%D7%07%9E%BB%CC%5D%E1%FA%B9%08%AD.r%23%8E%C2%17%F5E%7C!%F0%BE3%BE%3E_%B7o%88a%A7%DB%BE%D3d%EB%A31Z%EB%BB%D3%91%BA%A2%B1z%94%8F%DB'%F6%3D%8E%AA%13%19%B2%B1%BE%B1~V%08%2B%B4%A2cjJ%B3tO%00%03%25mN%97%F3%05%93%EF%11%84%0B%7C%88%AE-%89%8F%ABbW%90O%2B%0Ao%99%0C%5E%97%0CI%AFH%D9.%B0%3B%8F%ED%03%B6S%D6%5D%E6i_s9%F3*p%E9%1B%FD%C3%EB.7U%06%5E%19%C0%D1s.%17%A03u%E4%09%B0%7C%5E%2C%EB%15%DB%1F%3C%9E%B7%80%91%3B%DBc%AD%3Dma%BA%8B%3EV%AB%DBt.%5B%1E%01%BB%0F%AB%D5%9F%CF%AA%D5%DD%E7%E4%7F%0Bx%A3%FC%06%A9%23%0A%D6%C2%A1_2%00%00%00%09pHYs%00%00%0B%13%00%00%0B%13%01%00%9A%9C%18%00%00%00%B5IDAT(%15%A5%91%3D%0E%02!%10%85ac%E1%05%D6%CE%D6%C6%CE%D2%E8%ED%CD%DE%C0%C6%D6N.%E0V%F8%3D%9Ca%891XH%C2%BE%D9y%3F%90!%E6%9C%C3%BFk%E5%011%C6-%F5%C8N%04%DF%BD%FF%89%DFt%83DN%60%3E%F3%AB%A0%DE%1A%5Dg%BE%10Q%97%1B%40%9C%A8o%10%8F%5E%828%B4%1B%60%87%F6%02%26%85%1Ch%1E%C1%2B%5Bk%FF%86%EE%B7j%09%9A%DA%9B%ACe%A3%F9%EC%DA!9%B4%D5%A6%81%86%86%98%CC%3C%5B%40%FA%81%B3%E9%CB%23%94%C16Azo%05%D4%E1%C1%95a%3B%8A'%A0%E8%CC%17%22%85%1D%BA%00%A2%FA%DC%0A%94%D1%D1%8D%8B%3A%84%17B%C7%60%1A%25Z%FC%8D%00%00%00%00IEND%AEB%60%82\\\"),url(\\\"data:image/png,%89PNG%0D%0A%1A%0A%00%00%00%0DIHDR%00%00%00%05%00%00%007%08%06%00%00%00%C4%DD%80C%00%00%03%1EiCCPICC%20Profile%00%00x%01%85T%DFk%D3P%14%FE%DAe%9D%B0%E1%8B%3Ag%11%09%3Eh%91ndStC%9C%B6kW%BA%CDZ%EA6%B7!H%9B%A6m%5C%9A%C6%24%ED~%B0%07%D9%8Bo%3A%C5w%F1%07%3E%F9%07%0C%D9%83o%7B%92%0D%C6%14a%F8%AC%88%22L%F6%22%B3%9E%9B4M'S%03%B9%F7%BB%DF%F9%EE9'%E7%E4%5E%A0%F9qZ%D3%14%2F%0F%14USO%C5%C2%FC%C4%E4%14%DF%F2%01%5E%1CC%2B%FChM%8B%86%16J%26G%40%0F%D3%B2y%EF%B3%F3%0E%1E%C6lt%EEo%DF%AB%FEc%D5%9A%95%0C%11%F0%1C%20%BE%945%C4%22%E1Y%A0i%5C%D4t%13%E0%D6%89%EF%9D15%C2%CDLsX%A7%04%09%1Fg8oc%81%E1%8C%8D%23%96f45%40%9A%09%C2%07%C5B%3AK%B8%408%98i%E0%F3%0D%D8%CE%81%14%E4'%26%A9%92.%8B%3C%ABER%2F%E5dE%B2%0C%F6%F0%1Fs%83%F2_%B0%A8%94%E9%9B%AD%E7%10%8Dm%9A%19N%D1%7C%8A%DE%1F9%7Dp%8C%E6%00%D5%C1%3F_%18%BDA%B8%9DpX6%E3%A35~B%CD%24%AE%11%26%BD%E7%EEti%98%EDe%9A%97Y)%12%25%1C%24%BCbT%AE3li%E6%0B%03%89%9A%E6%D3%ED%F4P%92%B0%9F4%BF43Y%F3%E3%EDP%95%04%EB1%C5%F5%F6KF%F4%BA%BD%D7%DB%91%93%07%E35%3E%A7)%D6%7F%40%FE%BD%F7%F5r%8A%E5y%92%F0%EB%B4%1E%8D%D5%F4%5B%92%3AV%DB%DB%E4%CD%A6%23%C3%C4wQ%3F%03HB%82%8E%1Cd(%E0%91B%0Ca%9Ac%C4%AA%F8L%16%19%22J%A4%D2itTy%B28%D6%3B(%93%96%ED%1CGx%C9_%0E%B8%5E%16%F5%5B%B2%B8%F6%E0%FB%9E%DD%25%D7%8E%BC%15%85%C5%B7%A3%D8Q%ED%B5%81%E9%BA%B2%13%9A%1B%7Fua%A5%A3n%E17%B9%E5%9B%1Bm%AB%0B%08Q%FE%8A%E5%B1H%5Ee%CAO%82Q%D7u6%E6%90S%97%FCu%0B%CF2%94%EE%25v%12X%0C%BA%AC%F0%5E%F8*l%0AO%85%17%C2%97%BF%D4%C8%CE%DE%AD%11%CB%80q%2C%3E%AB%9ES%CD%C6%EC%25%D2L%D2%EBd%B8%BF%8A%F5B%C6%18%F9%901CZ%9D%BE%24M%9C%8A9%F2%DAP%0B'%06w%82%EB%E6%E2%5C%2F%D7%07%9E%BB%CC%5D%E1%FA%B9%08%AD.r%23%8E%C2%17%F5E%7C!%F0%BE3%BE%3E_%B7o%88a%A7%DB%BE%D3d%EB%A31Z%EB%BB%D3%91%BA%A2%B1z%94%8F%DB'%F6%3D%8E%AA%13%19%B2%B1%BE%B1~V%08%2B%B4%A2cjJ%B3tO%00%03%25mN%97%F3%05%93%EF%11%84%0B%7C%88%AE-%89%8F%ABbW%90O%2B%0Ao%99%0C%5E%97%0CI%AFH%D9.%B0%3B%8F%ED%03%B6S%D6%5D%E6i_s9%F3*p%E9%1B%FD%C3%EB.7U%06%5E%19%C0%D1s.%17%A03u%E4%09%B0%7C%5E%2C%EB%15%DB%1F%3C%9E%B7%80%91%3B%DBc%AD%3Dma%BA%8B%3EV%AB%DBt.%5B%1E%01%BB%0F%AB%D5%9F%CF%AA%D5%DD%E7%E4%7F%0Bx%A3%FC%06%A9%23%0A%D6%C2%A1_2%00%00%00%09pHYs%00%00%0B%13%00%00%0B%13%01%00%9A%9C%18%00%00%003IDAT8%11c%FC%FF%FF%7F%3E%03%1A%60%01%F2%3F%A3%891%80%04%FFQ%26%F8w%C0%B43%A1%DB%0C%E2%8F%0A%A2%85%CAh%80%8C%06%08%3C%04%E8%96%18%00%A3S%0D%CD%CF%D8%C1%9D%00%00%00%00IEND%AEB%60%82\\\");background-repeat: no-repeat, repeat-x;background-position: center center, top left;}.ace_editor.ace_dragging .ace_content {cursor: move;}.ace_gutter-tooltip {background-color: #FFF;background-image: -webkit-linear-gradient(to bottom, transparent, rgba(0, 0, 0, 0.1));background-image: linear-gradient(to bottom, transparent, rgba(0, 0, 0, 0.1));border: 1px solid gray;border-radius: 1px;box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3);color: black;display: inline-block;max-width: 500px;padding: 4px;position: fixed;z-index: 300;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;cursor: default;white-space: pre-line;word-wrap: break-word;line-height: normal;font-style: normal;font-weight: normal;letter-spacing: normal;}.ace_folding-enabled > .ace_gutter-cell {padding-right: 13px;}.ace_fold-widget {-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;margin: 0 -12px 0 1px;display: inline-block;width: 11px;vertical-align: top;background-image: url(\\\"data:image/png,%89PNG%0D%0A%1A%0A%00%00%00%0DIHDR%00%00%00%05%00%00%00%05%08%06%00%00%00%8Do%26%E5%00%00%004IDATx%DAe%8A%B1%0D%000%0C%C2%F2%2CK%96%BC%D0%8F9%81%88H%E9%D0%0E%96%C0%10%92%3E%02%80%5E%82%E4%A9*-%EEsw%C8%CC%11%EE%96w%D8%DC%E9*Eh%0C%151(%00%00%00%00IEND%AEB%60%82\\\");background-repeat: no-repeat;background-position: center;border-radius: 3px;border: 1px solid transparent;}.ace_fold-widget.ace_end {background-image: url(\\\"data:image/png,%89PNG%0D%0A%1A%0A%00%00%00%0DIHDR%00%00%00%05%00%00%00%05%08%06%00%00%00%8Do%26%E5%00%00%004IDATx%DAm%C7%C1%09%000%08C%D1%8C%ECE%C8E(%8E%EC%02)%1EZJ%F1%C1'%04%07I%E1%E5%EE%CAL%F5%A2%99%99%22%E2%D6%1FU%B5%FE0%D9x%A7%26Wz5%0E%D5%00%00%00%00IEND%AEB%60%82\\\");}.ace_fold-widget.ace_closed {background-image: url(\\\"data:image/png,%89PNG%0D%0A%1A%0A%00%00%00%0DIHDR%00%00%00%03%00%00%00%06%08%06%00%00%00%06%E5%24%0C%00%00%009IDATx%DA5%CA%C1%09%000%08%03%C0%AC*(%3E%04%C1%0D%BA%B1%23%A4Uh%E0%20%81%C0%CC%F8%82%81%AA%A2%AArGfr%88%08%11%11%1C%DD%7D%E0%EE%5B%F6%F6%CB%B8%05Q%2F%E9tai%D9%00%00%00%00IEND%AEB%60%82\\\");}.ace_fold-widget:hover {border: 1px solid rgba(0, 0, 0, 0.3);background-color: rgba(255, 255, 255, 0.2);-moz-box-shadow: 0 1px 1px rgba(255, 255, 255, 0.7);-webkit-box-shadow: 0 1px 1px rgba(255, 255, 255, 0.7);box-shadow: 0 1px 1px rgba(255, 255, 255, 0.7);}.ace_fold-widget:active {border: 1px solid rgba(0, 0, 0, 0.4);background-color: rgba(0, 0, 0, 0.05);-moz-box-shadow: 0 1px 1px rgba(255, 255, 255, 0.8);-webkit-box-shadow: 0 1px 1px rgba(255, 255, 255, 0.8);box-shadow: 0 1px 1px rgba(255, 255, 255, 0.8);}/*** Dark version for fold widgets*/.ace_dark .ace_fold-widget {background-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHklEQVQIW2P4//8/AzoGEQ7oGCaLLAhWiSwB146BAQCSTPYocqT0AAAAAElFTkSuQmCC\\\");}.ace_dark .ace_fold-widget.ace_end {background-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAH0lEQVQIW2P4//8/AxQ7wNjIAjDMgC4AxjCVKBirIAAF0kz2rlhxpAAAAABJRU5ErkJggg==\\\");}.ace_dark .ace_fold-widget.ace_closed {background-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAFCAYAAACAcVaiAAAAHElEQVQIW2P4//+/AxAzgDADlOOAznHAKgPWAwARji8UIDTfQQAAAABJRU5ErkJggg==\\\");}.ace_dark .ace_fold-widget:hover {box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);background-color: rgba(255, 255, 255, 0.1);}.ace_dark .ace_fold-widget:active {-moz-box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);-webkit-box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);}.ace_fold-widget.ace_invalid {background-color: #FFB4B4;border-color: #DE5555;}.ace_fade-fold-widgets .ace_fold-widget {-moz-transition: opacity 0.4s ease 0.05s;-webkit-transition: opacity 0.4s ease 0.05s;-o-transition: opacity 0.4s ease 0.05s;-ms-transition: opacity 0.4s ease 0.05s;transition: opacity 0.4s ease 0.05s;opacity: 0;}.ace_fade-fold-widgets:hover .ace_fold-widget {-moz-transition: opacity 0.05s ease 0.05s;-webkit-transition: opacity 0.05s ease 0.05s;-o-transition: opacity 0.05s ease 0.05s;-ms-transition: opacity 0.05s ease 0.05s;transition: opacity 0.05s ease 0.05s;opacity:1;}.ace_underline {text-decoration: underline;}.ace_bold {font-weight: bold;}.ace_nobold .ace_bold {font-weight: normal;}.ace_italic {font-style: italic;}\";i.importCssString(m,\"ace_editor\");var g=function(e,t){var n=this;this.container=e||i.createElement(\"div\"),this.$keepTextAreaAtCursor=!o.isIE,i.addCssClass(this.container,\"ace_editor\"),this.setTheme(t),this.$gutter=i.createElement(\"div\"),this.$gutter.className=\"ace_gutter\",this.container.appendChild(this.$gutter),this.scroller=i.createElement(\"div\"),this.scroller.className=\"ace_scroller\",this.container.appendChild(this.scroller),this.content=i.createElement(\"div\"),this.content.className=\"ace_content\",this.scroller.appendChild(this.content),this.setHighlightGutterLine(!0),this.$gutterLayer=new f(this.$gutter),this.$gutterLayer.on(\"changeGutterWidth\",this.onGutterResize.bind(this)),this.$markerBack=new l(this.content);var r=this.$textLayer=new c(this.content);this.canvas=r.element,this.$markerFront=new l(this.content),this.$cursorLayer=new h(this.content),this.$horizScroll=!1,this.$horizScrollAlwaysVisible=!1,this.$animatedScroll=!1,this.scrollBar=new p(this.container),this.scrollBar.addEventListener(\"scroll\",function(e){n.$inScrollAnimation||n.session.setScrollTop(e.data)}),this.scrollTop=0,this.scrollLeft=0,s.addListener(this.scroller,\"scroll\",function(){var e=n.scroller.scrollLeft;n.scrollLeft=e,n.session.setScrollLeft(e)}),this.cursorPos={row:0,column:0},this.$textLayer.addEventListener(\"changeCharacterSize\",function(){n.updateCharacterSize(),n.onResize(!0)}),this.$size={width:0,height:0,scrollerHeight:0,scrollerWidth:0},this.layerConfig={width:1,padding:0,firstRow:0,firstRowScreen:0,lastRow:0,lineHeight:1,characterWidth:1,minHeight:1,maxHeight:1,offset:0,height:1},this.$loop=new d(this.$renderChanges.bind(this),this.container.ownerDocument.defaultView),this.$loop.schedule(this.CHANGE_FULL),this.updateCharacterSize(),this.setPadding(4)};(function(){this.showGutter=!0,this.CHANGE_CURSOR=1,this.CHANGE_MARKER=2,this.CHANGE_GUTTER=4,this.CHANGE_SCROLL=8,this.CHANGE_LINES=16,this.CHANGE_TEXT=32,this.CHANGE_SIZE=64,this.CHANGE_MARKER_BACK=128,this.CHANGE_MARKER_FRONT=256,this.CHANGE_FULL=512,this.CHANGE_H_SCROLL=1024,r.implement(this,v),this.updateCharacterSize=function(){this.$textLayer.allowBoldFonts!=this.$allowBoldFonts&&(this.$allowBoldFonts=this.$textLayer.allowBoldFonts,this.setStyle(\"ace_nobold\",!this.$allowBoldFonts)),this.characterWidth=this.$textLayer.getCharacterWidth(),this.lineHeight=this.$textLayer.getLineHeight(),this.$updatePrintMargin()},this.setSession=function(e){this.session=e,this.scroller.className=\"ace_scroller\",this.$cursorLayer.setSession(e),this.$markerBack.setSession(e),this.$markerFront.setSession(e),this.$gutterLayer.setSession(e),this.$textLayer.setSession(e),this.$loop.schedule(this.CHANGE_FULL)},this.updateLines=function(e,t){t===undefined&&(t=Infinity),this.$changedLines?(this.$changedLines.firstRow>e&&(this.$changedLines.firstRow=e),this.$changedLines.lastRow<t&&(this.$changedLines.lastRow=t)):this.$changedLines={firstRow:e,lastRow:t};if(this.$changedLines.firstRow>this.layerConfig.lastRow||this.$changedLines.lastRow<this.layerConfig.firstRow)return;this.$loop.schedule(this.CHANGE_LINES)},this.onChangeTabSize=function(){this.$loop.schedule(this.CHANGE_TEXT|this.CHANGE_MARKER),this.$textLayer.onChangeTabSize()},this.updateText=function(){this.$loop.schedule(this.CHANGE_TEXT)},this.updateFull=function(e){e?this.$renderChanges(this.CHANGE_FULL,!0):this.$loop.schedule(this.CHANGE_FULL)},this.updateFontSize=function(){this.$textLayer.checkForSizeChanges()},this.onResize=function(e,t,n,r){var s=this.CHANGE_SIZE,o=this.$size;if(this.resizing>2)return;this.resizing>1?this.resizing++:this.resizing=e?1:0,r||(r=i.getInnerHeight(this.container)),r&&(e||o.height!=r)&&(o.height=r,o.scrollerHeight=this.scroller.clientHeight,this.scrollBar.setHeight(o.scrollerHeight),this.session&&(this.session.setScrollTop(this.getScrollTop()),s|=this.CHANGE_FULL)),n||(n=i.getInnerWidth(this.container));if(n&&(e||this.resizing>1||o.width!=n)){o.width=n;var t=this.showGutter?this.$gutter.offsetWidth:0;this.scroller.style.left=t+\"px\",o.scrollerWidth=Math.max(0,n-t-this.scrollBar.getWidth()),this.scroller.style.right=this.scrollBar.getWidth()+\"px\";if(this.session.getUseWrapMode()&&this.adjustWrapLimit()||e)s|=this.CHANGE_FULL}e?this.$renderChanges(s,!0):this.$loop.schedule(s),e&&delete this.resizing},this.onGutterResize=function(){var e=this.$size.width,t=this.showGutter?this.$gutter.offsetWidth:0;this.scroller.style.left=t+\"px\",this.$size.scrollerWidth=Math.max(0,e-t-this.scrollBar.getWidth()),this.session.getUseWrapMode()&&this.adjustWrapLimit()&&this.$loop.schedule(this.CHANGE_FULL)},this.adjustWrapLimit=function(){var e=this.$size.scrollerWidth-this.$padding*2,t=Math.floor(e/this.characterWidth);return this.session.adjustWrapLimit(t)},this.setAnimatedScroll=function(e){this.$animatedScroll=e},this.getAnimatedScroll=function(){return this.$animatedScroll},this.setShowInvisibles=function(e){this.$textLayer.setShowInvisibles(e)&&this.$loop.schedule(this.CHANGE_TEXT)},this.getShowInvisibles=function(){return this.$textLayer.showInvisibles},this.getDisplayIndentGuides=function(){return this.$textLayer.displayIndentGuides},this.setDisplayIndentGuides=function(e){this.$textLayer.setDisplayIndentGuides(e)&&this.$loop.schedule(this.CHANGE_TEXT)},this.$showPrintMargin=!0,this.setShowPrintMargin=function(e){this.$showPrintMargin=e,this.$updatePrintMargin()},this.getShowPrintMargin=function(){return this.$showPrintMargin},this.$printMarginColumn=80,this.setPrintMarginColumn=function(e){this.$printMarginColumn=e,this.$updatePrintMargin()},this.getPrintMarginColumn=function(){return this.$printMarginColumn},this.getShowGutter=function(){return this.showGutter},this.setShowGutter=function(e){if(this.showGutter===e)return;this.$gutter.style.display=e?\"block\":\"none\",this.showGutter=e,this.onResize(!0)},this.getFadeFoldWidgets=function(){return i.hasCssClass(this.$gutter,\"ace_fade-fold-widgets\")},this.setFadeFoldWidgets=function(e){e?i.addCssClass(this.$gutter,\"ace_fade-fold-widgets\"):i.removeCssClass(this.$gutter,\"ace_fade-fold-widgets\")},this.$highlightGutterLine=!1,this.setHighlightGutterLine=function(e){if(this.$highlightGutterLine==e)return;this.$highlightGutterLine=e;if(!this.$gutterLineHighlight){this.$gutterLineHighlight=i.createElement(\"div\"),this.$gutterLineHighlight.className=\"ace_gutter-active-line\",this.$gutter.appendChild(this.$gutterLineHighlight);return}this.$gutterLineHighlight.style.display=e?\"\":\"none\",this.$cursorLayer.$pixelPos&&this.$updateGutterLineHighlight()},this.getHighlightGutterLine=function(){return this.$highlightGutterLine},this.$updateGutterLineHighlight=function(){this.$gutterLineHighlight.style.top=this.$cursorLayer.$pixelPos.top-this.layerConfig.offset+\"px\",this.$gutterLineHighlight.style.height=this.layerConfig.lineHeight+\"px\"},this.$updatePrintMargin=function(){if(!this.$showPrintMargin&&!this.$printMarginEl)return;if(!this.$printMarginEl){var e=i.createElement(\"div\");e.className=\"ace_layer ace_print-margin-layer\",this.$printMarginEl=i.createElement(\"div\"),this.$printMarginEl.className=\"ace_print-margin\",e.appendChild(this.$printMarginEl),this.content.insertBefore(e,this.content.firstChild)}var t=this.$printMarginEl.style;t.left=this.characterWidth*this.$printMarginColumn+this.$padding+\"px\",t.visibility=this.$showPrintMargin?\"visible\":\"hidden\"},this.getContainerElement=function(){return this.container},this.getMouseEventTarget=function(){return this.content},this.getTextAreaContainer=function(){return this.container},this.$moveTextAreaToCursor=function(){if(!this.$keepTextAreaAtCursor)return;var e=this.layerConfig,t=this.$cursorLayer.$pixelPos.top,n=this.$cursorLayer.$pixelPos.left;t-=e.offset;if(t<0||t>e.height-this.lineHeight)return;var r=this.characterWidth;if(this.$composition){var i=this.textarea.value.replace(/^\\x01+/,\"\");r*=this.session.$getStringScreenWidth(i)[0]}n-=this.scrollLeft,n>this.$size.scrollerWidth-r&&(n=this.$size.scrollerWidth-r),n-=this.scrollBar.width,this.textarea.style.height=this.lineHeight+\"px\",this.textarea.style.width=r+\"px\",this.textarea.style.right=this.$size.scrollerWidth-n-r+\"px\",this.textarea.style.bottom=this.$size.height-t-this.lineHeight+\"px\"},this.getFirstVisibleRow=function(){return this.layerConfig.firstRow},this.getFirstFullyVisibleRow=function(){return this.layerConfig.firstRow+(this.layerConfig.offset===0?0:1)},this.getLastFullyVisibleRow=function(){var e=Math.floor((this.layerConfig.height+this.layerConfig.offset)/this.layerConfig.lineHeight);return this.layerConfig.firstRow-1+e},this.getLastVisibleRow=function(){return this.layerConfig.lastRow},this.$padding=null,this.setPadding=function(e){this.$padding=e,this.$textLayer.setPadding(e),this.$cursorLayer.setPadding(e),this.$markerFront.setPadding(e),this.$markerBack.setPadding(e),this.$loop.schedule(this.CHANGE_FULL),this.$updatePrintMargin()},this.getHScrollBarAlwaysVisible=function(){return this.$horizScrollAlwaysVisible},this.setHScrollBarAlwaysVisible=function(e){this.$horizScrollAlwaysVisible!=e&&(this.$horizScrollAlwaysVisible=e,(!this.$horizScrollAlwaysVisible||!this.$horizScroll)&&this.$loop.schedule(this.CHANGE_SCROLL))},this.$updateScrollBar=function(){this.scrollBar.setInnerHeight(this.layerConfig.maxHeight),this.scrollBar.setScrollTop(this.scrollTop)},this.$renderChanges=function(e,t){if(!t&&(!e||!this.session||!this.container.offsetWidth))return;(e&this.CHANGE_FULL||e&this.CHANGE_SIZE||e&this.CHANGE_TEXT||e&this.CHANGE_LINES||e&this.CHANGE_SCROLL)&&this.$computeLayerConfig();if(e&this.CHANGE_H_SCROLL){this.scroller.scrollLeft=this.scrollLeft;var n=this.scroller.scrollLeft;this.scrollLeft=n,this.session.setScrollLeft(n),this.scroller.className=this.scrollLeft==0?\"ace_scroller\":\"ace_scroller ace_scroll-left\"}if(e&this.CHANGE_FULL){this.$textLayer.checkForSizeChanges(),this.$updateScrollBar(),this.$textLayer.update(this.layerConfig),this.showGutter&&this.$gutterLayer.update(this.layerConfig),this.$markerBack.update(this.layerConfig),this.$markerFront.update(this.layerConfig),this.$cursorLayer.update(this.layerConfig),this.$moveTextAreaToCursor(),this.$highlightGutterLine&&this.$updateGutterLineHighlight();return}if(e&this.CHANGE_SCROLL){this.$updateScrollBar(),e&this.CHANGE_TEXT||e&this.CHANGE_LINES?this.$textLayer.update(this.layerConfig):this.$textLayer.scrollLines(this.layerConfig),this.showGutter&&this.$gutterLayer.update(this.layerConfig),this.$markerBack.update(this.layerConfig),this.$markerFront.update(this.layerConfig),this.$cursorLayer.update(this.layerConfig),this.$moveTextAreaToCursor(),this.$highlightGutterLine&&this.$updateGutterLineHighlight();return}e&this.CHANGE_TEXT?(this.$textLayer.update(this.layerConfig),this.showGutter&&this.$gutterLayer.update(this.layerConfig)):e&this.CHANGE_LINES?(this.$updateLines()||e&this.CHANGE_GUTTER&&this.showGutter)&&this.$gutterLayer.update(this.layerConfig):(e&this.CHANGE_TEXT||e&this.CHANGE_GUTTER)&&this.showGutter&&this.$gutterLayer.update(this.layerConfig),e&this.CHANGE_CURSOR&&(this.$cursorLayer.update(this.layerConfig),this.$moveTextAreaToCursor(),this.$highlightGutterLine&&this.$updateGutterLineHighlight()),e&(this.CHANGE_MARKER|this.CHANGE_MARKER_FRONT)&&this.$markerFront.update(this.layerConfig),e&(this.CHANGE_MARKER|this.CHANGE_MARKER_BACK)&&this.$markerBack.update(this.layerConfig),e&this.CHANGE_SIZE&&this.$updateScrollBar()},this.$computeLayerConfig=function(){var e=this.session,t=this.scrollTop%this.lineHeight,n=this.$size.scrollerHeight+this.lineHeight,r=this.$getLongestLine(),i=this.$horizScrollAlwaysVisible||this.$size.scrollerWidth-r<0,s=this.$horizScroll!==i;this.$horizScroll=i,s&&(this.scroller.style.overflowX=i?\"scroll\":\"hidden\",i||this.session.setScrollLeft(0));var o=this.session.getScreenLength()*this.lineHeight;this.session.setScrollTop(Math.max(0,Math.min(this.scrollTop,o-this.$size.scrollerHeight)));var u=Math.ceil(n/this.lineHeight)-1,a=Math.max(0,Math.round((this.scrollTop-t)/this.lineHeight)),f=a+u,l,c,h=this.lineHeight;a=e.screenToDocumentRow(a,0);var p=e.getFoldLine(a);p&&(a=p.start.row),l=e.documentToScreenRow(a,0),c=e.getRowLength(a)*h,f=Math.min(e.screenToDocumentRow(f,0),e.getLength()-1),n=this.$size.scrollerHeight+e.getRowLength(f)*h+c,t=this.scrollTop-l*h,this.layerConfig={width:r,padding:this.$padding,firstRow:a,firstRowScreen:l,lastRow:f,lineHeight:h,characterWidth:this.characterWidth,minHeight:n,maxHeight:o,offset:t,height:this.$size.scrollerHeight},this.$gutterLayer.element.style.marginTop=-t+\"px\",this.content.style.marginTop=-t+\"px\",this.content.style.width=r+2*this.$padding+\"px\",this.content.style.height=n+\"px\",s&&this.onResize(!0)},this.$updateLines=function(){var e=this.$changedLines.firstRow,t=this.$changedLines.lastRow;this.$changedLines=null;var n=this.layerConfig;if(e>n.lastRow+1)return;if(t<n.firstRow)return;if(t===Infinity){this.showGutter&&this.$gutterLayer.update(n),this.$textLayer.update(n);return}return this.$textLayer.updateLines(n,e,t),!0},this.$getLongestLine=function(){var e=this.session.getScreenWidth();return this.$textLayer.showInvisibles&&(e+=1),Math.max(this.$size.scrollerWidth-2*this.$padding,Math.round(e*this.characterWidth))},this.updateFrontMarkers=function(){this.$markerFront.setMarkers(this.session.getMarkers(!0)),this.$loop.schedule(this.CHANGE_MARKER_FRONT)},this.updateBackMarkers=function(){this.$markerBack.setMarkers(this.session.getMarkers()),this.$loop.schedule(this.CHANGE_MARKER_BACK)},this.addGutterDecoration=function(e,t){this.$gutterLayer.addGutterDecoration(e,t)},this.removeGutterDecoration=function(e,t){this.$gutterLayer.removeGutterDecoration(e,t)},this.updateBreakpoints=function(e){this.$loop.schedule(this.CHANGE_GUTTER)},this.setAnnotations=function(e){this.$gutterLayer.setAnnotations(e),this.$loop.schedule(this.CHANGE_GUTTER)},this.updateCursor=function(){this.$loop.schedule(this.CHANGE_CURSOR)},this.hideCursor=function(){this.$cursorLayer.hideCursor()},this.showCursor=function(){this.$cursorLayer.showCursor()},this.scrollSelectionIntoView=function(e,t,n){this.scrollCursorIntoView(e,n),this.scrollCursorIntoView(t,n)},this.scrollCursorIntoView=function(e,t){if(this.$size.scrollerHeight===0)return;var n=this.$cursorLayer.getPixelPosition(e),r=n.left,i=n.top;this.scrollTop>i?(t&&(i-=t*this.$size.scrollerHeight),this.session.setScrollTop(i)):this.scrollTop+this.$size.scrollerHeight<i+this.lineHeight&&(t&&(i+=t*this.$size.scrollerHeight),this.session.setScrollTop(i+this.lineHeight-this.$size.scrollerHeight));var s=this.scrollLeft;s>r?(r<this.$padding+2*this.layerConfig.characterWidth&&(r=0),this.session.setScrollLeft(r)):s+this.$size.scrollerWidth<r+this.characterWidth&&this.session.setScrollLeft(Math.round(r+this.characterWidth-this.$size.scrollerWidth))},this.getScrollTop=function(){return this.session.getScrollTop()},this.getScrollLeft=function(){return this.session.getScrollLeft()},this.getScrollTopRow=function(){return this.scrollTop/this.lineHeight},this.getScrollBottomRow=function(){return Math.max(0,Math.floor((this.scrollTop+this.$size.scrollerHeight)/this.lineHeight)-1)},this.scrollToRow=function(e){this.session.setScrollTop(e*this.lineHeight)},this.alignCursor=function(e,t){typeof e==\"number\"&&(e={row:e,column:0});var n=this.$cursorLayer.getPixelPosition(e),r=this.$size.scrollerHeight-this.lineHeight,i=n.top-r*(t||0);return this.session.setScrollTop(i),i},this.STEPS=8,this.$calcSteps=function(e,t){var n=0,r=this.STEPS,i=[],s=function(e,t,n){return n*(Math.pow(e-1,3)+1)+t};for(n=0;n<r;++n)i.push(s(n/this.STEPS,e,t-e));return i},this.scrollToLine=function(e,t,n,r){var i=this.$cursorLayer.getPixelPosition({row:e,column:0}),s=i.top;t&&(s-=this.$size.scrollerHeight/2);var o=this.scrollTop;this.session.setScrollTop(s),n!==!1&&this.animateScrolling(o,r)},this.animateScrolling=function(e,t){var n=this.scrollTop;if(this.$animatedScroll&&Math.abs(e-n)<1e5){var r=this,i=r.$calcSteps(e,n);this.$inScrollAnimation=!0,clearInterval(this.$timer),r.session.setScrollTop(i.shift()),this.$timer=setInterval(function(){i.length?(r.session.setScrollTop(i.shift()),r.session.$scrollTop=n):n!=null?(r.session.$scrollTop=-1,r.session.setScrollTop(n),n=null):(r.$timer=clearInterval(r.$timer),r.$inScrollAnimation=!1,t&&t())},10)}},this.scrollToY=function(e){this.scrollTop!==e&&(this.$loop.schedule(this.CHANGE_SCROLL),this.scrollTop=e)},this.scrollToX=function(e){e<0&&(e=0),this.scrollLeft!==e&&(this.scrollLeft=e),this.$loop.schedule(this.CHANGE_H_SCROLL)},this.scrollBy=function(e,t){t&&this.session.setScrollTop(this.session.getScrollTop()+t),e&&this.session.setScrollLeft(this.session.getScrollLeft()+e)},this.isScrollableBy=function(e,t){if(t<0&&this.session.getScrollTop()>0)return!0;if(t>0&&this.session.getScrollTop()+this.$size.scrollerHeight<this.layerConfig.maxHeight)return!0},this.pixelToScreenCoordinates=function(e,t){var n=this.scroller.getBoundingClientRect(),r=(e+this.scrollLeft-n.left-this.$padding)/this.characterWidth,i=Math.floor((t+this.scrollTop-n.top)/this.lineHeight),s=Math.round(r);return{row:i,column:s,side:r-s>0?1:-1}},this.screenToTextCoordinates=function(e,t){var n=this.scroller.getBoundingClientRect(),r=Math.round((e+this.scrollLeft-n.left-this.$padding)/this.characterWidth),i=Math.floor((t+this.scrollTop-n.top)/this.lineHeight);return this.session.screenToDocumentPosition(i,Math.max(r,0))},this.textToScreenCoordinates=function(e,t){var n=this.scroller.getBoundingClientRect(),r=this.session.documentToScreenPosition(e,t),i=this.$padding+Math.round(r.column*this.characterWidth),s=r.row*this.lineHeight;return{pageX:n.left+i-this.scrollLeft,pageY:n.top+s-this.scrollTop}},this.visualizeFocus=function(){i.addCssClass(this.container,\"ace_focus\")},this.visualizeBlur=function(){i.removeCssClass(this.container,\"ace_focus\")},this.showComposition=function(e){this.$composition||(this.$composition={keepTextAreaAtCursor:this.$keepTextAreaAtCursor,cssText:this.textarea.style.cssText}),this.$keepTextAreaAtCursor=!0,i.addCssClass(this.textarea,\"ace_composition\"),this.textarea.style.cssText=\"\",this.$moveTextAreaToCursor()},this.setCompositionText=function(e){this.$moveTextAreaToCursor()},this.hideComposition=function(){if(!this.$composition)return;i.removeCssClass(this.textarea,\"ace_composition\"),this.$keepTextAreaAtCursor=this.$composition.keepTextAreaAtCursor,this.textarea.style.cssText=this.$composition.cssText,this.$composition=null},this._loadTheme=function(e,t){},this.setTheme=function(e){function r(e){i.importCssString(e.cssText,e.cssClass,t.container.ownerDocument),t.theme&&i.removeCssClass(t.container,t.theme.cssClass),t.$theme=e.cssClass,t.theme=e,i.addCssClass(t.container,e.cssClass),i.setCssClass(t.container,\"ace_dark\",e.isDark);var n=e.padding||4;t.$padding&&n!=t.$padding&&t.setPadding(n),t.$size&&(t.$size.width=0,t.onResize()),t._dispatchEvent(\"themeLoaded\",{theme:e})}var t=this;this.$themeValue=e,t._dispatchEvent(\"themeChange\",{theme:e});if(!e||typeof e==\"string\"){var n=e||\"ace/theme/textmate\";u.loadModule([\"theme\",n],r)}else r(e)},this.getTheme=function(){return this.$themeValue},this.setStyle=function(t,n){i.setCssClass(this.container,t,n!=0)},this.unsetStyle=function(t){i.removeCssClass(this.container,t)},this.destroy=function(){this.$textLayer.destroy(),this.$cursorLayer.destroy()}}).call(g.prototype),t.VirtualRenderer=g}),ace.define(\"ace/layer/gutter\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/lib/event_emitter\"],function(e,t,n){var r=e(\"../lib/dom\"),i=e(\"../lib/oop\"),s=e(\"../lib/lang\"),o=e(\"../lib/event_emitter\").EventEmitter,u=function(e){this.element=r.createElement(\"div\"),this.element.className=\"ace_layer ace_gutter-layer\",e.appendChild(this.element),this.setShowFoldWidgets(this.$showFoldWidgets),this.gutterWidth=0,this.$annotations=[],this.$updateAnnotations=this.$updateAnnotations.bind(this)};(function(){i.implement(this,o),this.setSession=function(e){this.session&&this.session.removeEventListener(\"change\",this.$updateAnnotations),this.session=e,e.on(\"change\",this.$updateAnnotations)},this.addGutterDecoration=function(e,t){window.console&&console.warn&&console.warn(\"deprecated use session.addGutterDecoration\"),this.session.addGutterDecoration(e,t)},this.removeGutterDecoration=function(e,t){window.console&&console.warn&&console.warn(\"deprecated use session.removeGutterDecoration\"),this.session.removeGutterDecoration(e,t)},this.setAnnotations=function(e){this.$annotations=[];var t,n;for(var r=0;r<e.length;r++){var i=e[r],n=i.row,t=this.$annotations[n];t||(t=this.$annotations[n]={text:[]});var o=i.text;o=o?s.escapeHTML(o):i.html||\"\",t.text.indexOf(o)===-1&&t.text.push(o);var u=i.type;u==\"error\"?t.className=\" ace_error\":u==\"warning\"&&t.className!=\" ace_error\"?t.className=\" ace_warning\":u==\"info\"&&!t.className&&(t.className=\" ace_info\")}},this.$updateAnnotations=function(e){if(!this.$annotations.length)return;var t=e.data,n=t.range,r=n.start.row,i=n.end.row-r;if(i!==0)if(t.action==\"removeText\"||t.action==\"removeLines\")this.$annotations.splice(r,i+1,null);else{var s=Array(i+1);s.unshift(r,1),this.$annotations.splice.apply(this.$annotations,s)}},this.update=function(e){var t={className:\"\"},n=[],i=e.firstRow,s=e.lastRow,o=this.session.getNextFoldLine(i),u=o?o.start.row:Infinity,a=this.$showFoldWidgets&&this.session.foldWidgets,f=this.session.$breakpoints,l=this.session.$decorations,c=0;for(;;){i>u&&(i=o.end.row+1,o=this.session.getNextFoldLine(i,o),u=o?o.start.row:Infinity);if(i>s)break;var h=this.$annotations[i]||t;n.push(\"<div class='ace_gutter-cell \",f[i]||\"\",l[i]||\"\",h.className,\"' style='height:\",this.session.getRowLength(i)*e.lineHeight,\"px;'>\",c=i+1);if(a){var p=a[i];p==null&&(p=a[i]=this.session.getFoldWidget(i)),p&&n.push(\"<span class='ace_fold-widget ace_\",p,p==\"start\"&&i==u&&i<o.end.row?\" ace_closed\":\" ace_open\",\"' style='height:\",e.lineHeight,\"px\",\"'></span>\")}n.push(\"</div>\"),i++}this.element=r.setInnerHtml(this.element,n.join(\"\")),this.element.style.height=e.minHeight+\"px\",this.session.$useWrapMode&&(c=this.session.getLength());var d=(\"\"+c).length*e.characterWidth,v=this.$padding||this.$computePadding();d+=v.left+v.right,d!==this.gutterWidth&&(this.gutterWidth=d,this.element.style.width=Math.ceil(this.gutterWidth)+\"px\",this._emit(\"changeGutterWidth\",d))},this.$showFoldWidgets=!0,this.setShowFoldWidgets=function(e){e?r.addCssClass(this.element,\"ace_folding-enabled\"):r.removeCssClass(this.element,\"ace_folding-enabled\"),this.$showFoldWidgets=e,this.$padding=null},this.getShowFoldWidgets=function(){return this.$showFoldWidgets},this.$computePadding=function(){if(!this.element.firstChild)return{left:0,right:0};var e=r.computedStyle(this.element.firstChild);return this.$padding={},this.$padding.left=parseInt(e.paddingLeft)+1,this.$padding.right=parseInt(e.paddingRight),this.$padding},this.getRegion=function(e){var t=this.$padding||this.$computePadding(),n=this.element.getBoundingClientRect();if(e.x<t.left+n.left)return\"markers\";if(this.$showFoldWidgets&&e.x>n.right-t.right)return\"foldWidgets\"}}).call(u.prototype),t.Gutter=u}),ace.define(\"ace/layer/marker\",[\"require\",\"exports\",\"module\",\"ace/range\",\"ace/lib/dom\"],function(e,t,n){var r=e(\"../range\").Range,i=e(\"../lib/dom\"),s=function(e){this.element=i.createElement(\"div\"),this.element.className=\"ace_layer ace_marker-layer\",e.appendChild(this.element)};(function(){this.$padding=0,this.setPadding=function(e){this.$padding=e},this.setSession=function(e){this.session=e},this.setMarkers=function(e){this.markers=e},this.update=function(e){var e=e||this.config;if(!e)return;this.config=e;var t=[];for(var n in this.markers){var r=this.markers[n];if(!r.range){r.update(t,this,this.session,e);continue}var s=r.range.clipRows(e.firstRow,e.lastRow);if(s.isEmpty())continue;s=s.toScreenRange(this.session);if(r.renderer){var o=this.$getTop(s.start.row,e),u=this.$padding+s.start.column*e.characterWidth;r.renderer(t,s,u,o,e)}else r.type==\"fullLine\"?this.drawFullLineMarker(t,s,r.clazz,e):s.isMultiLine()?r.type==\"text\"?this.drawTextMarker(t,s,r.clazz,e):this.drawMultiLineMarker(t,s,r.clazz,e):this.drawSingleLineMarker(t,s,r.clazz+\" ace_start\",e)}this.element=i.setInnerHtml(this.element,t.join(\"\"))},this.$getTop=function(e,t){return(e-t.firstRowScreen)*t.lineHeight},this.drawTextMarker=function(e,t,n,i){var s=t.start.row,o=new r(s,t.start.column,s,this.session.getScreenLastRowColumn(s));this.drawSingleLineMarker(e,o,n+\" ace_start\",i,1,\"text\"),s=t.end.row,o=new r(s,0,s,t.end.column),this.drawSingleLineMarker(e,o,n,i,0,\"text\");for(s=t.start.row+1;s<t.end.row;s++)o.start.row=s,o.end.row=s,o.end.column=this.session.getScreenLastRowColumn(s),this.drawSingleLineMarker(e,o,n,i,1,\"text\")},this.drawMultiLineMarker=function(e,t,n,r,i){var s=this.$padding,o=r.lineHeight,u=this.$getTop(t.start.row,r),a=s+t.start.column*r.characterWidth;e.push(\"<div class='\",n,\" ace_start' style='\",\"height:\",o,\"px;\",\"right:0;\",\"top:\",u,\"px;\",\"left:\",a,\"px;'></div>\"),u=this.$getTop(t.end.row,r);var f=t.end.column*r.characterWidth;e.push(\"<div class='\",n,\"' style='\",\"height:\",o,\"px;\",\"width:\",f,\"px;\",\"top:\",u,\"px;\",\"left:\",s,\"px;'></div>\"),o=(t.end.row-t.start.row-1)*r.lineHeight;if(o<0)return;u=this.$getTop(t.start.row+1,r),e.push(\"<div class='\",n,\"' style='\",\"height:\",o,\"px;\",\"right:0;\",\"top:\",u,\"px;\",\"left:\",s,\"px;'></div>\")},this.drawSingleLineMarker=function(e,t,n,r,i){var s=r.lineHeight,o=(t.end.column+(i||0)-t.start.column)*r.characterWidth,u=this.$getTop(t.start.row,r),a=this.$padding+t.start.column*r.characterWidth;e.push(\"<div class='\",n,\"' style='\",\"height:\",s,\"px;\",\"width:\",o,\"px;\",\"top:\",u,\"px;\",\"left:\",a,\"px;'></div>\")},this.drawFullLineMarker=function(e,t,n,r){var i=this.$getTop(t.start.row,r),s=r.lineHeight;t.start.row!=t.end.row&&(s+=this.$getTop(t.end.row,r)-i),e.push(\"<div class='\",n,\"' style='\",\"height:\",s,\"px;\",\"top:\",i,\"px;\",\"left:0;right:0;'></div>\")}}).call(s.prototype),t.Marker=s}),ace.define(\"ace/layer/text\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/dom\",\"ace/lib/lang\",\"ace/lib/useragent\",\"ace/lib/event_emitter\"],function(e,t,n){var r=e(\"../lib/oop\"),i=e(\"../lib/dom\"),s=e(\"../lib/lang\"),o=e(\"../lib/useragent\"),u=e(\"../lib/event_emitter\").EventEmitter,a=function(e){this.element=i.createElement(\"div\"),this.element.className=\"ace_layer ace_text-layer\",e.appendChild(this.element),this.$characterSize={width:0,height:0},this.checkForSizeChanges(),this.$pollSizeChanges()};(function(){r.implement(this,u),this.EOF_CHAR=\"¶\",this.EOL_CHAR=\"¬\",this.TAB_CHAR=\"→\",this.SPACE_CHAR=\"·\",this.$padding=0,this.setPadding=function(e){this.$padding=e,this.element.style.padding=\"0 \"+e+\"px\"},this.getLineHeight=function(){return this.$characterSize.height||1},this.getCharacterWidth=function(){return this.$characterSize.width||1},this.checkForSizeChanges=function(){var e=this.$measureSizes();if(e&&(this.$characterSize.width!==e.width||this.$characterSize.height!==e.height)){this.$measureNode.style.fontWeight=\"bold\";var t=this.$measureSizes();this.$measureNode.style.fontWeight=\"\",this.$characterSize=e,this.allowBoldFonts=t&&t.width===e.width&&t.height===e.height,this._emit(\"changeCharacterSize\",{data:e})}},this.$pollSizeChanges=function(){var e=this;this.$pollSizeChangesTimer=setInterval(function(){e.checkForSizeChanges()},500)},this.$fontStyles={fontFamily:1,fontSize:1,fontWeight:1,fontStyle:1,lineHeight:1},this.$measureSizes=o.isIE||o.isOldGecko?function(){var e=1e3;if(!this.$measureNode){var t=this.$measureNode=i.createElement(\"div\"),n=t.style;n.width=n.height=\"auto\",n.left=n.top=-e*40+\"px\",n.visibility=\"hidden\",n.position=\"fixed\",n.overflow=\"visible\",n.whiteSpace=\"nowrap\",t.innerHTML=s.stringRepeat(\"Xy\",e);if(this.element.ownerDocument.body)this.element.ownerDocument.body.appendChild(t);else{var r=this.element.parentNode;while(!i.hasCssClass(r,\"ace_editor\"))r=r.parentNode;r.appendChild(t)}}if(!this.element.offsetWidth)return null;var n=this.$measureNode.style,o=i.computedStyle(this.element);for(var u in this.$fontStyles)n[u]=o[u];var a={height:this.$measureNode.offsetHeight,width:this.$measureNode.offsetWidth/(e*2)};return a.width==0||a.height==0?null:a}:function(){if(!this.$measureNode){var e=this.$measureNode=i.createElement(\"div\"),t=e.style;t.width=t.height=\"auto\",t.left=t.top=\"-100px\",t.visibility=\"hidden\",t.position=\"fixed\",t.overflow=\"visible\",t.whiteSpace=\"nowrap\",e.innerHTML=\"X\";var n=this.element.parentNode;while(n&&!i.hasCssClass(n,\"ace_editor\"))n=n.parentNode;if(!n)return this.$measureNode=null;n.appendChild(e)}var r=this.$measureNode.getBoundingClientRect(),s={height:r.height,width:r.width};return s.width==0||s.height==0?null:s},this.setSession=function(e){this.session=e,this.$computeTabString()},this.showInvisibles=!1,this.setShowInvisibles=function(e){return this.showInvisibles==e?!1:(this.showInvisibles=e,this.$computeTabString(),!0)},this.displayIndentGuides=!0,this.setDisplayIndentGuides=function(e){return this.displayIndentGuides==e?!1:(this.displayIndentGuides=e,this.$computeTabString(),!0)},this.$tabStrings=[],this.onChangeTabSize=this.$computeTabString=function(){var e=this.session.getTabSize();this.tabSize=e;var t=this.$tabStrings=[0];for(var n=1;n<e+1;n++)this.showInvisibles?t.push(\"<span class='ace_invisible'>\"+this.TAB_CHAR+s.stringRepeat(\" \",n-1)+\"</span>\"):t.push(s.stringRepeat(\" \",n));if(this.displayIndentGuides){this.$indentGuideRe=/\\s\\S| \\t|\\t |\\s$/;var r=\"ace_indent-guide\";if(this.showInvisibles){r+=\" ace_invisible\";var i=s.stringRepeat(this.SPACE_CHAR,this.tabSize),o=this.TAB_CHAR+s.stringRepeat(\" \",this.tabSize-1)}else var i=s.stringRepeat(\" \",this.tabSize),o=i;this.$tabStrings[\" \"]=\"<span class='\"+r+\"'>\"+i+\"</span>\",this.$tabStrings[\"\t\"]=\"<span class='\"+r+\"'>\"+o+\"</span>\"}},this.updateLines=function(e,t,n){(this.config.lastRow!=e.lastRow||this.config.firstRow!=e.firstRow)&&this.scrollLines(e),this.config=e;var r=Math.max(t,e.firstRow),s=Math.min(n,e.lastRow),o=this.element.childNodes,u=0;for(var a=e.firstRow;a<r;a++){var f=this.session.getFoldLine(a);if(f){if(f.containsRow(r)){r=f.start.row;break}a=f.end.row}u++}var a=r,f=this.session.getNextFoldLine(a),l=f?f.start.row:Infinity;for(;;){a>l&&(a=f.end.row+1,f=this.session.getNextFoldLine(a,f),l=f?f.start.row:Infinity);if(a>s)break;var c=o[u++];if(c){var h=[];this.$renderLine(h,a,!this.$useLineGroups(),a==l?f:!1),i.setInnerHtml(c,h.join(\"\"))}a++}},this.scrollLines=function(e){var t=this.config;this.config=e;if(!t||t.lastRow<e.firstRow)return this.update(e);if(e.lastRow<t.firstRow)return this.update(e);var n=this.element;if(t.firstRow<e.firstRow)for(var r=this.session.getFoldedRowCount(t.firstRow,e.firstRow-1);r>0;r--)n.removeChild(n.firstChild);if(t.lastRow>e.lastRow)for(var r=this.session.getFoldedRowCount(e.lastRow+1,t.lastRow);r>0;r--)n.removeChild(n.lastChild);if(e.firstRow<t.firstRow){var i=this.$renderLinesFragment(e,e.firstRow,t.firstRow-1);n.firstChild?n.insertBefore(i,n.firstChild):n.appendChild(i)}if(e.lastRow>t.lastRow){var i=this.$renderLinesFragment(e,t.lastRow+1,e.lastRow);n.appendChild(i)}},this.$renderLinesFragment=function(e,t,n){var r=this.element.ownerDocument.createDocumentFragment(),s=t,o=this.session.getNextFoldLine(s),u=o?o.start.row:Infinity;for(;;){s>u&&(s=o.end.row+1,o=this.session.getNextFoldLine(s,o),u=o?o.start.row:Infinity);if(s>n)break;var a=i.createElement(\"div\"),f=[];this.$renderLine(f,s,!1,s==u?o:!1),a.innerHTML=f.join(\"\");if(this.$useLineGroups())a.className=\"ace_line_group\",r.appendChild(a);else{var l=a.childNodes;while(l.length)r.appendChild(l[0])}s++}return r},this.update=function(e){this.config=e;var t=[],n=e.firstRow,r=e.lastRow,s=n,o=this.session.getNextFoldLine(s),u=o?o.start.row:Infinity;for(;;){s>u&&(s=o.end.row+1,o=this.session.getNextFoldLine(s,o),u=o?o.start.row:Infinity);if(s>r)break;this.$useLineGroups()&&t.push(\"<div class='ace_line_group'>\"),this.$renderLine(t,s,!1,s==u?o:!1),this.$useLineGroups()&&t.push(\"</div>\"),s++}this.element=i.setInnerHtml(this.element,t.join(\"\"))},this.$textToken={text:!0,rparen:!0,lparen:!0},this.$renderToken=function(e,t,n,r){var i=this,o=/\\t|&|<|( +)|([\\x00-\\x1f\\x80-\\xa0\\u1680\\u180E\\u2000-\\u200f\\u2028\\u2029\\u202F\\u205F\\u3000\\uFEFF])|[\\u1100-\\u115F\\u11A3-\\u11A7\\u11FA-\\u11FF\\u2329-\\u232A\\u2E80-\\u2E99\\u2E9B-\\u2EF3\\u2F00-\\u2FD5\\u2FF0-\\u2FFB\\u3000-\\u303E\\u3041-\\u3096\\u3099-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u3190-\\u31BA\\u31C0-\\u31E3\\u31F0-\\u321E\\u3220-\\u3247\\u3250-\\u32FE\\u3300-\\u4DBF\\u4E00-\\uA48C\\uA490-\\uA4C6\\uA960-\\uA97C\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFAFF\\uFE10-\\uFE19\\uFE30-\\uFE52\\uFE54-\\uFE66\\uFE68-\\uFE6B\\uFF01-\\uFF60\\uFFE0-\\uFFE6]/g,u=function(e,n,r,o,u){if(n)return i.showInvisibles?\"<span class='ace_invisible'>\"+s.stringRepeat(i.SPACE_CHAR,e.length)+\"</span>\":s.stringRepeat(\" \",e.length);if(e==\"&\")return\"&#38;\";if(e==\"<\")return\"&#60;\";if(e==\"\t\"){var a=i.session.getScreenTabSize(t+o);return t+=a-1,i.$tabStrings[a]}if(e==\"　\"){var f=i.showInvisibles?\"ace_cjk ace_invisible\":\"ace_cjk\",l=i.showInvisibles?i.SPACE_CHAR:\"\";return t+=1,\"<span class='\"+f+\"' style='width:\"+i.config.characterWidth*2+\"px'>\"+l+\"</span>\"}return r?\"<span class='ace_invisible ace_invalid'>\"+i.SPACE_CHAR+\"</span>\":(t+=1,\"<span class='ace_cjk' style='width:\"+i.config.characterWidth*2+\"px'>\"+e+\"</span>\")},a=r.replace(o,u);if(!this.$textToken[n.type]){var f=\"ace_\"+n.type.replace(/\\./g,\" ace_\"),l=\"\";n.type==\"fold\"&&(l=\" style='width:\"+n.value.length*this.config.characterWidth+\"px;' \"),e.push(\"<span class='\",f,\"'\",l,\">\",a,\"</span>\")}else e.push(a);return t+r.length},this.renderIndentGuide=function(e,t){var n=t.search(this.$indentGuideRe);return n<=0?t:t[0]==\" \"?(n-=n%this.tabSize,e.push(s.stringRepeat(this.$tabStrings[\" \"],n/this.tabSize)),t.substr(n)):t[0]==\"\t\"?(e.push(s.stringRepeat(this.$tabStrings[\"\t\"],n)),t.substr(n)):t},this.$renderWrappedLine=function(e,t,n,r){var i=0,s=0,o=n[0],u=0;for(var a=0;a<t.length;a++){var f=t[a],l=f.value;if(a==0&&this.displayIndentGuides){i=l.length,l=this.renderIndentGuide(e,l);if(!l)continue;i-=l.length}if(i+l.length<o)u=this.$renderToken(e,u,f,l),i+=l.length;else{while(i+l.length>=o)u=this.$renderToken(e,u,f,l.substring(0,o-i)),l=l.substring(o-i),i=o,r||e.push(\"</div>\",\"<div class='ace_line' style='height:\",this.config.lineHeight,\"px'>\"),s++,u=0,o=n[s]||Number.MAX_VALUE;l.length!=0&&(i+=l.length,u=this.$renderToken(e,u,f,l))}}},this.$renderSimpleLine=function(e,t){var n=0,r=t[0],i=r.value;this.displayIndentGuides&&(i=this.renderIndentGuide(e,i)),i&&(n=this.$renderToken(e,n,r,i));for(var s=1;s<t.length;s++)r=t[s],i=r.value,n=this.$renderToken(e,n,r,i)},this.$renderLine=function(e,t,n,r){!r&&r!=0&&(r=this.session.getFoldLine(t));if(r)var i=this.$getFoldLineTokens(t,r);else var i=this.session.getTokens(t);n||e.push(\"<div class='ace_line' style='height:\",this.config.lineHeight,\"px'>\");if(i.length){var s=this.session.getRowSplitData(t);s&&s.length?this.$renderWrappedLine(e,i,s,n):this.$renderSimpleLine(e,i)}this.showInvisibles&&(r&&(t=r.end.row),e.push(\"<span class='ace_invisible'>\",t==this.session.getLength()-1?this.EOF_CHAR:this.EOL_CHAR,\"</span>\")),n||e.push(\"</div>\")},this.$getFoldLineTokens=function(e,t){function i(e,t,n){var i=0,s=0;while(s+e[i].value.length<t){s+=e[i].value.length,i++;if(i==e.length)return}if(s!=t){var o=e[i].value.substring(t-s);o.length>n-t&&(o=o.substring(0,n-t)),r.push({type:e[i].type,value:o}),s=t+o.length,i+=1}while(s<n&&i<e.length){var o=e[i].value;o.length+s>n?r.push({type:e[i].type,value:o.substring(0,n-s)}):r.push(e[i]),s+=o.length,i+=1}}var n=this.session,r=[],s=n.getTokens(e);return t.walk(function(e,t,o,u,a){e!=null?r.push({type:\"fold\",value:e}):(a&&(s=n.getTokens(t)),s.length&&i(s,u,o))},t.end.row,this.session.getLine(t.end.row).length),r},this.$useLineGroups=function(){return this.session.getUseWrapMode()},this.destroy=function(){clearInterval(this.$pollSizeChangesTimer),this.$measureNode&&this.$measureNode.parentNode.removeChild(this.$measureNode),delete this.$measureNode}}).call(a.prototype),t.Text=a}),ace.define(\"ace/layer/cursor\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\"],function(e,t,n){var r=e(\"../lib/dom\"),i=function(e){this.element=r.createElement(\"div\"),this.element.className=\"ace_layer ace_cursor-layer\",e.appendChild(this.element),this.isVisible=!1,this.isBlinking=!0,this.blinkInterval=1e3,this.smoothBlinking=!1,this.cursors=[],this.cursor=this.addCursor(),r.addCssClass(this.element,\"ace_hidden-cursors\")};(function(){this.$padding=0,this.setPadding=function(e){this.$padding=e},this.setSession=function(e){this.session=e},this.setBlinking=function(e){e!=this.isBlinking&&(this.isBlinking=e,this.restartTimer())},this.setBlinkInterval=function(e){e!=this.blinkInterval&&(this.blinkInterval=e,this.restartTimer())},this.setSmoothBlinking=function(e){e!=this.smoothBlinking&&(this.smoothBlinking=e,e?r.addCssClass(this.element,\"ace_smooth-blinking\"):r.removeCssClass(this.element,\"ace_smooth-blinking\"),this.restartTimer())},this.addCursor=function(){var e=r.createElement(\"div\");return e.className=\"ace_cursor\",this.element.appendChild(e),this.cursors.push(e),e},this.removeCursor=function(){if(this.cursors.length>1){var e=this.cursors.pop();return e.parentNode.removeChild(e),e}},this.hideCursor=function(){this.isVisible=!1,r.addCssClass(this.element,\"ace_hidden-cursors\"),this.restartTimer()},this.showCursor=function(){this.isVisible=!0,r.removeCssClass(this.element,\"ace_hidden-cursors\"),this.restartTimer()},this.restartTimer=function(){clearInterval(this.intervalId),clearTimeout(this.timeoutId),this.smoothBlinking&&r.removeCssClass(this.element,\"ace_smooth-blinking\");for(var e=this.cursors.length;e--;)this.cursors[e].style.opacity=\"\";if(!this.isBlinking||!this.blinkInterval||!this.isVisible)return;this.smoothBlinking&&setTimeout(function(){r.addCssClass(this.element,\"ace_smooth-blinking\")}.bind(this));var t=function(){this.timeoutId=setTimeout(function(){for(var e=this.cursors.length;e--;)this.cursors[e].style.opacity=0}.bind(this),.6*this.blinkInterval)}.bind(this);this.intervalId=setInterval(function(){for(var e=this.cursors.length;e--;)this.cursors[e].style.opacity=\"\";t()}.bind(this),this.blinkInterval),t()},this.getPixelPosition=function(e,t){if(!this.config||!this.session)return{left:0,top:0};e||(e=this.session.selection.getCursor());var n=this.session.documentToScreenPosition(e),r=this.$padding+n.column*this.config.characterWidth,i=(n.row-(t?this.config.firstRowScreen:0))*this.config.lineHeight;return{left:r,top:i}},this.update=function(e){this.config=e;var t=this.session.$selectionMarkers,n=0,r=0;if(t===undefined||t.length===0)t=[{cursor:null}];for(var n=t.length;n--;){var i=this.getPixelPosition(t[n].cursor,!0);if((i.top>e.height+e.offset||i.top<-e.offset)&&n>1)continue;var s=(this.cursors[r++]||this.addCursor()).style;s.left=i.left+\"px\",s.top=i.top+\"px\",s.width=e.characterWidth+\"px\",s.height=e.lineHeight+\"px\"}while(this.cursors.length>r)this.removeCursor();var o=this.session.getOverwrite();this.$setOverwrite(o),this.$pixelPos=i,this.restartTimer()},this.$setOverwrite=function(e){e!=this.overwrite&&(this.overwrite=e,e?r.addCssClass(this.element,\"ace_overwrite-cursors\"):r.removeCssClass(this.element,\"ace_overwrite-cursors\"))},this.destroy=function(){clearInterval(this.intervalId),clearTimeout(this.timeoutId)}}).call(i.prototype),t.Cursor=i}),ace.define(\"ace/scrollbar\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/dom\",\"ace/lib/event\",\"ace/lib/event_emitter\"],function(e,t,n){var r=e(\"./lib/oop\"),i=e(\"./lib/dom\"),s=e(\"./lib/event\"),o=e(\"./lib/event_emitter\").EventEmitter,u=function(e){this.element=i.createElement(\"div\"),this.element.className=\"ace_scrollbar\",this.inner=i.createElement(\"div\"),this.inner.className=\"ace_scrollbar-inner\",this.element.appendChild(this.inner),e.appendChild(this.element),this.width=i.scrollbarWidth(e.ownerDocument),this.element.style.width=(this.width||15)+5+\"px\",s.addListener(this.element,\"scroll\",this.onScroll.bind(this))};(function(){r.implement(this,o),this.onScroll=function(){this.skipEvent||(this.scrollTop=this.element.scrollTop,this._emit(\"scroll\",{data:this.scrollTop})),this.skipEvent=!1},this.getWidth=function(){return this.width},this.setHeight=function(e){this.element.style.height=e+\"px\"},this.setInnerHeight=function(e){this.inner.style.height=e+\"px\"},this.setScrollTop=function(e){this.scrollTop!=e&&(this.skipEvent=!0,this.scrollTop=this.element.scrollTop=e)}}).call(u.prototype),t.ScrollBar=u}),ace.define(\"ace/renderloop\",[\"require\",\"exports\",\"module\",\"ace/lib/event\"],function(e,t,n){var r=e(\"./lib/event\"),i=function(e,t){this.onRender=e,this.pending=!1,this.changes=0,this.window=t||window};(function(){this.schedule=function(e){this.changes=this.changes|e;if(!this.pending){this.pending=!0;var t=this;r.nextFrame(function(){t.pending=!1;var e;while(e=t.changes)t.changes=0,t.onRender(e)},this.window)}}}).call(i.prototype),t.RenderLoop=i}),ace.define(\"ace/multi_select\",[\"require\",\"exports\",\"module\",\"ace/range_list\",\"ace/range\",\"ace/selection\",\"ace/mouse/multi_select_handler\",\"ace/lib/event\",\"ace/lib/lang\",\"ace/commands/multi_select_commands\",\"ace/search\",\"ace/edit_session\",\"ace/editor\"],function(e,t,n){function h(e,t,n){return c.$options.wrap=!0,c.$options.needle=t,c.$options.backwards=n==-1,c.find(e)}function v(e,t){return e.row==t.row&&e.column==t.column}function m(e){e.$onAddRange=e.$onAddRange.bind(e),e.$onRemoveRange=e.$onRemoveRange.bind(e),e.$onMultiSelect=e.$onMultiSelect.bind(e),e.$onSingleSelect=e.$onSingleSelect.bind(e),t.onSessionChange.call(e,e),e.on(\"changeSession\",t.onSessionChange.bind(e)),e.on(\"mousedown\",o),e.commands.addCommands(f.defaultCommands),g(e)}function g(e){function i(){n&&(r.style.cursor=\"\",n=!1)}var t=e.textInput.getElement(),n=!1,r=e.renderer.content;u.addListener(t,\"keydown\",function(e){e.keyCode==18&&!(e.ctrlKey||e.shiftKey||e.metaKey)?n||(r.style.cursor=\"crosshair\",n=!0):n&&(r.style.cursor=\"\")}),u.addListener(t,\"keyup\",i),u.addListener(t,\"blur\",i)}var r=e(\"./range_list\").RangeList,i=e(\"./range\").Range,s=e(\"./selection\").Selection,o=e(\"./mouse/multi_select_handler\").onMouseDown,u=e(\"./lib/event\"),a=e(\"./lib/lang\"),f=e(\"./commands/multi_select_commands\");t.commands=f.defaultCommands.concat(f.multiSelectCommands);var l=e(\"./search\").Search,c=new l,p=e(\"./edit_session\").EditSession;(function(){this.getSelectionMarkers=function(){return this.$selectionMarkers}}).call(p.prototype),function(){this.ranges=null,this.rangeList=null,this.addRange=function(e,t){if(!e)return;if(!this.inMultiSelectMode&&this.rangeCount==0){var n=this.toOrientedRange();if(e.intersects(n))return t||this.fromOrientedRange(e);this.rangeList.add(n),this.$onAddRange(n)}e.cursor||(e.cursor=e.end);var r=this.rangeList.add(e);return this.$onAddRange(e),r.length&&this.$onRemoveRange(r),this.rangeCount>1&&!this.inMultiSelectMode&&(this._emit(\"multiSelect\"),this.inMultiSelectMode=!0,this.session.$undoSelect=!1,this.rangeList.attach(this.session)),t||this.fromOrientedRange(e)},this.toSingleRange=function(e){e=e||this.ranges[0];var t=this.rangeList.removeAll();t.length&&this.$onRemoveRange(t),e&&this.fromOrientedRange(e)},this.substractPoint=function(e){var t=this.rangeList.substractPoint(e);if(t)return this.$onRemoveRange(t),t[0]},this.mergeOverlappingRanges=function(){var e=this.rangeList.merge();e.length?this.$onRemoveRange(e):this.ranges[0]&&this.fromOrientedRange(this.ranges[0])},this.$onAddRange=function(e){this.rangeCount=this.rangeList.ranges.length,this.ranges.unshift(e),this._emit(\"addRange\",{range:e})},this.$onRemoveRange=function(e){this.rangeCount=this.rangeList.ranges.length;if(this.rangeCount==1&&this.inMultiSelectMode){var t=this.rangeList.ranges.pop();e.push(t),this.rangeCount=0}for(var n=e.length;n--;){var r=this.ranges.indexOf(e[n]);this.ranges.splice(r,1)}this._emit(\"removeRange\",{ranges:e}),this.rangeCount==0&&this.inMultiSelectMode&&(this.inMultiSelectMode=!1,this._emit(\"singleSelect\"),this.session.$undoSelect=!0,this.rangeList.detach(this.session)),t=t||this.ranges[0],t&&!t.isEqual(this.getRange())&&this.fromOrientedRange(t)},this.$initRangeList=function(){if(this.rangeList)return;this.rangeList=new r,this.ranges=[],this.rangeCount=0},this.getAllRanges=function(){return this.rangeList.ranges.concat()},this.splitIntoLines=function(){if(this.rangeCount>1){var e=this.rangeList.ranges,t=e[e.length-1],n=i.fromPoints(e[0].start,t.end);this.toSingleRange(),this.setSelectionRange(n,t.cursor==t.start)}else{var n=this.getRange(),r=this.isBackwards(),s=n.start.row,o=n.end.row;if(s==o){if(r)var u=n.end,a=n.start;else var u=n.start,a=n.end;this.addRange(i.fromPoints(a,a)),this.addRange(i.fromPoints(u,u));return}var f=[],l=this.getLineRange(s,!0);l.start.column=n.start.column,f.push(l);for(var c=s+1;c<o;c++)f.push(this.getLineRange(c,!0));l=this.getLineRange(o,!0),l.end.column=n.end.column,f.push(l),f.forEach(this.addRange,this)}},this.toggleBlockSelection=function(){if(this.rangeCount>1){var e=this.rangeList.ranges,t=e[e.length-1],n=i.fromPoints(e[0].start,t.end);this.toSingleRange(),this.setSelectionRange(n,t.cursor==t.start)}else{var r=this.session.documentToScreenPosition(this.selectionLead),s=this.session.documentToScreenPosition(this.selectionAnchor),o=this.rectangularRangeBlock(r,s);o.forEach(this.addRange,this)}},this.rectangularRangeBlock=function(e,t,n){var r=[],s=e.column<t.column;if(s)var o=e.column,u=t.column;else var o=t.column,u=e.column;var a=e.row<t.row;if(a)var f=e.row,l=t.row;else var f=t.row,l=e.row;o<0&&(o=0),f<0&&(f=0),f==l&&(n=!0);for(var c=f;c<=l;c++){var h=i.fromPoints(this.session.screenToDocumentPosition(c,o),this.session.screenToDocumentPosition(c,u));if(h.isEmpty()){if(p&&v(h.end,p))break;var p=h.end}h.cursor=s?h.start:h.end,r.push(h)}a&&r.reverse();if(!n){var d=r.length-1;while(r[d].isEmpty()&&d>0)d--;if(d>0){var m=0;while(r[m].isEmpty())m++}for(var g=d;g>=m;g--)r[g].isEmpty()&&r.splice(g,1)}return r}}.call(s.prototype);var d=e(\"./editor\").Editor;(function(){this.updateSelectionMarkers=function(){this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.addSelectionMarker=function(e){e.cursor||(e.cursor=e.end);var t=this.getSelectionStyle();return e.marker=this.session.addMarker(e,\"ace_selection\",t),this.session.$selectionMarkers.push(e),this.session.selectionMarkerCount=this.session.$selectionMarkers.length,e},this.removeSelectionMarker=function(e){if(!e.marker)return;this.session.removeMarker(e.marker);var t=this.session.$selectionMarkers.indexOf(e);t!=-1&&this.session.$selectionMarkers.splice(t,1),this.session.selectionMarkerCount=this.session.$selectionMarkers.length},this.removeSelectionMarkers=function(e){var t=this.session.$selectionMarkers;for(var n=e.length;n--;){var r=e[n];if(!r.marker)continue;this.session.removeMarker(r.marker);var i=t.indexOf(r);i!=-1&&t.splice(i,1)}this.session.selectionMarkerCount=t.length},this.$onAddRange=function(e){this.addSelectionMarker(e.range),this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.$onRemoveRange=function(e){this.removeSelectionMarkers(e.ranges),this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.$onMultiSelect=function(e){if(this.inMultiSelectMode)return;this.inMultiSelectMode=!0,this.setStyle(\"ace_multiselect\"),this.keyBinding.addKeyboardHandler(f.keyboardHandler),this.commands.on(\"exec\",this.$onMultiSelectExec),this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.$onSingleSelect=function(e){if(this.session.multiSelect.inVirtualMode)return;this.inMultiSelectMode=!1,this.unsetStyle(\"ace_multiselect\"),this.keyBinding.removeKeyboardHandler(f.keyboardHandler),this.commands.removeEventListener(\"exec\",this.$onMultiSelectExec),this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.$onMultiSelectExec=function(e){var t=e.command,n=e.editor;if(!n.multiSelect)return;t.multiSelectAction?t.multiSelectAction==\"forEach\"?n.forEachSelection(t,e.args):t.multiSelectAction==\"single\"?(n.exitMultiSelectMode(),t.exec(n,e.args||{})):t.multiSelectAction(n,e.args||{}):(t.exec(n,e.args||{}),n.multiSelect.addRange(n.multiSelect.toOrientedRange()),n.multiSelect.mergeOverlappingRanges()),e.preventDefault()},this.forEachSelection=function(e,t){if(this.inVirtualSelectionMode)return;var n=this.session,r=this.selection,i=r.rangeList,o=r._eventRegistry;r._eventRegistry={};var u=new s(n);this.inVirtualSelectionMode=!0;for(var a=i.ranges.length;a--;)u.fromOrientedRange(i.ranges[a]),this.selection=n.selection=u,e.exec(this,t||{}),u.toOrientedRange(i.ranges[a]);u.detach(),this.selection=n.selection=r,this.inVirtualSelectionMode=!1,r._eventRegistry=o,r.mergeOverlappingRanges(),this.onCursorChange(),this.onSelectionChange()},this.exitMultiSelectMode=function(){if(this.inVirtualSelectionMode)return;this.multiSelect.toSingleRange()},this.getCopyText=function(){var e=\"\";if(this.inMultiSelectMode){var t=this.multiSelect.rangeList.ranges;e=[];for(var n=0;n<t.length;n++)e.push(this.session.getTextRange(t[n]));e=e.join(this.session.getDocument().getNewLineCharacter())}else this.selection.isEmpty()||(e=this.session.getTextRange(this.getSelectionRange()));return e},this.onPaste=function(e){if(this.$readOnly)return;this._emit(\"paste\",e);if(!this.inMultiSelectMode)return this.insert(e);var t=e.split(/\\r\\n|\\r|\\n/),n=this.selection.rangeList.ranges;if(t.length>n.length||t.length<=2||!t[1])return this.commands.exec(\"insertstring\",this,e);for(var r=n.length;r--;){var i=n[r];i.isEmpty()||this.session.remove(i),this.session.insert(i.start,t[r])}},this.findAll=function(e,t,n){t=t||{},t.needle=e||t.needle,this.$search.set(t);var r=this.$search.findAll(this.session);if(!r.length)return 0;this.$blockScrolling+=1;var i=this.multiSelect;n||i.toSingleRange(r[0]);for(var s=r.length;s--;)i.addRange(r[s],!0);return this.$blockScrolling-=1,r.length},this.selectMoreLines=function(e,t){var n=this.selection.toOrientedRange(),r=n.cursor==n.end,s=this.session.documentToScreenPosition(n.cursor);this.selection.$desiredColumn&&(s.column=this.selection.$desiredColumn);var o=this.session.screenToDocumentPosition(s.row+e,s.column);if(!n.isEmpty())var u=this.session.documentToScreenPosition(r?n.end:n.start),a=this.session.screenToDocumentPosition(u.row+e,u.column);else var a=o;if(r){var f=i.fromPoints(o,a);f.cursor=f.start}else{var f=i.fromPoints(a,o);f.cursor=f.end}f.desiredColumn=s.column;if(!this.selection.inMultiSelectMode)this.selection.addRange(n);else if(t)var l=n.cursor;this.selection.addRange(f),l&&this.selection.substractPoint(l)},this.transposeSelections=function(e){var t=this.session,n=t.multiSelect,r=n.ranges;for(var i=r.length;i--;){var s=r[i];if(s.isEmpty()){var o=t.getWordRange(s.start.row,s.start.column);s.start.row=o.start.row,s.start.column=o.start.column,s.end.row=o.end.row,s.end.column=o.end.column}}n.mergeOverlappingRanges();var u=[];for(var i=r.length;i--;){var s=r[i];u.unshift(t.getTextRange(s))}e<0?u.unshift(u.pop()):u.push(u.shift());for(var i=r.length;i--;){var s=r[i],o=s.clone();t.replace(s,u[i]),s.start.row=o.start.row,s.start.column=o.start.column}},this.selectMore=function(e,t){var n=this.session,r=n.multiSelect,i=r.toOrientedRange();if(i.isEmpty()){var i=n.getWordRange(i.start.row,i.start.column);i.cursor=i.end,this.multiSelect.addRange(i)}var s=n.getTextRange(i),o=h(n,s,e);o&&(o.cursor=e==-1?o.start:o.end,this.multiSelect.addRange(o)),t&&this.multiSelect.substractPoint(i.cursor)},this.alignCursors=function(){var e=this.session,t=e.multiSelect,n=t.ranges;if(!n.length){var r=this.selection.getRange(),s=r.start.row,o=r.end.row,u=this.session.doc.removeLines(s,o);u=this.$reAlignText(u),this.session.doc.insertLines(s,u),r.start.column=0,r.end.column=u[u.length-1].length,this.selection.setRange(r)}else{var f=-1,l=n.filter(function(e){if(e.cursor.row==f)return!0;f=e.cursor.row});t.$onRemoveRange(l);var c=0,h=Infinity,p=n.map(function(t){var n=t.cursor,r=e.getLine(n.row),i=r.substr(n.column).search(/\\S/g);return i==-1&&(i=0),n.column>c&&(c=n.column),i<h&&(h=i),i});n.forEach(function(t,n){var r=t.cursor,s=c-r.column,o=p[n]-h;s>o?e.insert(r,a.stringRepeat(\" \",s-o)):e.remove(new i(r.row,r.column,r.row,r.column-s+o)),t.start.column=t.end.column=c,t.start.row=t.end.row=r.row,t.cursor=t.end}),t.fromOrientedRange(n[0]),this.renderer.updateCursor(),this.renderer.updateBackMarkers()}},this.$reAlignText=function(e){function o(e){return a.stringRepeat(\" \",e)}function u(e){return e[2]?o(r)+e[2]+o(i-e[2].length+s)+e[4].replace(/^([=:])\\s+/,\"$1 \"):e[0]}function f(e){return e[2]?o(r+i-e[2].length)+e[2]+o(s,\" \")+e[4].replace(/^([=:])\\s+/,\"$1 \"):e[0]}function l(e){return e[2]?o(r)+e[2]+o(s)+e[4].replace(/^([=:])\\s+/,\"$1 \"):e[0]}var t=!0,n=!0,r,i,s;return e.map(function(e){var o=e.match(/(\\s*)(.*?)(\\s*)([=:].*)/);return o?r==null?(r=o[1].length,i=o[2].length,s=o[3].length,o):(r+i+s!=o[1].length+o[2].length+o[3].length&&(n=!1),r!=o[1].length&&(t=!1),r>o[1].length&&(r=o[1].length),i<o[2].length&&(i=o[2].length),s>o[3].length&&(s=o[3].length),o):[e]}).map(t?n?f:u:l)}}).call(d.prototype),t.onSessionChange=function(e){var t=e.session;t.multiSelect||(t.$selectionMarkers=[],t.selection.$initRangeList(),t.multiSelect=t.selection),this.multiSelect=t.multiSelect;var n=e.oldSession;n&&(n.multiSelect&&n.multiSelect.editor==this&&(n.multiSelect.editor=null),t.multiSelect.removeEventListener(\"addRange\",this.$onAddRange),t.multiSelect.removeEventListener(\"removeRange\",this.$onRemoveRange),t.multiSelect.removeEventListener(\"multiSelect\",this.$onMultiSelect),t.multiSelect.removeEventListener(\"singleSelect\",this.$onSingleSelect)),t.multiSelect.on(\"addRange\",this.$onAddRange),t.multiSelect.on(\"removeRange\",this.$onRemoveRange),t.multiSelect.on(\"multiSelect\",this.$onMultiSelect),t.multiSelect.on(\"singleSelect\",this.$onSingleSelect),this.inMultiSelectMode!=t.selection.inMultiSelectMode&&(t.selection.inMultiSelectMode?this.$onMultiSelect():this.$onSingleSelect())},t.MultiSelect=m}),ace.define(\"ace/range_list\",[\"require\",\"exports\",\"module\"],function(e,t,n){var r=function(){this.ranges=[]};(function(){this.comparePoints=function(e,t){return e.row-t.row||e.column-t.column},this.pointIndex=function(e,t){var n=this.ranges;for(var r=t||0;r<n.length;r++){var i=n[r],s=this.comparePoints(e,i.end);if(s>0)continue;return s==0?r:(s=this.comparePoints(e,i.start),s>=0?r:-r-1)}return-r-1},this.add=function(e){var t=this.pointIndex(e.start);t<0&&(t=-t-1);var n=this.pointIndex(e.end,t);return n<0?n=-n-1:n++,this.ranges.splice(t,n-t,e)},this.addList=function(e){var t=[];for(var n=e.length;n--;)t.push.call(t,this.add(e[n]));return t},this.substractPoint=function(e){var t=this.pointIndex(e);if(t>=0)return this.ranges.splice(t,1)},this.merge=function(){var e=[],t=this.ranges,n=t[0],r;for(var i=1;i<t.length;i++){r=n,n=t[i];var s=this.comparePoints(r.end,n.start);if(s<0)continue;if(s==0&&!r.isEmpty()&&!n.isEmpty())continue;this.comparePoints(r.end,n.end)<0&&(r.end.row=n.end.row,r.end.column=n.end.column),t.splice(i,1),e.push(n),n=r,i--}return e},this.contains=function(e,t){return this.pointIndex({row:e,column:t})>=0},this.containsPoint=function(e){return this.pointIndex(e)>=0},this.rangeAtPoint=function(e){var t=this.pointIndex(e);if(t>=0)return this.ranges[t]},this.clipRows=function(e,t){var n=this.ranges;if(n[0].start.row>t||n[n.length-1].start.row<e)return[];var r=this.pointIndex({row:e,column:0});r<0&&(r=-r-1);var i=this.pointIndex({row:t,column:0},r);i<0&&(i=-i-1);var s=[];for(var o=r;o<i;o++)s.push(n[o]);return s},this.removeAll=function(){return this.ranges.splice(0,this.ranges.length)},this.attach=function(e){this.session&&this.detach(),this.session=e,this.onChange=this.$onChange.bind(this),this.session.on(\"change\",this.onChange)},this.detach=function(){if(!this.session)return;this.session.removeListener(\"change\",this.onChange),this.session=null},this.$onChange=function(e){var t=e.data.range;if(e.data.action[0]==\"i\")var n=t.start,r=t.end;else var r=t.start,n=t.end;var i=n.row,s=r.row,o=s-i,u=-n.column+r.column,a=this.ranges;for(var f=0,l=a.length;f<l;f++){var c=a[f];if(c.end.row<i)continue;if(c.start.row>i)break;c.start.row==i&&c.start.column>=n.column&&(c.start.column+=u,c.start.row+=o),c.end.row==i&&c.end.column>=n.column&&(c.end.column+=u,c.end.row+=o)}if(o!=0&&f<l)for(;f<l;f++){var c=a[f];c.start.row+=o,c.end.row+=o}}}).call(r.prototype),t.RangeList=r}),ace.define(\"ace/mouse/multi_select_handler\",[\"require\",\"exports\",\"module\",\"ace/lib/event\"],function(e,t,n){function i(e,t){return e.row==t.row&&e.column==t.column}function s(e){var t=e.domEvent,n=t.altKey,s=t.shiftKey,o=e.getAccelKey(),u=e.getButton();if(e.editor.inMultiSelectMode&&u==2){e.editor.textInput.onContextMenu(e.domEvent);return}if(!o&&!n){u==0&&e.editor.inMultiSelectMode&&e.editor.exitMultiSelectMode();return}var a=e.editor,f=a.selection,l=a.inMultiSelectMode,c=e.getDocumentPosition(),h=f.getCursor(),p=e.inSelection()||f.isEmpty()&&i(c,h),d=e.x,v=e.y,m=function(e){d=e.clientX,v=e.clientY},g=function(){var e=a.renderer.pixelToScreenCoordinates(d,v),t=y.screenToDocumentPosition(e.row,e.column);if(i(w,e)&&i(t,f.selectionLead))return;w=e,a.selection.moveCursorToPosition(t),a.selection.clearSelection(),a.renderer.scrollCursorIntoView(),a.removeSelectionMarkers(x),x=f.rectangularRangeBlock(w,b),x.forEach(a.addSelectionMarker,a),a.updateSelectionMarkers()},y=a.session,b=a.renderer.pixelToScreenCoordinates(d,v),w=b;if(o&&!s&&!n&&u==0){if(!l&&p)return;if(!l){var E=f.toOrientedRange();a.addSelectionMarker(E)}var S=f.rangeList.rangeAtPoint(c);r.capture(a.container,function(){},function(){var e=f.toOrientedRange();S&&e.isEmpty()&&i(S.cursor,e.cursor)?f.substractPoint(e.cursor):(E&&(a.removeSelectionMarker(E),f.addRange(E)),f.addRange(e))})}else if(!s&&n&&u==0){e.stop(),l&&!o?f.toSingleRange():!l&&o&&f.addRange(),f.moveCursorToPosition(c),f.clearSelection();var x=[],T=function(e){clearInterval(C),a.removeSelectionMarkers(x);for(var t=0;t<x.length;t++)f.addRange(x[t])},N=g;r.capture(a.container,m,T);var C=setInterval(function(){N()},20);return e.preventDefault()}}var r=e(\"../lib/event\");t.onMouseDown=s}),ace.define(\"ace/commands/multi_select_commands\",[\"require\",\"exports\",\"module\",\"ace/keyboard/hash_handler\"],function(e,t,n){t.defaultCommands=[{name:\"addCursorAbove\",exec:function(e){e.selectMoreLines(-1)},bindKey:{win:\"Ctrl-Alt-Up\",mac:\"Ctrl-Alt-Up\"},readonly:!0},{name:\"addCursorBelow\",exec:function(e){e.selectMoreLines(1)},bindKey:{win:\"Ctrl-Alt-Down\",mac:\"Ctrl-Alt-Down\"},readonly:!0},{name:\"addCursorAboveSkipCurrent\",exec:function(e){e.selectMoreLines(-1,!0)},bindKey:{win:\"Ctrl-Alt-Shift-Up\",mac:\"Ctrl-Alt-Shift-Up\"},readonly:!0},{name:\"addCursorBelowSkipCurrent\",exec:function(e){e.selectMoreLines(1,!0)},bindKey:{win:\"Ctrl-Alt-Shift-Down\",mac:\"Ctrl-Alt-Shift-Down\"},readonly:!0},{name:\"selectMoreBefore\",exec:function(e){e.selectMore(-1)},bindKey:{win:\"Ctrl-Alt-Left\",mac:\"Ctrl-Alt-Left\"},readonly:!0},{name:\"selectMoreAfter\",exec:function(e){e.selectMore(1)},bindKey:{win:\"Ctrl-Alt-Right\",mac:\"Ctrl-Alt-Right\"},readonly:!0},{name:\"selectNextBefore\",exec:function(e){e.selectMore(-1,!0)},bindKey:{win:\"Ctrl-Alt-Shift-Left\",mac:\"Ctrl-Alt-Shift-Left\"},readonly:!0},{name:\"selectNextAfter\",exec:function(e){e.selectMore(1,!0)},bindKey:{win:\"Ctrl-Alt-Shift-Right\",mac:\"Ctrl-Alt-Shift-Right\"},readonly:!0},{name:\"splitIntoLines\",exec:function(e){e.multiSelect.splitIntoLines()},bindKey:{win:\"Ctrl-Alt-L\",mac:\"Ctrl-Alt-L\"},readonly:!0},{name:\"alignCursors\",exec:function(e){e.alignCursors()},bindKey:{win:\"Ctrl-Alt-A\",mac:\"Ctrl-Alt-A\"}}],t.multiSelectCommands=[{name:\"singleSelection\",bindKey:\"esc\",exec:function(e){e.exitMultiSelectMode()},readonly:!0,isAvailable:function(e){return e&&e.inMultiSelectMode}}];var r=e(\"../keyboard/hash_handler\").HashHandler;t.keyboardHandler=new r(t.multiSelectCommands)}),ace.define(\"ace/worker/worker_client\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/event_emitter\",\"ace/config\"],function(e,t,n){var r=e(\"../lib/oop\"),i=e(\"../lib/event_emitter\").EventEmitter,s=e(\"../config\"),o=function(t,n,r){this.changeListener=this.changeListener.bind(this),this.onMessage=this.onMessage.bind(this),this.onError=this.onError.bind(this);var i;if(s.get(\"packaged\"))i=s.moduleUrl(n,\"worker\");else{var o=this.$normalizePath;typeof e.supports!=\"undefined\"&&e.supports.indexOf(\"ucjs2-pinf-0\")>=0?i=e.nameToUrl(\"ace/worker/worker_sourcemint\"):(e.nameToUrl&&!e.toUrl&&(e.toUrl=e.nameToUrl),i=o(e.toUrl(\"ace/worker/worker\",null,\"_\")));var u={};t.forEach(function(t){u[t]=o(e.toUrl(t,null,\"_\").replace(/.js(\\?.*)?$/,\"\"))})}this.$worker=new Worker(i),this.$worker.postMessage({init:!0,tlns:u,module:n,classname:r}),this.callbackId=1,this.callbacks={},this.$worker.onerror=this.onError,this.$worker.onmessage=this.onMessage};(function(){r.implement(this,i),this.onError=function(e){throw window.console&&console.log&&console.log(e),e},this.onMessage=function(e){var t=e.data;switch(t.type){case\"log\":window.console&&console.log&&console.log.apply(console,t.data);break;case\"event\":this._emit(t.name,{data:t.data});break;case\"call\":var n=this.callbacks[t.id];n&&(n(t.data),delete this.callbacks[t.id])}},this.$normalizePath=function(e){return location.host?(e=e.replace(/^[a-z]+:\\/\\/[^\\/]+/,\"\"),e=location.protocol+\"//\"+location.host+(e.charAt(0)==\"/\"?\"\":location.pathname.replace(/\\/[^\\/]*$/,\"\"))+\"/\"+e.replace(/^[\\/]+/,\"\"),e):e},this.terminate=function(){this._emit(\"terminate\",{}),this.$worker.terminate(),this.$worker=null,this.$doc.removeEventListener(\"change\",this.changeListener),this.$doc=null},this.send=function(e,t){this.$worker.postMessage({command:e,args:t})},this.call=function(e,t,n){if(n){var r=this.callbackId++;this.callbacks[r]=n,t.push(r)}this.send(e,t)},this.emit=function(e,t){try{this.$worker.postMessage({event:e,data:{data:t.data}})}catch(n){}},this.attachToDocument=function(e){this.$doc&&this.terminate(),this.$doc=e,this.call(\"setValue\",[e.getValue()]),e.on(\"change\",this.changeListener)},this.changeListener=function(e){e.range={start:e.data.range.start,end:e.data.range.end},this.emit(\"change\",e)}}).call(o.prototype);var u=function(t,n,r){this.changeListener=this.changeListener.bind(this),this.callbackId=1,this.callbacks={},this.messageBuffer=[];var s=null,o=Object.create(i),u=this;this.$worker={},this.$worker.postMessage=function(e){u.messageBuffer.push(e),s&&setTimeout(a)};var a=function(){var e=u.messageBuffer.shift();e.command?s[e.command].apply(s,e.args):e.event&&o._emit(e.event,e.data)};o.postMessage=function(e){u.onMessage({data:e})},o.callback=function(e,t){this.postMessage({type:\"call\",id:t,data:e})},o.emit=function(e,t){this.postMessage({type:\"event\",name:e,data:t})},e([n],function(e){s=new e[r](o);while(u.messageBuffer.length)a()})};u.prototype=o.prototype,t.UIWorkerClient=u,t.WorkerClient=o}),ace.define(\"ace/placeholder\",[\"require\",\"exports\",\"module\",\"ace/range\",\"ace/lib/event_emitter\",\"ace/lib/oop\"],function(e,t,n){var r=e(\"./range\").Range,i=e(\"./lib/event_emitter\").EventEmitter,s=e(\"./lib/oop\"),o=function(e,t,n,r,i,s){var o=this;this.length=t,this.session=e,this.doc=e.getDocument(),this.mainClass=i,this.othersClass=s,this.$onUpdate=this.onUpdate.bind(this),this.doc.on(\"change\",this.$onUpdate),this.$others=r,this.$onCursorChange=function(){setTimeout(function(){o.onCursorChange()})},this.$pos=n;var u=e.getUndoManager().$undoStack||e.getUndoManager().$undostack||{length:-1};this.$undoStackDepth=u.length,this.setup(),e.selection.on(\"changeCursor\",this.$onCursorChange)};(function(){s.implement(this,i),this.setup=function(){var e=this,t=this.doc,n=this.session,i=this.$pos;this.pos=t.createAnchor(i.row,i.column),this.markerId=n.addMarker(new r(i.row,i.column,i.row,i.column+this.length),this.mainClass,null,!1),this.pos.on(\"change\",function(t){n.removeMarker(e.markerId),e.markerId=n.addMarker(new r(t.value.row,t.value.column,t.value.row,t.value.column+e.length),e.mainClass,null,!1)}),this.others=[],this.$others.forEach(function(n){var r=t.createAnchor(n.row,n.column);e.others.push(r)}),n.setUndoSelect(!1)},this.showOtherMarkers=function(){if(this.othersActive)return;var e=this.session,t=this;this.othersActive=!0,this.others.forEach(function(n){n.markerId=e.addMarker(new r(n.row,n.column,n.row,n.column+t.length),t.othersClass,null,!1),n.on(\"change\",function(i){e.removeMarker(n.markerId),n.markerId=e.addMarker(new r(i.value.row,i.value.column,i.value.row,i.value.column+t.length),t.othersClass,null,!1)})})},this.hideOtherMarkers=function(){if(!this.othersActive)return;this.othersActive=!1;for(var e=0;e<this.others.length;e++)this.session.removeMarker(this.others[e].markerId)},this.onUpdate=function(e){var t=e.data,n=t.range;if(n.start.row!==n.end.row)return;if(n.start.row!==this.pos.row)return;if(this.$updating)return;this.$updating=!0;var i=t.action===\"insertText\"?n.end.column-n.start.column:n.start.column-n.end.column;if(n.start.column>=this.pos.column&&n.start.column<=this.pos.column+this.length+1){var s=n.start.column-this.pos.column;this.length+=i;if(!this.session.$fromUndo){if(t.action===\"insertText\")for(var o=this.others.length-1;o>=0;o--){var u=this.others[o],a={row:u.row,column:u.column+s};u.row===n.start.row&&n.start.column<u.column&&(a.column+=i),this.doc.insert(a,t.text)}else if(t.action===\"removeText\")for(var o=this.others.length-1;o>=0;o--){var u=this.others[o],a={row:u.row,column:u.column+s};u.row===n.start.row&&n.start.column<u.column&&(a.column+=i),this.doc.remove(new r(a.row,a.column,a.row,a.column-i))}n.start.column===this.pos.column&&t.action===\"insertText\"?setTimeout(function(){this.pos.setPosition(this.pos.row,this.pos.column-i);for(var e=0;e<this.others.length;e++){var t=this.others[e],r={row:t.row,column:t.column-i};t.row===n.start.row&&n.start.column<t.column&&(r.column+=i),t.setPosition(r.row,r.column)}}.bind(this),0):n.start.column===this.pos.column&&t.action===\"removeText\"&&setTimeout(function(){for(var e=0;e<this.others.length;e++){var t=this.others[e];t.row===n.start.row&&n.start.column<t.column&&t.setPosition(t.row,t.column-i)}}.bind(this),0)}this.pos._emit(\"change\",{value:this.pos});for(var o=0;o<this.others.length;o++)this.others[o]._emit(\"change\",{value:this.others[o]})}this.$updating=!1},this.onCursorChange=function(e){if(this.$updating)return;var t=this.session.selection.getCursor();t.row===this.pos.row&&t.column>=this.pos.column&&t.column<=this.pos.column+this.length?(this.showOtherMarkers(),this._emit(\"cursorEnter\",e)):(this.hideOtherMarkers(),this._emit(\"cursorLeave\",e))},this.detach=function(){this.session.removeMarker(this.markerId),this.hideOtherMarkers(),this.doc.removeEventListener(\"change\",this.$onUpdate),this.session.selection.removeEventListener(\"changeCursor\",this.$onCursorChange),this.pos.detach();for(var e=0;e<this.others.length;e++)this.others[e].detach();this.session.setUndoSelect(!0)},this.cancel=function(){if(this.$undoStackDepth===-1)throw Error(\"Canceling placeholders only supported with undo manager attached to session.\");var e=this.session.getUndoManager(),t=(e.$undoStack||e.$undostack).length-this.$undoStackDepth;for(var n=0;n<t;n++)e.undo(!0)}}).call(o.prototype),t.PlaceHolder=o}),ace.define(\"ace/mode/folding/fold_mode\",[\"require\",\"exports\",\"module\",\"ace/range\"],function(e,t,n){var r=e(\"../../range\").Range,i=t.FoldMode=function(){};(function(){this.foldingStartMarker=null,this.foldingStopMarker=null,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);return this.foldingStartMarker.test(r)?\"start\":t==\"markbeginend\"&&this.foldingStopMarker&&this.foldingStopMarker.test(r)?\"end\":\"\"},this.getFoldWidgetRange=function(e,t,n){return null},this.indentationBlock=function(e,t,n){var i=/\\S/,s=e.getLine(t),o=s.search(i);if(o==-1)return;var u=n||s.length,a=e.getLength(),f=t,l=t;while(++t<a){var c=e.getLine(t).search(i);if(c==-1)continue;if(c<=o)break;l=t}if(l>f){var h=e.getLine(l).length;return new r(f,u,l,h)}},this.openingBracketBlock=function(e,t,n,i,s){var o={row:n,column:i+1},u=e.$findClosingBracket(t,o,s);if(!u)return;var a=e.foldWidgets[u.row];return a==null&&(a=this.getFoldWidget(e,u.row)),a==\"start\"&&u.row>o.row&&(u.row--,u.column=e.getLine(u.row).length),r.fromPoints(o,u)},this.closingBracketBlock=function(e,t,n,i,s){var o={row:n,column:i},u=e.$findOpeningBracket(t,o);if(!u)return;return u.column++,o.column--,r.fromPoints(u,o)}}).call(i.prototype)});\n            (function() {\n                ace.require([\"ace/ace\"], function(a) {\n                    a && a.config.init();\n                    if (!window.ace)\n                        window.ace = {};\n                    for (var key in a) if (a.hasOwnProperty(key))\n                        ace[key] = a[key];\n                });\n            })();\n        "
  },
  {
    "path": "public/js/vendor/ace/mode-css.js",
    "content": "ace.define(\"ace/mode/css\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/tokenizer\",\"ace/mode/css_highlight_rules\",\"ace/mode/matching_brace_outdent\",\"ace/worker/worker_client\",\"ace/mode/behaviour/css\",\"ace/mode/folding/cstyle\"],function(e,t,n){var r=e(\"../lib/oop\"),i=e(\"./text\").Mode,s=e(\"../tokenizer\").Tokenizer,o=e(\"./css_highlight_rules\").CssHighlightRules,u=e(\"./matching_brace_outdent\").MatchingBraceOutdent,a=e(\"../worker/worker_client\").WorkerClient,f=e(\"./behaviour/css\").CssBehaviour,l=e(\"./folding/cstyle\").FoldMode,c=function(){this.$tokenizer=new s((new o).getRules(),\"i\"),this.$outdent=new u,this.$behaviour=new f,this.foldingRules=new l};r.inherits(c,i),function(){this.foldingRules=\"cStyle\",this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.$tokenizer.getLineTokens(t,e).tokens;if(i.length&&i[i.length-1].type==\"comment\")return r;var s=t.match(/^.*\\{\\s*$/);return s&&(r+=n),r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.createWorker=function(e){var t=new a([\"ace\"],\"ace/mode/css_worker\",\"Worker\");return t.attachToDocument(e.getDocument()),t.on(\"csslint\",function(t){e.setAnnotations(t.data)}),t.on(\"terminate\",function(){e.clearAnnotations()}),t}}.call(c.prototype),t.Mode=c}),ace.define(\"ace/mode/css_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/mode/text_highlight_rules\"],function(e,t,n){var r=e(\"../lib/oop\"),i=e(\"../lib/lang\"),s=e(\"./text_highlight_rules\").TextHighlightRules,o=t.supportType=\"animation-fill-mode|alignment-adjust|alignment-baseline|animation-delay|animation-direction|animation-duration|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|animation|appearance|azimuth|backface-visibility|background-attachment|background-break|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|background|baseline-shift|binding|bleed|bookmark-label|bookmark-level|bookmark-state|bookmark-target|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|border|bottom|box-align|box-decoration-break|box-direction|box-flex-group|box-flex|box-lines|box-ordinal-group|box-orient|box-pack|box-shadow|box-sizing|break-after|break-before|break-inside|caption-side|clear|clip|color-profile|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|crop|cue-after|cue-before|cue|cursor|direction|display|dominant-baseline|drop-initial-after-adjust|drop-initial-after-align|drop-initial-before-adjust|drop-initial-before-align|drop-initial-size|drop-initial-value|elevation|empty-cells|fit|fit-position|float-offset|float|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|font|grid-columns|grid-rows|hanging-punctuation|height|hyphenate-after|hyphenate-before|hyphenate-character|hyphenate-lines|hyphenate-resource|hyphens|icon|image-orientation|image-rendering|image-resolution|inline-box-align|left|letter-spacing|line-height|line-stacking-ruby|line-stacking-shift|line-stacking-strategy|line-stacking|list-style-image|list-style-position|list-style-type|list-style|margin-bottom|margin-left|margin-right|margin-top|margin|mark-after|mark-before|mark|marks|marquee-direction|marquee-play-count|marquee-speed|marquee-style|max-height|max-width|min-height|min-width|move-to|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|orphans|outline-color|outline-offset|outline-style|outline-width|outline|overflow-style|overflow-x|overflow-y|overflow|padding-bottom|padding-left|padding-right|padding-top|padding|page-break-after|page-break-before|page-break-inside|page-policy|page|pause-after|pause-before|pause|perspective-origin|perspective|phonemes|pitch-range|pitch|play-during|position|presentation-level|punctuation-trim|quotes|rendering-intent|resize|rest-after|rest-before|rest|richness|right|rotation-point|rotation|ruby-align|ruby-overhang|ruby-position|ruby-span|size|speak-header|speak-numeral|speak-punctuation|speak|speech-rate|stress|string-set|table-layout|target-name|target-new|target-position|target|text-align-last|text-align|text-decoration|text-emphasis|text-height|text-indent|text-justify|text-outline|text-shadow|text-transform|text-wrap|top|transform-origin|transform-style|transform|transition-delay|transition-duration|transition-property|transition-timing-function|transition|unicode-bidi|vertical-align|visibility|voice-balance|voice-duration|voice-family|voice-pitch-range|voice-pitch|voice-rate|voice-stress|voice-volume|volume|white-space-collapse|white-space|widows|width|word-break|word-spacing|word-wrap|z-index\",u=t.supportFunction=\"rgb|rgba|url|attr|counter|counters\",a=t.supportConstant=\"absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero\",f=t.supportConstantColor=\"aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow\",l=t.supportConstantFonts=\"arial|century|comic|courier|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace\",c=t.numRe=\"\\\\-?(?:(?:[0-9]+)|(?:[0-9]*\\\\.[0-9]+))\",h=t.pseudoElements=\"(\\\\:+)\\\\b(after|before|first-letter|first-line|moz-selection|selection)\\\\b\",p=t.pseudoClasses=\"(:)\\\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\\\b\",d=function(){var e=this.createKeywordMapper({\"support.function\":u,\"support.constant\":a,\"support.type\":o,\"support.constant.color\":f,\"support.constant.fonts\":l},\"text\",!0),t=[{token:\"comment\",regex:\"\\\\/\\\\*\",next:\"ruleset_comment\"},{token:\"string\",regex:'[\"](?:(?:\\\\\\\\.)|(?:[^\"\\\\\\\\]))*?[\"]'},{token:\"string\",regex:\"['](?:(?:\\\\\\\\.)|(?:[^'\\\\\\\\]))*?[']\"},{token:[\"constant.numeric\",\"keyword\"],regex:\"(\"+c+\")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)\"},{token:\"constant.numeric\",regex:c},{token:\"constant.numeric\",regex:\"#[a-f0-9]{6}\"},{token:\"constant.numeric\",regex:\"#[a-f0-9]{3}\"},{token:[\"punctuation\",\"entity.other.attribute-name.pseudo-element.css\"],regex:h},{token:[\"punctuation\",\"entity.other.attribute-name.pseudo-class.css\"],regex:p},{token:e,regex:\"\\\\-?[a-zA-Z_][a-zA-Z0-9_\\\\-]*\"}],n=i.copyArray(t);n.unshift({token:\"paren.rparen\",regex:\"\\\\}\",next:\"start\"});var r=i.copyArray(t);r.unshift({token:\"paren.rparen\",regex:\"\\\\}\",next:\"media\"});var s=[{token:\"comment\",regex:\".+\"}],d=i.copyArray(s);d.unshift({token:\"comment\",regex:\".*?\\\\*\\\\/\",next:\"start\"});var v=i.copyArray(s);v.unshift({token:\"comment\",regex:\".*?\\\\*\\\\/\",next:\"media\"});var m=i.copyArray(s);m.unshift({token:\"comment\",regex:\".*?\\\\*\\\\/\",next:\"ruleset\"}),this.$rules={start:[{token:\"comment\",regex:\"\\\\/\\\\*\",next:\"comment\"},{token:\"paren.lparen\",regex:\"\\\\{\",next:\"ruleset\"},{token:\"string\",regex:\"@.*?{\",next:\"media\"},{token:\"keyword\",regex:\"#[a-z0-9-_]+\"},{token:\"variable\",regex:\"\\\\.[a-z0-9-_]+\"},{token:\"string\",regex:\":[a-z0-9-_]+\"},{token:\"constant\",regex:\"[a-z0-9-_]+\"}],media:[{token:\"comment\",regex:\"\\\\/\\\\*\",next:\"media_comment\"},{token:\"paren.lparen\",regex:\"\\\\{\",next:\"media_ruleset\"},{token:\"string\",regex:\"\\\\}\",next:\"start\"},{token:\"keyword\",regex:\"#[a-z0-9-_]+\"},{token:\"variable\",regex:\"\\\\.[a-z0-9-_]+\"},{token:\"string\",regex:\":[a-z0-9-_]+\"},{token:\"constant\",regex:\"[a-z0-9-_]+\"}],comment:d,ruleset:n,ruleset_comment:m,media_ruleset:r,media_comment:v}};r.inherits(d,s),t.CssHighlightRules=d}),ace.define(\"ace/mode/matching_brace_outdent\",[\"require\",\"exports\",\"module\",\"ace/range\"],function(e,t,n){var r=e(\"../range\").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\\s+$/.test(e)?/^\\s*\\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\\s*\\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){var t=e.match(/^(\\s+)/);return t?t[1]:\"\"}}).call(i.prototype),t.MatchingBraceOutdent=i}),ace.define(\"ace/mode/behaviour/css\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/behaviour\",\"ace/mode/behaviour/cstyle\",\"ace/token_iterator\"],function(e,t,n){var r=e(\"../../lib/oop\"),i=e(\"../behaviour\").Behaviour,s=e(\"./cstyle\").CstyleBehaviour,o=e(\"../../token_iterator\").TokenIterator,u=function(){this.inherit(s),this.add(\"colon\",\"insertion\",function(e,t,n,r,i){if(i===\":\"){var s=n.getCursorPosition(),u=new o(r,s.row,s.column),a=u.getCurrentToken();a&&a.value.match(/\\s+/)&&(a=u.stepBackward());if(a&&a.type===\"support.type\"){var f=r.doc.getLine(s.row),l=f.substring(s.column,s.column+1);if(l===\":\")return{text:\"\",selection:[1,1]};if(!f.substring(s.column).match(/^\\s*;/))return{text:\":;\",selection:[1,1]}}}}),this.add(\"colon\",\"deletion\",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s===\":\"){var o=r.doc.getLine(i.start.row),u=o.substring(i.end.column,i.end.column+1);if(u===\";\")return i.end.column++,i}}),this.add(\"semicolon\",\"insertion\",function(e,t,n,r,i){if(i===\";\"){var s=n.getCursorPosition(),o=r.doc.getLine(s.row),u=o.substring(s.column,s.column+1);if(u===\";\")return{text:\"\",selection:[1,1]}}})};r.inherits(u,s),t.CssBehaviour=u}),ace.define(\"ace/mode/behaviour/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/behaviour\",\"ace/token_iterator\",\"ace/lib/lang\"],function(e,t,n){var r=e(\"../../lib/oop\"),i=e(\"../behaviour\").Behaviour,s=e(\"../../token_iterator\").TokenIterator,o=e(\"../../lib/lang\"),u=[\"text\",\"paren.rparen\",\"punctuation.operator\"],a=[\"text\",\"paren.rparen\",\"punctuation.operator\",\"comment\"],f=0,l=-1,c=\"\",h=0,p=-1,d=\"\",v=\"\",m=function(){m.isSaneInsertion=function(e,t){var n=e.getCursorPosition(),r=new s(t,n.row,n.column);if(!this.$matchTokenType(r.getCurrentToken()||\"text\",u)){var i=new s(t,n.row,n.column+1);if(!this.$matchTokenType(i.getCurrentToken()||\"text\",u))return!1}return r.stepForward(),r.getCurrentTokenRow()!==n.row||this.$matchTokenType(r.getCurrentToken()||\"text\",a)},m.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},m.recordAutoInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isAutoInsertedClosing(r,i,c[0])||(f=0),l=r.row,c=n+i.substr(r.column),f++},m.recordMaybeInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isMaybeInsertedClosing(r,i)||(h=0),p=r.row,d=i.substr(0,r.column)+n,v=i.substr(r.column),h++},m.isAutoInsertedClosing=function(e,t,n){return f>0&&e.row===l&&n===c[0]&&t.substr(e.column)===c},m.isMaybeInsertedClosing=function(e,t){return h>0&&e.row===p&&t.substr(e.column)===v&&t.substr(0,e.column)==d},m.popAutoInsertedClosing=function(){c=c.substr(1),f--},m.clearMaybeInsertedClosing=function(){h=0,p=-1},this.add(\"braces\",\"insertion\",function(e,t,n,r,i){var s=n.getCursorPosition(),u=r.doc.getLine(s.row);if(i==\"{\"){var a=n.getSelectionRange(),f=r.doc.getTextRange(a);if(f!==\"\"&&f!==\"{\"&&n.getWrapBehavioursEnabled())return{text:\"{\"+f+\"}\",selection:!1};if(m.isSaneInsertion(n,r))return/[\\]\\}\\)]/.test(u[s.column])?(m.recordAutoInsert(n,r,\"}\"),{text:\"{}\",selection:[1,1]}):(m.recordMaybeInsert(n,r,\"{\"),{text:\"{\",selection:[1,1]})}else if(i==\"}\"){var l=u.substring(s.column,s.column+1);if(l==\"}\"){var c=r.$findOpeningBracket(\"}\",{column:s.column+1,row:s.row});if(c!==null&&m.isAutoInsertedClosing(s,u,i))return m.popAutoInsertedClosing(),{text:\"\",selection:[1,1]}}}else if(i==\"\\n\"||i==\"\\r\\n\"){var p=\"\";m.isMaybeInsertedClosing(s,u)&&(p=o.stringRepeat(\"}\",h),m.clearMaybeInsertedClosing());var l=u.substring(s.column,s.column+1);if(l==\"}\"||p!==\"\"){var d=r.findMatchingBracket({row:s.row,column:s.column},\"}\");if(!d)return null;var v=this.getNextLineIndent(e,u.substring(0,s.column),r.getTabString()),g=this.$getIndent(u);return{text:\"\\n\"+v+\"\\n\"+g+p,selection:[1,v.length,1,v.length]}}}}),this.add(\"braces\",\"deletion\",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s==\"{\"){var o=r.doc.getLine(i.start.row),u=o.substring(i.end.column,i.end.column+1);if(u==\"}\")return i.end.column++,i;h--}}),this.add(\"parens\",\"insertion\",function(e,t,n,r,i){if(i==\"(\"){var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==\"\"&&n.getWrapBehavioursEnabled())return{text:\"(\"+o+\")\",selection:!1};if(m.isSaneInsertion(n,r))return m.recordAutoInsert(n,r,\")\"),{text:\"()\",selection:[1,1]}}else if(i==\")\"){var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f==\")\"){var l=r.$findOpeningBracket(\")\",{column:u.column+1,row:u.row});if(l!==null&&m.isAutoInsertedClosing(u,a,i))return m.popAutoInsertedClosing(),{text:\"\",selection:[1,1]}}}}),this.add(\"parens\",\"deletion\",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s==\"(\"){var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==\")\")return i.end.column++,i}}),this.add(\"brackets\",\"insertion\",function(e,t,n,r,i){if(i==\"[\"){var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==\"\"&&n.getWrapBehavioursEnabled())return{text:\"[\"+o+\"]\",selection:!1};if(m.isSaneInsertion(n,r))return m.recordAutoInsert(n,r,\"]\"),{text:\"[]\",selection:[1,1]}}else if(i==\"]\"){var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f==\"]\"){var l=r.$findOpeningBracket(\"]\",{column:u.column+1,row:u.row});if(l!==null&&m.isAutoInsertedClosing(u,a,i))return m.popAutoInsertedClosing(),{text:\"\",selection:[1,1]}}}}),this.add(\"brackets\",\"deletion\",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s==\"[\"){var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==\"]\")return i.end.column++,i}}),this.add(\"string_dquotes\",\"insertion\",function(e,t,n,r,i){if(i=='\"'||i==\"'\"){var s=i,o=n.getSelectionRange(),u=r.doc.getTextRange(o);if(u!==\"\"&&u!==\"'\"&&u!='\"'&&n.getWrapBehavioursEnabled())return{text:s+u+s,selection:!1};var a=n.getCursorPosition(),f=r.doc.getLine(a.row),l=f.substring(a.column-1,a.column);if(l==\"\\\\\")return null;var c=r.getTokens(o.start.row),h=0,p,d=-1;for(var v=0;v<c.length;v++){p=c[v],p.type==\"string\"?d=-1:d<0&&(d=p.value.indexOf(s));if(p.value.length+h>o.start.column)break;h+=c[v].value.length}if(!p||d<0&&p.type!==\"comment\"&&(p.type!==\"string\"||o.start.column!==p.value.length+h-1&&p.value.lastIndexOf(s)===p.value.length-1)){if(!m.isSaneInsertion(n,r))return;return{text:s+s,selection:[1,1]}}if(p&&p.type===\"string\"){var g=f.substring(a.column,a.column+1);if(g==s)return{text:\"\",selection:[1,1]}}}}),this.add(\"string_dquotes\",\"deletion\",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='\"'||s==\"'\")){var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}})};r.inherits(m,i),t.CstyleBehaviour=m}),ace.define(\"ace/mode/folding/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/range\",\"ace/mode/folding/fold_mode\"],function(e,t,n){var r=e(\"../../lib/oop\"),i=e(\"../../range\").Range,s=e(\"./fold_mode\").FoldMode,o=t.FoldMode=function(){};r.inherits(o,s),function(){this.foldingStartMarker=/(\\{|\\[)[^\\}\\]]*$|^\\s*(\\/\\*)/,this.foldingStopMarker=/^[^\\[\\{]*(\\}|\\])|^[\\s\\*]*(\\*\\/)/,this.getFoldWidgetRange=function(e,t,n){var r=e.getLine(n),i=r.match(this.foldingStartMarker);if(i){var s=i.index;return i[1]?this.openingBracketBlock(e,i[1],n,s):e.getCommentFoldRange(n,s+i[0].length,1)}if(t!==\"markbeginend\")return;var i=r.match(this.foldingStopMarker);if(i){var s=i.index+i[0].length;return i[1]?this.closingBracketBlock(e,i[1],n,s):e.getCommentFoldRange(n,s,-1)}}}.call(o.prototype)})"
  },
  {
    "path": "public/js/vendor/ace/mode-html.js",
    "content": "ace.define(\"ace/mode/html\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/javascript\",\"ace/mode/css\",\"ace/tokenizer\",\"ace/mode/html_highlight_rules\",\"ace/mode/behaviour/html\",\"ace/mode/folding/html\"],function(e,t,n){var r=e(\"../lib/oop\"),i=e(\"./text\").Mode,s=e(\"./javascript\").Mode,o=e(\"./css\").Mode,u=e(\"../tokenizer\").Tokenizer,a=e(\"./html_highlight_rules\").HtmlHighlightRules,f=e(\"./behaviour/html\").HtmlBehaviour,l=e(\"./folding/html\").FoldMode,c=function(){var e=new a;this.$tokenizer=new u(e.getRules()),this.$behaviour=new f,this.$embeds=e.getEmbeds(),this.createModeDelegates({\"js-\":s,\"css-\":o}),this.foldingRules=new l};r.inherits(c,i),function(){this.toggleCommentLines=function(e,t,n,r){return 0},this.getNextLineIndent=function(e,t,n){return this.$getIndent(t)},this.checkOutdent=function(e,t,n){return!1}}.call(c.prototype),t.Mode=c}),ace.define(\"ace/mode/javascript\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/tokenizer\",\"ace/mode/javascript_highlight_rules\",\"ace/mode/matching_brace_outdent\",\"ace/range\",\"ace/worker/worker_client\",\"ace/mode/behaviour/cstyle\",\"ace/mode/folding/cstyle\"],function(e,t,n){var r=e(\"../lib/oop\"),i=e(\"./text\").Mode,s=e(\"../tokenizer\").Tokenizer,o=e(\"./javascript_highlight_rules\").JavaScriptHighlightRules,u=e(\"./matching_brace_outdent\").MatchingBraceOutdent,a=e(\"../range\").Range,f=e(\"../worker/worker_client\").WorkerClient,l=e(\"./behaviour/cstyle\").CstyleBehaviour,c=e(\"./folding/cstyle\").FoldMode,h=function(){this.$tokenizer=new s((new o).getRules()),this.$outdent=new u,this.$behaviour=new l,this.foldingRules=new c};r.inherits(h,i),function(){this.toggleCommentLines=function(e,t,n,r){var i=!0,s=/^(\\s*)\\/\\//;for(var o=n;o<=r;o++)if(!s.test(t.getLine(o))){i=!1;break}if(i){var u=new a(0,0,0,0);for(var o=n;o<=r;o++){var f=t.getLine(o),l=f.match(s);u.start.row=o,u.end.row=o,u.end.column=l[0].length,t.replace(u,l[1])}}else t.indentRows(n,r,\"//\")},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.$tokenizer.getLineTokens(t,e),s=i.tokens,o=i.state;if(s.length&&s[s.length-1].type==\"comment\")return r;if(e==\"start\"||e==\"regex_allowed\"){var u=t.match(/^.*(?:\\bcase\\b.*\\:|[\\{\\(\\[])\\s*$/);u&&(r+=n)}else if(e==\"doc-start\"){if(o==\"start\"||e==\"regex_allowed\")return\"\";var u=t.match(/^\\s*(\\/?)\\*/);u&&(u[1]&&(r+=\" \"),r+=\"* \")}return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.createWorker=function(e){var t=new f([\"ace\"],\"ace/mode/javascript_worker\",\"JavaScriptWorker\");return t.attachToDocument(e.getDocument()),t.on(\"jslint\",function(t){e.setAnnotations(t.data)}),t.on(\"terminate\",function(){e.clearAnnotations()}),t}}.call(h.prototype),t.Mode=h}),ace.define(\"ace/mode/javascript_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/doc_comment_highlight_rules\",\"ace/mode/text_highlight_rules\"],function(e,t,n){var r=e(\"../lib/oop\"),i=e(\"./doc_comment_highlight_rules\").DocCommentHighlightRules,s=e(\"./text_highlight_rules\").TextHighlightRules,o=function(){var e=this.createKeywordMapper({\"variable.language\":\"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document\",keyword:\"const|yield|import|get|set|break|case|catch|continue|default|delete|do|else|finally|for|function|if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static\",\"storage.type\":\"const|let|var|function\",\"constant.language\":\"null|Infinity|NaN|undefined\",\"support.function\":\"alert\",\"constant.language.boolean\":\"true|false\"},\"identifier\"),t=\"case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void\",n=\"[a-zA-Z\\\\$_¡-￿][a-zA-Z\\\\d\\\\$_¡-￿]*\\\\b\",r=\"\\\\\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.)\";this.$rules={start:[{token:\"comment\",regex:/\\/\\/.*$/},i.getStartRule(\"doc-start\"),{token:\"comment\",regex:/\\/\\*/,next:\"comment\"},{token:\"string\",regex:\"'(?=.)\",next:\"qstring\"},{token:\"string\",regex:'\"(?=.)',next:\"qqstring\"},{token:\"constant.numeric\",regex:/0[xX][0-9a-fA-F]+\\b/},{token:\"constant.numeric\",regex:/[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b/},{token:[\"storage.type\",\"punctuation.operator\",\"support.function\",\"punctuation.operator\",\"entity.name.function\",\"text\",\"keyword.operator\"],regex:\"(\"+n+\")(\\\\.)(prototype)(\\\\.)(\"+n+\")(\\\\s*)(=)\",next:\"function_arguments\"},{token:[\"storage.type\",\"punctuation.operator\",\"entity.name.function\",\"text\",\"keyword.operator\",\"text\",\"storage.type\",\"text\",\"paren.lparen\"],regex:\"(\"+n+\")(\\\\.)(\"+n+\")(\\\\s*)(=)(\\\\s*)(function)(\\\\s*)(\\\\()\",next:\"function_arguments\"},{token:[\"entity.name.function\",\"text\",\"keyword.operator\",\"text\",\"storage.type\",\"text\",\"paren.lparen\"],regex:\"(\"+n+\")(\\\\s*)(=)(\\\\s*)(function)(\\\\s*)(\\\\()\",next:\"function_arguments\"},{token:[\"storage.type\",\"punctuation.operator\",\"entity.name.function\",\"text\",\"keyword.operator\",\"text\",\"storage.type\",\"text\",\"entity.name.function\",\"text\",\"paren.lparen\"],regex:\"(\"+n+\")(\\\\.)(\"+n+\")(\\\\s*)(=)(\\\\s*)(function)(\\\\s+)(\\\\w+)(\\\\s*)(\\\\()\",next:\"function_arguments\"},{token:[\"storage.type\",\"text\",\"entity.name.function\",\"text\",\"paren.lparen\"],regex:\"(function)(\\\\s+)(\"+n+\")(\\\\s*)(\\\\()\",next:\"function_arguments\"},{token:[\"entity.name.function\",\"text\",\"punctuation.operator\",\"text\",\"storage.type\",\"text\",\"paren.lparen\"],regex:\"(\"+n+\")(\\\\s*)(:)(\\\\s*)(function)(\\\\s*)(\\\\()\",next:\"function_arguments\"},{token:[\"text\",\"text\",\"storage.type\",\"text\",\"paren.lparen\"],regex:\"(:)(\\\\s*)(function)(\\\\s*)(\\\\()\",next:\"function_arguments\"},{token:\"keyword\",regex:\"(?:\"+t+\")\\\\b\",next:\"regex_allowed\"},{token:[\"punctuation.operator\",\"support.function\"],regex:/(\\.)(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:opzzzz|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\\b(?=\\()/},{token:[\"punctuation.operator\",\"support.function.dom\"],regex:/(\\.)(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName)|ById)|Attribute(?:Node)?)|blur)\\b(?=\\()/},{token:[\"punctuation.operator\",\"support.constant\"],regex:/(\\.)(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\\b/},{token:[\"storage.type\",\"punctuation.operator\",\"support.function.firebug\"],regex:/(console)(\\.)(warn|info|log|error|time|timeEnd|assert)\\b/},{token:e,regex:n},{token:\"keyword.operator\",regex:/--|\\+\\+|[!$%&*+\\-~]|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=/,next:\"regex_allowed\"},{token:\"punctuation.operator\",regex:/\\?|\\:|\\,|\\;|\\./,next:\"regex_allowed\"},{token:\"paren.lparen\",regex:/[\\[({]/,next:\"regex_allowed\"},{token:\"paren.rparen\",regex:/[\\])}]/},{token:\"keyword.operator\",regex:/\\/=?/,next:\"regex_allowed\"},{token:\"comment\",regex:/^#!.*$/}],regex_allowed:[i.getStartRule(\"doc-start\"),{token:\"comment\",regex:\"\\\\/\\\\*\",next:\"comment_regex_allowed\"},{token:\"comment\",regex:\"\\\\/\\\\/.*$\"},{token:\"string.regexp\",regex:\"\\\\/\",next:\"regex\"},{token:\"text\",regex:\"\\\\s+\"},{token:\"empty\",regex:\"\",next:\"start\"}],regex:[{token:\"regexp.keyword.operator\",regex:\"\\\\\\\\(?:u[\\\\da-fA-F]{4}|x[\\\\da-fA-F]{2}|.)\"},{token:\"string.regexp\",regex:\"/\\\\w*\",next:\"start\"},{token:\"invalid\",regex:/\\{\\d+,?(?:\\d+)?}[+*]|[+*$^?][+*]|[$^][?]|\\?{3,}/},{token:\"constant.language.escape\",regex:/\\(\\?[:=!]|\\)|{\\d+,?(?:\\d+)?}|{,\\d+}|[+*]\\?|[()$^+*?]/},{token:\"constant.language.delimiter\",regex:/\\|/},{token:\"constant.language.escape\",regex:/\\[\\^?/,next:\"regex_character_class\"},{token:\"empty\",regex:\"$\",next:\"start\"},{defaultToken:\"string.regexp\"}],regex_character_class:[{token:\"regexp.keyword.operator\",regex:\"\\\\\\\\(?:u[\\\\da-fA-F]{4}|x[\\\\da-fA-F]{2}|.)\"},{token:\"constant.language.escape\",regex:\"]\",next:\"regex\"},{token:\"constant.language.escape\",regex:\"-\"},{token:\"empty\",regex:\"$\",next:\"start\"},{defaultToken:\"string.regexp.charachterclass\"}],function_arguments:[{token:\"variable.parameter\",regex:n},{token:\"punctuation.operator\",regex:\"[, ]+\"},{token:\"punctuation.operator\",regex:\"$\"},{token:\"empty\",regex:\"\",next:\"start\"}],comment_regex_allowed:[{token:\"comment\",regex:\"\\\\*\\\\/\",next:\"regex_allowed\"},{defaultToken:\"comment\"}],comment:[{token:\"comment\",regex:\"\\\\*\\\\/\",next:\"start\"},{defaultToken:\"comment\"}],qqstring:[{token:\"constant.language.escape\",regex:r},{token:\"string\",regex:\"\\\\\\\\$\",next:\"qqstring\"},{token:\"string\",regex:'\"|$',next:\"start\"},{defaultToken:\"string\"}],qstring:[{token:\"constant.language.escape\",regex:r},{token:\"string\",regex:\"\\\\\\\\$\",next:\"qstring\"},{token:\"string\",regex:\"'|$\",next:\"start\"},{defaultToken:\"string\"}]},this.embedRules(i,\"doc-\",[i.getEndRule(\"start\")])};r.inherits(o,s),t.JavaScriptHighlightRules=o}),ace.define(\"ace/mode/doc_comment_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"],function(e,t,n){var r=e(\"../lib/oop\"),i=e(\"./text_highlight_rules\").TextHighlightRules,s=function(){this.$rules={start:[{token:\"comment.doc.tag\",regex:\"@[\\\\w\\\\d_]+\"},{token:\"comment.doc.tag\",regex:\"\\\\bTODO\\\\b\"},{defaultToken:\"comment.doc\"}]}};r.inherits(s,i),s.getStartRule=function(e){return{token:\"comment.doc\",regex:\"\\\\/\\\\*(?=\\\\*)\",next:e}},s.getEndRule=function(e){return{token:\"comment.doc\",regex:\"\\\\*\\\\/\",next:e}},t.DocCommentHighlightRules=s}),ace.define(\"ace/mode/matching_brace_outdent\",[\"require\",\"exports\",\"module\",\"ace/range\"],function(e,t,n){var r=e(\"../range\").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\\s+$/.test(e)?/^\\s*\\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\\s*\\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){var t=e.match(/^(\\s+)/);return t?t[1]:\"\"}}).call(i.prototype),t.MatchingBraceOutdent=i}),ace.define(\"ace/mode/behaviour/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/behaviour\",\"ace/token_iterator\",\"ace/lib/lang\"],function(e,t,n){var r=e(\"../../lib/oop\"),i=e(\"../behaviour\").Behaviour,s=e(\"../../token_iterator\").TokenIterator,o=e(\"../../lib/lang\"),u=[\"text\",\"paren.rparen\",\"punctuation.operator\"],a=[\"text\",\"paren.rparen\",\"punctuation.operator\",\"comment\"],f=0,l=-1,c=\"\",h=0,p=-1,d=\"\",v=\"\",m=function(){m.isSaneInsertion=function(e,t){var n=e.getCursorPosition(),r=new s(t,n.row,n.column);if(!this.$matchTokenType(r.getCurrentToken()||\"text\",u)){var i=new s(t,n.row,n.column+1);if(!this.$matchTokenType(i.getCurrentToken()||\"text\",u))return!1}return r.stepForward(),r.getCurrentTokenRow()!==n.row||this.$matchTokenType(r.getCurrentToken()||\"text\",a)},m.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},m.recordAutoInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isAutoInsertedClosing(r,i,c[0])||(f=0),l=r.row,c=n+i.substr(r.column),f++},m.recordMaybeInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isMaybeInsertedClosing(r,i)||(h=0),p=r.row,d=i.substr(0,r.column)+n,v=i.substr(r.column),h++},m.isAutoInsertedClosing=function(e,t,n){return f>0&&e.row===l&&n===c[0]&&t.substr(e.column)===c},m.isMaybeInsertedClosing=function(e,t){return h>0&&e.row===p&&t.substr(e.column)===v&&t.substr(0,e.column)==d},m.popAutoInsertedClosing=function(){c=c.substr(1),f--},m.clearMaybeInsertedClosing=function(){h=0,p=-1},this.add(\"braces\",\"insertion\",function(e,t,n,r,i){var s=n.getCursorPosition(),u=r.doc.getLine(s.row);if(i==\"{\"){var a=n.getSelectionRange(),f=r.doc.getTextRange(a);if(f!==\"\"&&f!==\"{\"&&n.getWrapBehavioursEnabled())return{text:\"{\"+f+\"}\",selection:!1};if(m.isSaneInsertion(n,r))return/[\\]\\}\\)]/.test(u[s.column])?(m.recordAutoInsert(n,r,\"}\"),{text:\"{}\",selection:[1,1]}):(m.recordMaybeInsert(n,r,\"{\"),{text:\"{\",selection:[1,1]})}else if(i==\"}\"){var l=u.substring(s.column,s.column+1);if(l==\"}\"){var c=r.$findOpeningBracket(\"}\",{column:s.column+1,row:s.row});if(c!==null&&m.isAutoInsertedClosing(s,u,i))return m.popAutoInsertedClosing(),{text:\"\",selection:[1,1]}}}else if(i==\"\\n\"||i==\"\\r\\n\"){var p=\"\";m.isMaybeInsertedClosing(s,u)&&(p=o.stringRepeat(\"}\",h),m.clearMaybeInsertedClosing());var l=u.substring(s.column,s.column+1);if(l==\"}\"||p!==\"\"){var d=r.findMatchingBracket({row:s.row,column:s.column},\"}\");if(!d)return null;var v=this.getNextLineIndent(e,u.substring(0,s.column),r.getTabString()),g=this.$getIndent(u);return{text:\"\\n\"+v+\"\\n\"+g+p,selection:[1,v.length,1,v.length]}}}}),this.add(\"braces\",\"deletion\",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s==\"{\"){var o=r.doc.getLine(i.start.row),u=o.substring(i.end.column,i.end.column+1);if(u==\"}\")return i.end.column++,i;h--}}),this.add(\"parens\",\"insertion\",function(e,t,n,r,i){if(i==\"(\"){var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==\"\"&&n.getWrapBehavioursEnabled())return{text:\"(\"+o+\")\",selection:!1};if(m.isSaneInsertion(n,r))return m.recordAutoInsert(n,r,\")\"),{text:\"()\",selection:[1,1]}}else if(i==\")\"){var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f==\")\"){var l=r.$findOpeningBracket(\")\",{column:u.column+1,row:u.row});if(l!==null&&m.isAutoInsertedClosing(u,a,i))return m.popAutoInsertedClosing(),{text:\"\",selection:[1,1]}}}}),this.add(\"parens\",\"deletion\",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s==\"(\"){var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==\")\")return i.end.column++,i}}),this.add(\"brackets\",\"insertion\",function(e,t,n,r,i){if(i==\"[\"){var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==\"\"&&n.getWrapBehavioursEnabled())return{text:\"[\"+o+\"]\",selection:!1};if(m.isSaneInsertion(n,r))return m.recordAutoInsert(n,r,\"]\"),{text:\"[]\",selection:[1,1]}}else if(i==\"]\"){var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f==\"]\"){var l=r.$findOpeningBracket(\"]\",{column:u.column+1,row:u.row});if(l!==null&&m.isAutoInsertedClosing(u,a,i))return m.popAutoInsertedClosing(),{text:\"\",selection:[1,1]}}}}),this.add(\"brackets\",\"deletion\",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s==\"[\"){var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==\"]\")return i.end.column++,i}}),this.add(\"string_dquotes\",\"insertion\",function(e,t,n,r,i){if(i=='\"'||i==\"'\"){var s=i,o=n.getSelectionRange(),u=r.doc.getTextRange(o);if(u!==\"\"&&u!==\"'\"&&u!='\"'&&n.getWrapBehavioursEnabled())return{text:s+u+s,selection:!1};var a=n.getCursorPosition(),f=r.doc.getLine(a.row),l=f.substring(a.column-1,a.column);if(l==\"\\\\\")return null;var c=r.getTokens(o.start.row),h=0,p,d=-1;for(var v=0;v<c.length;v++){p=c[v],p.type==\"string\"?d=-1:d<0&&(d=p.value.indexOf(s));if(p.value.length+h>o.start.column)break;h+=c[v].value.length}if(!p||d<0&&p.type!==\"comment\"&&(p.type!==\"string\"||o.start.column!==p.value.length+h-1&&p.value.lastIndexOf(s)===p.value.length-1)){if(!m.isSaneInsertion(n,r))return;return{text:s+s,selection:[1,1]}}if(p&&p.type===\"string\"){var g=f.substring(a.column,a.column+1);if(g==s)return{text:\"\",selection:[1,1]}}}}),this.add(\"string_dquotes\",\"deletion\",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='\"'||s==\"'\")){var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}})};r.inherits(m,i),t.CstyleBehaviour=m}),ace.define(\"ace/mode/folding/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/range\",\"ace/mode/folding/fold_mode\"],function(e,t,n){var r=e(\"../../lib/oop\"),i=e(\"../../range\").Range,s=e(\"./fold_mode\").FoldMode,o=t.FoldMode=function(){};r.inherits(o,s),function(){this.foldingStartMarker=/(\\{|\\[)[^\\}\\]]*$|^\\s*(\\/\\*)/,this.foldingStopMarker=/^[^\\[\\{]*(\\}|\\])|^[\\s\\*]*(\\*\\/)/,this.getFoldWidgetRange=function(e,t,n){var r=e.getLine(n),i=r.match(this.foldingStartMarker);if(i){var s=i.index;return i[1]?this.openingBracketBlock(e,i[1],n,s):e.getCommentFoldRange(n,s+i[0].length,1)}if(t!==\"markbeginend\")return;var i=r.match(this.foldingStopMarker);if(i){var s=i.index+i[0].length;return i[1]?this.closingBracketBlock(e,i[1],n,s):e.getCommentFoldRange(n,s,-1)}}}.call(o.prototype)}),ace.define(\"ace/mode/css\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/tokenizer\",\"ace/mode/css_highlight_rules\",\"ace/mode/matching_brace_outdent\",\"ace/worker/worker_client\",\"ace/mode/behaviour/css\",\"ace/mode/folding/cstyle\"],function(e,t,n){var r=e(\"../lib/oop\"),i=e(\"./text\").Mode,s=e(\"../tokenizer\").Tokenizer,o=e(\"./css_highlight_rules\").CssHighlightRules,u=e(\"./matching_brace_outdent\").MatchingBraceOutdent,a=e(\"../worker/worker_client\").WorkerClient,f=e(\"./behaviour/css\").CssBehaviour,l=e(\"./folding/cstyle\").FoldMode,c=function(){this.$tokenizer=new s((new o).getRules(),\"i\"),this.$outdent=new u,this.$behaviour=new f,this.foldingRules=new l};r.inherits(c,i),function(){this.foldingRules=\"cStyle\",this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.$tokenizer.getLineTokens(t,e).tokens;if(i.length&&i[i.length-1].type==\"comment\")return r;var s=t.match(/^.*\\{\\s*$/);return s&&(r+=n),r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.createWorker=function(e){var t=new a([\"ace\"],\"ace/mode/css_worker\",\"Worker\");return t.attachToDocument(e.getDocument()),t.on(\"csslint\",function(t){e.setAnnotations(t.data)}),t.on(\"terminate\",function(){e.clearAnnotations()}),t}}.call(c.prototype),t.Mode=c}),ace.define(\"ace/mode/css_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/mode/text_highlight_rules\"],function(e,t,n){var r=e(\"../lib/oop\"),i=e(\"../lib/lang\"),s=e(\"./text_highlight_rules\").TextHighlightRules,o=t.supportType=\"animation-fill-mode|alignment-adjust|alignment-baseline|animation-delay|animation-direction|animation-duration|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|animation|appearance|azimuth|backface-visibility|background-attachment|background-break|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|background|baseline-shift|binding|bleed|bookmark-label|bookmark-level|bookmark-state|bookmark-target|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|border|bottom|box-align|box-decoration-break|box-direction|box-flex-group|box-flex|box-lines|box-ordinal-group|box-orient|box-pack|box-shadow|box-sizing|break-after|break-before|break-inside|caption-side|clear|clip|color-profile|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|crop|cue-after|cue-before|cue|cursor|direction|display|dominant-baseline|drop-initial-after-adjust|drop-initial-after-align|drop-initial-before-adjust|drop-initial-before-align|drop-initial-size|drop-initial-value|elevation|empty-cells|fit|fit-position|float-offset|float|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|font|grid-columns|grid-rows|hanging-punctuation|height|hyphenate-after|hyphenate-before|hyphenate-character|hyphenate-lines|hyphenate-resource|hyphens|icon|image-orientation|image-rendering|image-resolution|inline-box-align|left|letter-spacing|line-height|line-stacking-ruby|line-stacking-shift|line-stacking-strategy|line-stacking|list-style-image|list-style-position|list-style-type|list-style|margin-bottom|margin-left|margin-right|margin-top|margin|mark-after|mark-before|mark|marks|marquee-direction|marquee-play-count|marquee-speed|marquee-style|max-height|max-width|min-height|min-width|move-to|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|orphans|outline-color|outline-offset|outline-style|outline-width|outline|overflow-style|overflow-x|overflow-y|overflow|padding-bottom|padding-left|padding-right|padding-top|padding|page-break-after|page-break-before|page-break-inside|page-policy|page|pause-after|pause-before|pause|perspective-origin|perspective|phonemes|pitch-range|pitch|play-during|position|presentation-level|punctuation-trim|quotes|rendering-intent|resize|rest-after|rest-before|rest|richness|right|rotation-point|rotation|ruby-align|ruby-overhang|ruby-position|ruby-span|size|speak-header|speak-numeral|speak-punctuation|speak|speech-rate|stress|string-set|table-layout|target-name|target-new|target-position|target|text-align-last|text-align|text-decoration|text-emphasis|text-height|text-indent|text-justify|text-outline|text-shadow|text-transform|text-wrap|top|transform-origin|transform-style|transform|transition-delay|transition-duration|transition-property|transition-timing-function|transition|unicode-bidi|vertical-align|visibility|voice-balance|voice-duration|voice-family|voice-pitch-range|voice-pitch|voice-rate|voice-stress|voice-volume|volume|white-space-collapse|white-space|widows|width|word-break|word-spacing|word-wrap|z-index\",u=t.supportFunction=\"rgb|rgba|url|attr|counter|counters\",a=t.supportConstant=\"absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero\",f=t.supportConstantColor=\"aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow\",l=t.supportConstantFonts=\"arial|century|comic|courier|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace\",c=t.numRe=\"\\\\-?(?:(?:[0-9]+)|(?:[0-9]*\\\\.[0-9]+))\",h=t.pseudoElements=\"(\\\\:+)\\\\b(after|before|first-letter|first-line|moz-selection|selection)\\\\b\",p=t.pseudoClasses=\"(:)\\\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\\\b\",d=function(){var e=this.createKeywordMapper({\"support.function\":u,\"support.constant\":a,\"support.type\":o,\"support.constant.color\":f,\"support.constant.fonts\":l},\"text\",!0),t=[{token:\"comment\",regex:\"\\\\/\\\\*\",next:\"ruleset_comment\"},{token:\"string\",regex:'[\"](?:(?:\\\\\\\\.)|(?:[^\"\\\\\\\\]))*?[\"]'},{token:\"string\",regex:\"['](?:(?:\\\\\\\\.)|(?:[^'\\\\\\\\]))*?[']\"},{token:[\"constant.numeric\",\"keyword\"],regex:\"(\"+c+\")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)\"},{token:\"constant.numeric\",regex:c},{token:\"constant.numeric\",regex:\"#[a-f0-9]{6}\"},{token:\"constant.numeric\",regex:\"#[a-f0-9]{3}\"},{token:[\"punctuation\",\"entity.other.attribute-name.pseudo-element.css\"],regex:h},{token:[\"punctuation\",\"entity.other.attribute-name.pseudo-class.css\"],regex:p},{token:e,regex:\"\\\\-?[a-zA-Z_][a-zA-Z0-9_\\\\-]*\"}],n=i.copyArray(t);n.unshift({token:\"paren.rparen\",regex:\"\\\\}\",next:\"start\"});var r=i.copyArray(t);r.unshift({token:\"paren.rparen\",regex:\"\\\\}\",next:\"media\"});var s=[{token:\"comment\",regex:\".+\"}],d=i.copyArray(s);d.unshift({token:\"comment\",regex:\".*?\\\\*\\\\/\",next:\"start\"});var v=i.copyArray(s);v.unshift({token:\"comment\",regex:\".*?\\\\*\\\\/\",next:\"media\"});var m=i.copyArray(s);m.unshift({token:\"comment\",regex:\".*?\\\\*\\\\/\",next:\"ruleset\"}),this.$rules={start:[{token:\"comment\",regex:\"\\\\/\\\\*\",next:\"comment\"},{token:\"paren.lparen\",regex:\"\\\\{\",next:\"ruleset\"},{token:\"string\",regex:\"@.*?{\",next:\"media\"},{token:\"keyword\",regex:\"#[a-z0-9-_]+\"},{token:\"variable\",regex:\"\\\\.[a-z0-9-_]+\"},{token:\"string\",regex:\":[a-z0-9-_]+\"},{token:\"constant\",regex:\"[a-z0-9-_]+\"}],media:[{token:\"comment\",regex:\"\\\\/\\\\*\",next:\"media_comment\"},{token:\"paren.lparen\",regex:\"\\\\{\",next:\"media_ruleset\"},{token:\"string\",regex:\"\\\\}\",next:\"start\"},{token:\"keyword\",regex:\"#[a-z0-9-_]+\"},{token:\"variable\",regex:\"\\\\.[a-z0-9-_]+\"},{token:\"string\",regex:\":[a-z0-9-_]+\"},{token:\"constant\",regex:\"[a-z0-9-_]+\"}],comment:d,ruleset:n,ruleset_comment:m,media_ruleset:r,media_comment:v}};r.inherits(d,s),t.CssHighlightRules=d}),ace.define(\"ace/mode/behaviour/css\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/behaviour\",\"ace/mode/behaviour/cstyle\",\"ace/token_iterator\"],function(e,t,n){var r=e(\"../../lib/oop\"),i=e(\"../behaviour\").Behaviour,s=e(\"./cstyle\").CstyleBehaviour,o=e(\"../../token_iterator\").TokenIterator,u=function(){this.inherit(s),this.add(\"colon\",\"insertion\",function(e,t,n,r,i){if(i===\":\"){var s=n.getCursorPosition(),u=new o(r,s.row,s.column),a=u.getCurrentToken();a&&a.value.match(/\\s+/)&&(a=u.stepBackward());if(a&&a.type===\"support.type\"){var f=r.doc.getLine(s.row),l=f.substring(s.column,s.column+1);if(l===\":\")return{text:\"\",selection:[1,1]};if(!f.substring(s.column).match(/^\\s*;/))return{text:\":;\",selection:[1,1]}}}}),this.add(\"colon\",\"deletion\",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s===\":\"){var o=r.doc.getLine(i.start.row),u=o.substring(i.end.column,i.end.column+1);if(u===\";\")return i.end.column++,i}}),this.add(\"semicolon\",\"insertion\",function(e,t,n,r,i){if(i===\";\"){var s=n.getCursorPosition(),o=r.doc.getLine(s.row),u=o.substring(s.column,s.column+1);if(u===\";\")return{text:\"\",selection:[1,1]}}})};r.inherits(u,s),t.CssBehaviour=u}),ace.define(\"ace/mode/html_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/mode/css_highlight_rules\",\"ace/mode/javascript_highlight_rules\",\"ace/mode/xml_util\",\"ace/mode/text_highlight_rules\"],function(e,t,n){var r=e(\"../lib/oop\"),i=e(\"../lib/lang\"),s=e(\"./css_highlight_rules\").CssHighlightRules,o=e(\"./javascript_highlight_rules\").JavaScriptHighlightRules,u=e(\"./xml_util\"),a=e(\"./text_highlight_rules\").TextHighlightRules,f=i.createMap({a:\"anchor\",button:\"form\",form:\"form\",img:\"image\",input:\"form\",label:\"form\",script:\"script\",select:\"form\",textarea:\"form\",style:\"style\",table:\"table\",tbody:\"table\",td:\"table\",tfoot:\"table\",th:\"table\",tr:\"table\"}),l=function(){this.$rules={start:[{token:\"text\",regex:\"<\\\\!\\\\[CDATA\\\\[\",next:\"cdata\"},{token:\"xml-pe\",regex:\"<\\\\?.*?\\\\?>\"},{token:\"comment\",regex:\"<\\\\!--\",next:\"comment\"},{token:\"xml-pe\",regex:\"<\\\\!.*?>\"},{token:\"meta.tag\",regex:\"<(?=script\\\\b)\",next:\"script\"},{token:\"meta.tag\",regex:\"<(?=style\\\\b)\",next:\"style\"},{token:\"meta.tag\",regex:\"<\\\\/?\",next:\"tag\"},{token:\"text\",regex:\"\\\\s+\"},{token:\"constant.character.entity\",regex:\"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\\\.-]+;)\"}],cdata:[{token:\"text\",regex:\"\\\\]\\\\]>\",next:\"start\"}],comment:[{token:\"comment\",regex:\".*?-->\",next:\"start\"},{defaultToken:\"comment\"}]},u.tag(this.$rules,\"tag\",\"start\",f),u.tag(this.$rules,\"style\",\"css-start\",f),u.tag(this.$rules,\"script\",\"js-start\",f),this.embedRules(o,\"js-\",[{token:\"comment\",regex:\"\\\\/\\\\/.*(?=<\\\\/script>)\",next:\"tag\"},{token:\"meta.tag\",regex:\"<\\\\/(?=script)\",next:\"tag\"}]),this.embedRules(s,\"css-\",[{token:\"meta.tag\",regex:\"<\\\\/(?=style)\",next:\"tag\"}])};r.inherits(l,a),t.HtmlHighlightRules=l}),ace.define(\"ace/mode/xml_util\",[\"require\",\"exports\",\"module\"],function(e,t,n){function r(e){return[{token:\"string\",regex:'\"',next:e+\"_qqstring\"},{token:\"string\",regex:\"'\",next:e+\"_qstring\"}]}function i(e,t){return[{token:\"string\",regex:e,next:t},{token:\"constant.language.escape\",regex:\"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\\\.-]+;)\"},{defaultToken:\"string\"}]}t.tag=function(e,t,n,s){e[t]=[{token:\"text\",regex:\"\\\\s+\"},{token:s?function(e){return s[e]?\"meta.tag.tag-name.\"+s[e]:\"meta.tag.tag-name\"}:\"meta.tag.tag-name\",regex:\"[-_a-zA-Z0-9:]+\",next:t+\"_embed_attribute_list\"},{token:\"empty\",regex:\"\",next:t+\"_embed_attribute_list\"}],e[t+\"_qstring\"]=i(\"'\",t+\"_embed_attribute_list\"),e[t+\"_qqstring\"]=i('\"',t+\"_embed_attribute_list\"),e[t+\"_embed_attribute_list\"]=[{token:\"meta.tag.r\",regex:\"/?>\",next:n},{token:\"keyword.operator\",regex:\"=\"},{token:\"entity.other.attribute-name\",regex:\"[-_a-zA-Z0-9:]+\"},{token:\"constant.numeric\",regex:\"[+-]?\\\\d+(?:(?:\\\\.\\\\d*)?(?:[eE][+-]?\\\\d+)?)?\\\\b\"},{token:\"text\",regex:\"\\\\s+\"}].concat(r(t))}}),ace.define(\"ace/mode/behaviour/html\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/behaviour/xml\",\"ace/mode/behaviour/cstyle\",\"ace/token_iterator\"],function(e,t,n){function a(e,t){var n=!0,r=e.type.split(\".\"),i=t.split(\".\");return i.forEach(function(e){if(r.indexOf(e)==-1)return n=!1,!1}),n}var r=e(\"../../lib/oop\"),i=e(\"../behaviour/xml\").XmlBehaviour,s=e(\"./cstyle\").CstyleBehaviour,o=e(\"../../token_iterator\").TokenIterator,u=[\"area\",\"base\",\"br\",\"col\",\"command\",\"embed\",\"hr\",\"img\",\"input\",\"keygen\",\"link\",\"meta\",\"param\",\"source\",\"track\",\"wbr\"],f=function(){this.inherit(i),this.add(\"autoclosing\",\"insertion\",function(e,t,n,r,i){if(i==\">\"){var s=n.getCursorPosition(),f=new o(r,s.row,s.column),l=f.getCurrentToken(),c=!1;if(!l||!a(l,\"meta.tag\")&&(!a(l,\"text\")||!l.value.match(\"/\"))){do l=f.stepBackward();while(l&&(a(l,\"string\")||a(l,\"keyword.operator\")||a(l,\"entity.attribute-name\")||a(l,\"text\")))}else c=!0;if(!l||!a(l,\"meta.tag-name\")||f.stepBackward().value.match(\"/\"))return;var h=l.value;if(c)var h=h.substring(0,s.column-l.start);if(u.indexOf(h)!==-1)return;return{text:\"></\"+h+\">\",selection:[1,1]}}})};r.inherits(f,i),t.HtmlBehaviour=f}),ace.define(\"ace/mode/behaviour/xml\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/behaviour\",\"ace/mode/behaviour/cstyle\",\"ace/token_iterator\"],function(e,t,n){function u(e,t){var n=!0,r=e.type.split(\".\"),i=t.split(\".\");return i.forEach(function(e){if(r.indexOf(e)==-1)return n=!1,!1}),n}var r=e(\"../../lib/oop\"),i=e(\"../behaviour\").Behaviour,s=e(\"./cstyle\").CstyleBehaviour,o=e(\"../../token_iterator\").TokenIterator,a=function(){this.inherit(s,[\"string_dquotes\"]),this.add(\"autoclosing\",\"insertion\",function(e,t,n,r,i){if(i==\">\"){var s=n.getCursorPosition(),a=new o(r,s.row,s.column),f=a.getCurrentToken(),l=!1;if(!f||!u(f,\"meta.tag\")&&(!u(f,\"text\")||!f.value.match(\"/\"))){do f=a.stepBackward();while(f&&(u(f,\"string\")||u(f,\"keyword.operator\")||u(f,\"entity.attribute-name\")||u(f,\"text\")))}else l=!0;if(!f||!u(f,\"meta.tag-name\")||a.stepBackward().value.match(\"/\"))return;var c=f.value;if(l)var c=c.substring(0,s.column-f.start);return{text:\"></\"+c+\">\",selection:[1,1]}}}),this.add(\"autoindent\",\"insertion\",function(e,t,n,r,i){if(i==\"\\n\"){var s=n.getCursorPosition(),o=r.doc.getLine(s.row),u=o.substring(s.column,s.column+2);if(u==\"</\"){var a=this.$getIndent(r.doc.getLine(s.row))+r.getTabString(),f=this.$getIndent(r.doc.getLine(s.row));return{text:\"\\n\"+a+\"\\n\"+f,selection:[1,a.length,1,a.length]}}}})};r.inherits(a,i),t.XmlBehaviour=a}),ace.define(\"ace/mode/folding/html\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/folding/mixed\",\"ace/mode/folding/xml\",\"ace/mode/folding/cstyle\"],function(e,t,n){var r=e(\"../../lib/oop\"),i=e(\"./mixed\").FoldMode,s=e(\"./xml\").FoldMode,o=e(\"./cstyle\").FoldMode,u=t.FoldMode=function(){i.call(this,new s({area:1,base:1,br:1,col:1,command:1,embed:1,hr:1,img:1,input:1,keygen:1,link:1,meta:1,param:1,source:1,track:1,wbr:1,li:1,dt:1,dd:1,p:1,rt:1,rp:1,optgroup:1,option:1,colgroup:1,td:1,th:1}),{\"js-\":new o,\"css-\":new o})};r.inherits(u,i)}),ace.define(\"ace/mode/folding/mixed\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/folding/fold_mode\"],function(e,t,n){var r=e(\"../../lib/oop\"),i=e(\"./fold_mode\").FoldMode,s=t.FoldMode=function(e,t){this.defaultMode=e,this.subModes=t};r.inherits(s,i),function(){this.$getMode=function(e){for(var t in this.subModes)if(e.indexOf(t)===0)return this.subModes[t];return null},this.$tryMode=function(e,t,n,r){var i=this.$getMode(e);return i?i.getFoldWidget(t,n,r):\"\"},this.getFoldWidget=function(e,t,n){return this.$tryMode(e.getState(n-1),e,t,n)||this.$tryMode(e.getState(n),e,t,n)||this.defaultMode.getFoldWidget(e,t,n)},this.getFoldWidgetRange=function(e,t,n){var r=this.$getMode(e.getState(n-1));if(!r||!r.getFoldWidget(e,t,n))r=this.$getMode(e.getState(n));if(!r||!r.getFoldWidget(e,t,n))r=this.defaultMode;return r.getFoldWidgetRange(e,t,n)}}.call(s.prototype)}),ace.define(\"ace/mode/folding/xml\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/range\",\"ace/mode/folding/fold_mode\",\"ace/token_iterator\"],function(e,t,n){var r=e(\"../../lib/oop\"),i=e(\"../../lib/lang\"),s=e(\"../../range\").Range,o=e(\"./fold_mode\").FoldMode,u=e(\"../../token_iterator\").TokenIterator,a=t.FoldMode=function(e){o.call(this),this.voidElements=e||{}};r.inherits(a,o),function(){this.getFoldWidget=function(e,t,n){var r=this._getFirstTagInLine(e,n);return r.closing?t==\"markbeginend\"?\"end\":\"\":!r.tagName||this.voidElements[r.tagName.toLowerCase()]?\"\":r.selfClosing?\"\":r.value.indexOf(\"/\"+r.tagName)!==-1?\"\":\"start\"},this._getFirstTagInLine=function(e,t){var n=e.getTokens(t),r=\"\";for(var s=0;s<n.length;s++){var o=n[s];o.type.indexOf(\"meta.tag\")===0?r+=o.value:r+=i.stringRepeat(\" \",o.value.length)}return this._parseTag(r)},this.tagRe=/^(\\s*)(<?(\\/?)([-_a-zA-Z0-9:!]*)\\s*(\\/?)>?)/,this._parseTag=function(e){var t=this.tagRe.exec(e),n=this.tagRe.lastIndex||0;return this.tagRe.lastIndex=0,{value:e,match:t?t[2]:\"\",closing:t?!!t[3]:!1,selfClosing:t?!!t[5]||t[2]==\"/>\":!1,tagName:t?t[4]:\"\",column:t[1]?n+t[1].length:n}},this._readTagForward=function(e){var t=e.getCurrentToken();if(!t)return null;var n=\"\",r;do if(t.type.indexOf(\"meta.tag\")===0){if(!r)var r={row:e.getCurrentTokenRow(),column:e.getCurrentTokenColumn()};n+=t.value;if(n.indexOf(\">\")!==-1){var i=this._parseTag(n);return i.start=r,i.end={row:e.getCurrentTokenRow(),column:e.getCurrentTokenColumn()+t.value.length},e.stepForward(),i}}while(t=e.stepForward());return null},this._readTagBackward=function(e){var t=e.getCurrentToken();if(!t)return null;var n=\"\",r;do if(t.type.indexOf(\"meta.tag\")===0){r||(r={row:e.getCurrentTokenRow(),column:e.getCurrentTokenColumn()+t.value.length}),n=t.value+n;if(n.indexOf(\"<\")!==-1){var i=this._parseTag(n);return i.end=r,i.start={row:e.getCurrentTokenRow(),column:e.getCurrentTokenColumn()},e.stepBackward(),i}}while(t=e.stepBackward());return null},this._pop=function(e,t){while(e.length){var n=e[e.length-1];if(!t||n.tagName==t.tagName)return e.pop();if(this.voidElements[t.tagName])return;if(this.voidElements[n.tagName]){e.pop();continue}return null}},this.getFoldWidgetRange=function(e,t,n){var r=this._getFirstTagInLine(e,n);if(!r.match)return null;var i=r.closing||r.selfClosing,o=[],a;if(!i){var f=new u(e,n,r.column),l={row:n,column:r.column+r.tagName.length+2};while(a=this._readTagForward(f)){if(a.selfClosing){if(!o.length)return a.start.column+=a.tagName.length+2,a.end.column-=2,s.fromPoints(a.start,a.end);continue}if(a.closing){this._pop(o,a);if(o.length==0)return s.fromPoints(l,a.start)}else o.push(a)}}else{var f=new u(e,n,r.column+r.match.length),c={row:n,column:r.column};while(a=this._readTagBackward(f)){if(a.selfClosing){if(!o.length)return a.start.column+=a.tagName.length+2,a.end.column-=2,s.fromPoints(a.start,a.end);continue}if(!a.closing){this._pop(o,a);if(o.length==0)return a.start.column+=a.tagName.length+2,s.fromPoints(a.start,c)}else o.push(a)}}}}.call(a.prototype)})"
  },
  {
    "path": "public/js/vendor/ace/mode-javascript.js",
    "content": "ace.define(\"ace/mode/javascript\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/tokenizer\",\"ace/mode/javascript_highlight_rules\",\"ace/mode/matching_brace_outdent\",\"ace/range\",\"ace/worker/worker_client\",\"ace/mode/behaviour/cstyle\",\"ace/mode/folding/cstyle\"],function(e,t,n){var r=e(\"../lib/oop\"),i=e(\"./text\").Mode,s=e(\"../tokenizer\").Tokenizer,o=e(\"./javascript_highlight_rules\").JavaScriptHighlightRules,u=e(\"./matching_brace_outdent\").MatchingBraceOutdent,a=e(\"../range\").Range,f=e(\"../worker/worker_client\").WorkerClient,l=e(\"./behaviour/cstyle\").CstyleBehaviour,c=e(\"./folding/cstyle\").FoldMode,h=function(){this.$tokenizer=new s((new o).getRules()),this.$outdent=new u,this.$behaviour=new l,this.foldingRules=new c};r.inherits(h,i),function(){this.toggleCommentLines=function(e,t,n,r){var i=!0,s=/^(\\s*)\\/\\//;for(var o=n;o<=r;o++)if(!s.test(t.getLine(o))){i=!1;break}if(i){var u=new a(0,0,0,0);for(var o=n;o<=r;o++){var f=t.getLine(o),l=f.match(s);u.start.row=o,u.end.row=o,u.end.column=l[0].length,t.replace(u,l[1])}}else t.indentRows(n,r,\"//\")},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.$tokenizer.getLineTokens(t,e),s=i.tokens,o=i.state;if(s.length&&s[s.length-1].type==\"comment\")return r;if(e==\"start\"||e==\"regex_allowed\"){var u=t.match(/^.*(?:\\bcase\\b.*\\:|[\\{\\(\\[])\\s*$/);u&&(r+=n)}else if(e==\"doc-start\"){if(o==\"start\"||e==\"regex_allowed\")return\"\";var u=t.match(/^\\s*(\\/?)\\*/);u&&(u[1]&&(r+=\" \"),r+=\"* \")}return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.createWorker=function(e){var t=new f([\"ace\"],\"ace/mode/javascript_worker\",\"JavaScriptWorker\");return t.attachToDocument(e.getDocument()),t.on(\"jslint\",function(t){e.setAnnotations(t.data)}),t.on(\"terminate\",function(){e.clearAnnotations()}),t}}.call(h.prototype),t.Mode=h}),ace.define(\"ace/mode/javascript_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/doc_comment_highlight_rules\",\"ace/mode/text_highlight_rules\"],function(e,t,n){var r=e(\"../lib/oop\"),i=e(\"./doc_comment_highlight_rules\").DocCommentHighlightRules,s=e(\"./text_highlight_rules\").TextHighlightRules,o=function(){var e=this.createKeywordMapper({\"variable.language\":\"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document\",keyword:\"const|yield|import|get|set|break|case|catch|continue|default|delete|do|else|finally|for|function|if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static\",\"storage.type\":\"const|let|var|function\",\"constant.language\":\"null|Infinity|NaN|undefined\",\"support.function\":\"alert\",\"constant.language.boolean\":\"true|false\"},\"identifier\"),t=\"case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void\",n=\"[a-zA-Z\\\\$_¡-￿][a-zA-Z\\\\d\\\\$_¡-￿]*\\\\b\",r=\"\\\\\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.)\";this.$rules={start:[{token:\"comment\",regex:/\\/\\/.*$/},i.getStartRule(\"doc-start\"),{token:\"comment\",regex:/\\/\\*/,next:\"comment\"},{token:\"string\",regex:\"'(?=.)\",next:\"qstring\"},{token:\"string\",regex:'\"(?=.)',next:\"qqstring\"},{token:\"constant.numeric\",regex:/0[xX][0-9a-fA-F]+\\b/},{token:\"constant.numeric\",regex:/[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b/},{token:[\"storage.type\",\"punctuation.operator\",\"support.function\",\"punctuation.operator\",\"entity.name.function\",\"text\",\"keyword.operator\"],regex:\"(\"+n+\")(\\\\.)(prototype)(\\\\.)(\"+n+\")(\\\\s*)(=)\",next:\"function_arguments\"},{token:[\"storage.type\",\"punctuation.operator\",\"entity.name.function\",\"text\",\"keyword.operator\",\"text\",\"storage.type\",\"text\",\"paren.lparen\"],regex:\"(\"+n+\")(\\\\.)(\"+n+\")(\\\\s*)(=)(\\\\s*)(function)(\\\\s*)(\\\\()\",next:\"function_arguments\"},{token:[\"entity.name.function\",\"text\",\"keyword.operator\",\"text\",\"storage.type\",\"text\",\"paren.lparen\"],regex:\"(\"+n+\")(\\\\s*)(=)(\\\\s*)(function)(\\\\s*)(\\\\()\",next:\"function_arguments\"},{token:[\"storage.type\",\"punctuation.operator\",\"entity.name.function\",\"text\",\"keyword.operator\",\"text\",\"storage.type\",\"text\",\"entity.name.function\",\"text\",\"paren.lparen\"],regex:\"(\"+n+\")(\\\\.)(\"+n+\")(\\\\s*)(=)(\\\\s*)(function)(\\\\s+)(\\\\w+)(\\\\s*)(\\\\()\",next:\"function_arguments\"},{token:[\"storage.type\",\"text\",\"entity.name.function\",\"text\",\"paren.lparen\"],regex:\"(function)(\\\\s+)(\"+n+\")(\\\\s*)(\\\\()\",next:\"function_arguments\"},{token:[\"entity.name.function\",\"text\",\"punctuation.operator\",\"text\",\"storage.type\",\"text\",\"paren.lparen\"],regex:\"(\"+n+\")(\\\\s*)(:)(\\\\s*)(function)(\\\\s*)(\\\\()\",next:\"function_arguments\"},{token:[\"text\",\"text\",\"storage.type\",\"text\",\"paren.lparen\"],regex:\"(:)(\\\\s*)(function)(\\\\s*)(\\\\()\",next:\"function_arguments\"},{token:\"keyword\",regex:\"(?:\"+t+\")\\\\b\",next:\"regex_allowed\"},{token:[\"punctuation.operator\",\"support.function\"],regex:/(\\.)(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:opzzzz|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\\b(?=\\()/},{token:[\"punctuation.operator\",\"support.function.dom\"],regex:/(\\.)(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName)|ById)|Attribute(?:Node)?)|blur)\\b(?=\\()/},{token:[\"punctuation.operator\",\"support.constant\"],regex:/(\\.)(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\\b/},{token:[\"storage.type\",\"punctuation.operator\",\"support.function.firebug\"],regex:/(console)(\\.)(warn|info|log|error|time|timeEnd|assert)\\b/},{token:e,regex:n},{token:\"keyword.operator\",regex:/--|\\+\\+|[!$%&*+\\-~]|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=/,next:\"regex_allowed\"},{token:\"punctuation.operator\",regex:/\\?|\\:|\\,|\\;|\\./,next:\"regex_allowed\"},{token:\"paren.lparen\",regex:/[\\[({]/,next:\"regex_allowed\"},{token:\"paren.rparen\",regex:/[\\])}]/},{token:\"keyword.operator\",regex:/\\/=?/,next:\"regex_allowed\"},{token:\"comment\",regex:/^#!.*$/}],regex_allowed:[i.getStartRule(\"doc-start\"),{token:\"comment\",regex:\"\\\\/\\\\*\",next:\"comment_regex_allowed\"},{token:\"comment\",regex:\"\\\\/\\\\/.*$\"},{token:\"string.regexp\",regex:\"\\\\/\",next:\"regex\"},{token:\"text\",regex:\"\\\\s+\"},{token:\"empty\",regex:\"\",next:\"start\"}],regex:[{token:\"regexp.keyword.operator\",regex:\"\\\\\\\\(?:u[\\\\da-fA-F]{4}|x[\\\\da-fA-F]{2}|.)\"},{token:\"string.regexp\",regex:\"/\\\\w*\",next:\"start\"},{token:\"invalid\",regex:/\\{\\d+,?(?:\\d+)?}[+*]|[+*$^?][+*]|[$^][?]|\\?{3,}/},{token:\"constant.language.escape\",regex:/\\(\\?[:=!]|\\)|{\\d+,?(?:\\d+)?}|{,\\d+}|[+*]\\?|[()$^+*?]/},{token:\"constant.language.delimiter\",regex:/\\|/},{token:\"constant.language.escape\",regex:/\\[\\^?/,next:\"regex_character_class\"},{token:\"empty\",regex:\"$\",next:\"start\"},{defaultToken:\"string.regexp\"}],regex_character_class:[{token:\"regexp.keyword.operator\",regex:\"\\\\\\\\(?:u[\\\\da-fA-F]{4}|x[\\\\da-fA-F]{2}|.)\"},{token:\"constant.language.escape\",regex:\"]\",next:\"regex\"},{token:\"constant.language.escape\",regex:\"-\"},{token:\"empty\",regex:\"$\",next:\"start\"},{defaultToken:\"string.regexp.charachterclass\"}],function_arguments:[{token:\"variable.parameter\",regex:n},{token:\"punctuation.operator\",regex:\"[, ]+\"},{token:\"punctuation.operator\",regex:\"$\"},{token:\"empty\",regex:\"\",next:\"start\"}],comment_regex_allowed:[{token:\"comment\",regex:\"\\\\*\\\\/\",next:\"regex_allowed\"},{defaultToken:\"comment\"}],comment:[{token:\"comment\",regex:\"\\\\*\\\\/\",next:\"start\"},{defaultToken:\"comment\"}],qqstring:[{token:\"constant.language.escape\",regex:r},{token:\"string\",regex:\"\\\\\\\\$\",next:\"qqstring\"},{token:\"string\",regex:'\"|$',next:\"start\"},{defaultToken:\"string\"}],qstring:[{token:\"constant.language.escape\",regex:r},{token:\"string\",regex:\"\\\\\\\\$\",next:\"qstring\"},{token:\"string\",regex:\"'|$\",next:\"start\"},{defaultToken:\"string\"}]},this.embedRules(i,\"doc-\",[i.getEndRule(\"start\")])};r.inherits(o,s),t.JavaScriptHighlightRules=o}),ace.define(\"ace/mode/doc_comment_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"],function(e,t,n){var r=e(\"../lib/oop\"),i=e(\"./text_highlight_rules\").TextHighlightRules,s=function(){this.$rules={start:[{token:\"comment.doc.tag\",regex:\"@[\\\\w\\\\d_]+\"},{token:\"comment.doc.tag\",regex:\"\\\\bTODO\\\\b\"},{defaultToken:\"comment.doc\"}]}};r.inherits(s,i),s.getStartRule=function(e){return{token:\"comment.doc\",regex:\"\\\\/\\\\*(?=\\\\*)\",next:e}},s.getEndRule=function(e){return{token:\"comment.doc\",regex:\"\\\\*\\\\/\",next:e}},t.DocCommentHighlightRules=s}),ace.define(\"ace/mode/matching_brace_outdent\",[\"require\",\"exports\",\"module\",\"ace/range\"],function(e,t,n){var r=e(\"../range\").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\\s+$/.test(e)?/^\\s*\\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\\s*\\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){var t=e.match(/^(\\s+)/);return t?t[1]:\"\"}}).call(i.prototype),t.MatchingBraceOutdent=i}),ace.define(\"ace/mode/behaviour/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/behaviour\",\"ace/token_iterator\",\"ace/lib/lang\"],function(e,t,n){var r=e(\"../../lib/oop\"),i=e(\"../behaviour\").Behaviour,s=e(\"../../token_iterator\").TokenIterator,o=e(\"../../lib/lang\"),u=[\"text\",\"paren.rparen\",\"punctuation.operator\"],a=[\"text\",\"paren.rparen\",\"punctuation.operator\",\"comment\"],f=0,l=-1,c=\"\",h=0,p=-1,d=\"\",v=\"\",m=function(){m.isSaneInsertion=function(e,t){var n=e.getCursorPosition(),r=new s(t,n.row,n.column);if(!this.$matchTokenType(r.getCurrentToken()||\"text\",u)){var i=new s(t,n.row,n.column+1);if(!this.$matchTokenType(i.getCurrentToken()||\"text\",u))return!1}return r.stepForward(),r.getCurrentTokenRow()!==n.row||this.$matchTokenType(r.getCurrentToken()||\"text\",a)},m.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},m.recordAutoInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isAutoInsertedClosing(r,i,c[0])||(f=0),l=r.row,c=n+i.substr(r.column),f++},m.recordMaybeInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isMaybeInsertedClosing(r,i)||(h=0),p=r.row,d=i.substr(0,r.column)+n,v=i.substr(r.column),h++},m.isAutoInsertedClosing=function(e,t,n){return f>0&&e.row===l&&n===c[0]&&t.substr(e.column)===c},m.isMaybeInsertedClosing=function(e,t){return h>0&&e.row===p&&t.substr(e.column)===v&&t.substr(0,e.column)==d},m.popAutoInsertedClosing=function(){c=c.substr(1),f--},m.clearMaybeInsertedClosing=function(){h=0,p=-1},this.add(\"braces\",\"insertion\",function(e,t,n,r,i){var s=n.getCursorPosition(),u=r.doc.getLine(s.row);if(i==\"{\"){var a=n.getSelectionRange(),f=r.doc.getTextRange(a);if(f!==\"\"&&f!==\"{\"&&n.getWrapBehavioursEnabled())return{text:\"{\"+f+\"}\",selection:!1};if(m.isSaneInsertion(n,r))return/[\\]\\}\\)]/.test(u[s.column])?(m.recordAutoInsert(n,r,\"}\"),{text:\"{}\",selection:[1,1]}):(m.recordMaybeInsert(n,r,\"{\"),{text:\"{\",selection:[1,1]})}else if(i==\"}\"){var l=u.substring(s.column,s.column+1);if(l==\"}\"){var c=r.$findOpeningBracket(\"}\",{column:s.column+1,row:s.row});if(c!==null&&m.isAutoInsertedClosing(s,u,i))return m.popAutoInsertedClosing(),{text:\"\",selection:[1,1]}}}else if(i==\"\\n\"||i==\"\\r\\n\"){var p=\"\";m.isMaybeInsertedClosing(s,u)&&(p=o.stringRepeat(\"}\",h),m.clearMaybeInsertedClosing());var l=u.substring(s.column,s.column+1);if(l==\"}\"||p!==\"\"){var d=r.findMatchingBracket({row:s.row,column:s.column},\"}\");if(!d)return null;var v=this.getNextLineIndent(e,u.substring(0,s.column),r.getTabString()),g=this.$getIndent(u);return{text:\"\\n\"+v+\"\\n\"+g+p,selection:[1,v.length,1,v.length]}}}}),this.add(\"braces\",\"deletion\",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s==\"{\"){var o=r.doc.getLine(i.start.row),u=o.substring(i.end.column,i.end.column+1);if(u==\"}\")return i.end.column++,i;h--}}),this.add(\"parens\",\"insertion\",function(e,t,n,r,i){if(i==\"(\"){var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==\"\"&&n.getWrapBehavioursEnabled())return{text:\"(\"+o+\")\",selection:!1};if(m.isSaneInsertion(n,r))return m.recordAutoInsert(n,r,\")\"),{text:\"()\",selection:[1,1]}}else if(i==\")\"){var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f==\")\"){var l=r.$findOpeningBracket(\")\",{column:u.column+1,row:u.row});if(l!==null&&m.isAutoInsertedClosing(u,a,i))return m.popAutoInsertedClosing(),{text:\"\",selection:[1,1]}}}}),this.add(\"parens\",\"deletion\",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s==\"(\"){var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==\")\")return i.end.column++,i}}),this.add(\"brackets\",\"insertion\",function(e,t,n,r,i){if(i==\"[\"){var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==\"\"&&n.getWrapBehavioursEnabled())return{text:\"[\"+o+\"]\",selection:!1};if(m.isSaneInsertion(n,r))return m.recordAutoInsert(n,r,\"]\"),{text:\"[]\",selection:[1,1]}}else if(i==\"]\"){var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f==\"]\"){var l=r.$findOpeningBracket(\"]\",{column:u.column+1,row:u.row});if(l!==null&&m.isAutoInsertedClosing(u,a,i))return m.popAutoInsertedClosing(),{text:\"\",selection:[1,1]}}}}),this.add(\"brackets\",\"deletion\",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s==\"[\"){var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==\"]\")return i.end.column++,i}}),this.add(\"string_dquotes\",\"insertion\",function(e,t,n,r,i){if(i=='\"'||i==\"'\"){var s=i,o=n.getSelectionRange(),u=r.doc.getTextRange(o);if(u!==\"\"&&u!==\"'\"&&u!='\"'&&n.getWrapBehavioursEnabled())return{text:s+u+s,selection:!1};var a=n.getCursorPosition(),f=r.doc.getLine(a.row),l=f.substring(a.column-1,a.column);if(l==\"\\\\\")return null;var c=r.getTokens(o.start.row),h=0,p,d=-1;for(var v=0;v<c.length;v++){p=c[v],p.type==\"string\"?d=-1:d<0&&(d=p.value.indexOf(s));if(p.value.length+h>o.start.column)break;h+=c[v].value.length}if(!p||d<0&&p.type!==\"comment\"&&(p.type!==\"string\"||o.start.column!==p.value.length+h-1&&p.value.lastIndexOf(s)===p.value.length-1)){if(!m.isSaneInsertion(n,r))return;return{text:s+s,selection:[1,1]}}if(p&&p.type===\"string\"){var g=f.substring(a.column,a.column+1);if(g==s)return{text:\"\",selection:[1,1]}}}}),this.add(\"string_dquotes\",\"deletion\",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='\"'||s==\"'\")){var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}})};r.inherits(m,i),t.CstyleBehaviour=m}),ace.define(\"ace/mode/folding/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/range\",\"ace/mode/folding/fold_mode\"],function(e,t,n){var r=e(\"../../lib/oop\"),i=e(\"../../range\").Range,s=e(\"./fold_mode\").FoldMode,o=t.FoldMode=function(){};r.inherits(o,s),function(){this.foldingStartMarker=/(\\{|\\[)[^\\}\\]]*$|^\\s*(\\/\\*)/,this.foldingStopMarker=/^[^\\[\\{]*(\\}|\\])|^[\\s\\*]*(\\*\\/)/,this.getFoldWidgetRange=function(e,t,n){var r=e.getLine(n),i=r.match(this.foldingStartMarker);if(i){var s=i.index;return i[1]?this.openingBracketBlock(e,i[1],n,s):e.getCommentFoldRange(n,s+i[0].length,1)}if(t!==\"markbeginend\")return;var i=r.match(this.foldingStopMarker);if(i){var s=i.index+i[0].length;return i[1]?this.closingBracketBlock(e,i[1],n,s):e.getCommentFoldRange(n,s,-1)}}}.call(o.prototype)})"
  },
  {
    "path": "public/js/vendor/ace/mode-json.js",
    "content": "ace.define(\"ace/mode/json\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/tokenizer\",\"ace/mode/json_highlight_rules\",\"ace/mode/matching_brace_outdent\",\"ace/mode/behaviour/cstyle\",\"ace/mode/folding/cstyle\",\"ace/worker/worker_client\"],function(e,t,n){var r=e(\"../lib/oop\"),i=e(\"./text\").Mode,s=e(\"../tokenizer\").Tokenizer,o=e(\"./json_highlight_rules\").JsonHighlightRules,u=e(\"./matching_brace_outdent\").MatchingBraceOutdent,a=e(\"./behaviour/cstyle\").CstyleBehaviour,f=e(\"./folding/cstyle\").FoldMode,l=e(\"../worker/worker_client\").WorkerClient,c=function(){this.$tokenizer=new s((new o).getRules()),this.$outdent=new u,this.$behaviour=new a,this.foldingRules=new f};r.inherits(c,i),function(){this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t);if(e==\"start\"){var i=t.match(/^.*[\\{\\(\\[]\\s*$/);i&&(r+=n)}return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.createWorker=function(e){var t=new l([\"ace\"],\"ace/mode/json_worker\",\"JsonWorker\");return t.attachToDocument(e.getDocument()),t.on(\"error\",function(t){e.setAnnotations([t.data])}),t.on(\"ok\",function(){e.clearAnnotations()}),t}}.call(c.prototype),t.Mode=c}),ace.define(\"ace/mode/json_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"],function(e,t,n){var r=e(\"../lib/oop\"),i=e(\"./text_highlight_rules\").TextHighlightRules,s=function(){this.$rules={start:[{token:\"variable\",regex:'[\"](?:(?:\\\\\\\\.)|(?:[^\"\\\\\\\\]))*?[\"]\\\\s*(?=:)'},{token:\"string\",regex:'\"',next:\"string\"},{token:\"constant.numeric\",regex:\"0[xX][0-9a-fA-F]+\\\\b\"},{token:\"constant.numeric\",regex:\"[+-]?\\\\d+(?:(?:\\\\.\\\\d*)?(?:[eE][+-]?\\\\d+)?)?\\\\b\"},{token:\"constant.language.boolean\",regex:\"(?:true|false)\\\\b\"},{token:\"invalid.illegal\",regex:\"['](?:(?:\\\\\\\\.)|(?:[^'\\\\\\\\]))*?[']\"},{token:\"invalid.illegal\",regex:\"\\\\/\\\\/.*$\"},{token:\"paren.lparen\",regex:\"[[({]\"},{token:\"paren.rparen\",regex:\"[\\\\])}]\"},{token:\"text\",regex:\"\\\\s+\"}],string:[{token:\"constant.language.escape\",regex:/\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|[\"\\\\\\/bfnrt])/},{token:\"string\",regex:'[^\"\\\\\\\\]+'},{token:\"string\",regex:'\"',next:\"start\"},{token:\"string\",regex:\"\",next:\"start\"}]}};r.inherits(s,i),t.JsonHighlightRules=s}),ace.define(\"ace/mode/matching_brace_outdent\",[\"require\",\"exports\",\"module\",\"ace/range\"],function(e,t,n){var r=e(\"../range\").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\\s+$/.test(e)?/^\\s*\\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\\s*\\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){var t=e.match(/^(\\s+)/);return t?t[1]:\"\"}}).call(i.prototype),t.MatchingBraceOutdent=i}),ace.define(\"ace/mode/behaviour/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/behaviour\",\"ace/token_iterator\",\"ace/lib/lang\"],function(e,t,n){var r=e(\"../../lib/oop\"),i=e(\"../behaviour\").Behaviour,s=e(\"../../token_iterator\").TokenIterator,o=e(\"../../lib/lang\"),u=[\"text\",\"paren.rparen\",\"punctuation.operator\"],a=[\"text\",\"paren.rparen\",\"punctuation.operator\",\"comment\"],f=0,l=-1,c=\"\",h=0,p=-1,d=\"\",v=\"\",m=function(){m.isSaneInsertion=function(e,t){var n=e.getCursorPosition(),r=new s(t,n.row,n.column);if(!this.$matchTokenType(r.getCurrentToken()||\"text\",u)){var i=new s(t,n.row,n.column+1);if(!this.$matchTokenType(i.getCurrentToken()||\"text\",u))return!1}return r.stepForward(),r.getCurrentTokenRow()!==n.row||this.$matchTokenType(r.getCurrentToken()||\"text\",a)},m.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},m.recordAutoInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isAutoInsertedClosing(r,i,c[0])||(f=0),l=r.row,c=n+i.substr(r.column),f++},m.recordMaybeInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isMaybeInsertedClosing(r,i)||(h=0),p=r.row,d=i.substr(0,r.column)+n,v=i.substr(r.column),h++},m.isAutoInsertedClosing=function(e,t,n){return f>0&&e.row===l&&n===c[0]&&t.substr(e.column)===c},m.isMaybeInsertedClosing=function(e,t){return h>0&&e.row===p&&t.substr(e.column)===v&&t.substr(0,e.column)==d},m.popAutoInsertedClosing=function(){c=c.substr(1),f--},m.clearMaybeInsertedClosing=function(){h=0,p=-1},this.add(\"braces\",\"insertion\",function(e,t,n,r,i){var s=n.getCursorPosition(),u=r.doc.getLine(s.row);if(i==\"{\"){var a=n.getSelectionRange(),f=r.doc.getTextRange(a);if(f!==\"\"&&f!==\"{\"&&n.getWrapBehavioursEnabled())return{text:\"{\"+f+\"}\",selection:!1};if(m.isSaneInsertion(n,r))return/[\\]\\}\\)]/.test(u[s.column])?(m.recordAutoInsert(n,r,\"}\"),{text:\"{}\",selection:[1,1]}):(m.recordMaybeInsert(n,r,\"{\"),{text:\"{\",selection:[1,1]})}else if(i==\"}\"){var l=u.substring(s.column,s.column+1);if(l==\"}\"){var c=r.$findOpeningBracket(\"}\",{column:s.column+1,row:s.row});if(c!==null&&m.isAutoInsertedClosing(s,u,i))return m.popAutoInsertedClosing(),{text:\"\",selection:[1,1]}}}else if(i==\"\\n\"||i==\"\\r\\n\"){var p=\"\";m.isMaybeInsertedClosing(s,u)&&(p=o.stringRepeat(\"}\",h),m.clearMaybeInsertedClosing());var l=u.substring(s.column,s.column+1);if(l==\"}\"||p!==\"\"){var d=r.findMatchingBracket({row:s.row,column:s.column},\"}\");if(!d)return null;var v=this.getNextLineIndent(e,u.substring(0,s.column),r.getTabString()),g=this.$getIndent(u);return{text:\"\\n\"+v+\"\\n\"+g+p,selection:[1,v.length,1,v.length]}}}}),this.add(\"braces\",\"deletion\",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s==\"{\"){var o=r.doc.getLine(i.start.row),u=o.substring(i.end.column,i.end.column+1);if(u==\"}\")return i.end.column++,i;h--}}),this.add(\"parens\",\"insertion\",function(e,t,n,r,i){if(i==\"(\"){var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==\"\"&&n.getWrapBehavioursEnabled())return{text:\"(\"+o+\")\",selection:!1};if(m.isSaneInsertion(n,r))return m.recordAutoInsert(n,r,\")\"),{text:\"()\",selection:[1,1]}}else if(i==\")\"){var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f==\")\"){var l=r.$findOpeningBracket(\")\",{column:u.column+1,row:u.row});if(l!==null&&m.isAutoInsertedClosing(u,a,i))return m.popAutoInsertedClosing(),{text:\"\",selection:[1,1]}}}}),this.add(\"parens\",\"deletion\",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s==\"(\"){var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==\")\")return i.end.column++,i}}),this.add(\"brackets\",\"insertion\",function(e,t,n,r,i){if(i==\"[\"){var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==\"\"&&n.getWrapBehavioursEnabled())return{text:\"[\"+o+\"]\",selection:!1};if(m.isSaneInsertion(n,r))return m.recordAutoInsert(n,r,\"]\"),{text:\"[]\",selection:[1,1]}}else if(i==\"]\"){var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f==\"]\"){var l=r.$findOpeningBracket(\"]\",{column:u.column+1,row:u.row});if(l!==null&&m.isAutoInsertedClosing(u,a,i))return m.popAutoInsertedClosing(),{text:\"\",selection:[1,1]}}}}),this.add(\"brackets\",\"deletion\",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s==\"[\"){var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==\"]\")return i.end.column++,i}}),this.add(\"string_dquotes\",\"insertion\",function(e,t,n,r,i){if(i=='\"'||i==\"'\"){var s=i,o=n.getSelectionRange(),u=r.doc.getTextRange(o);if(u!==\"\"&&u!==\"'\"&&u!='\"'&&n.getWrapBehavioursEnabled())return{text:s+u+s,selection:!1};var a=n.getCursorPosition(),f=r.doc.getLine(a.row),l=f.substring(a.column-1,a.column);if(l==\"\\\\\")return null;var c=r.getTokens(o.start.row),h=0,p,d=-1;for(var v=0;v<c.length;v++){p=c[v],p.type==\"string\"?d=-1:d<0&&(d=p.value.indexOf(s));if(p.value.length+h>o.start.column)break;h+=c[v].value.length}if(!p||d<0&&p.type!==\"comment\"&&(p.type!==\"string\"||o.start.column!==p.value.length+h-1&&p.value.lastIndexOf(s)===p.value.length-1)){if(!m.isSaneInsertion(n,r))return;return{text:s+s,selection:[1,1]}}if(p&&p.type===\"string\"){var g=f.substring(a.column,a.column+1);if(g==s)return{text:\"\",selection:[1,1]}}}}),this.add(\"string_dquotes\",\"deletion\",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='\"'||s==\"'\")){var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}})};r.inherits(m,i),t.CstyleBehaviour=m}),ace.define(\"ace/mode/folding/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/range\",\"ace/mode/folding/fold_mode\"],function(e,t,n){var r=e(\"../../lib/oop\"),i=e(\"../../range\").Range,s=e(\"./fold_mode\").FoldMode,o=t.FoldMode=function(){};r.inherits(o,s),function(){this.foldingStartMarker=/(\\{|\\[)[^\\}\\]]*$|^\\s*(\\/\\*)/,this.foldingStopMarker=/^[^\\[\\{]*(\\}|\\])|^[\\s\\*]*(\\*\\/)/,this.getFoldWidgetRange=function(e,t,n){var r=e.getLine(n),i=r.match(this.foldingStartMarker);if(i){var s=i.index;return i[1]?this.openingBracketBlock(e,i[1],n,s):e.getCommentFoldRange(n,s+i[0].length,1)}if(t!==\"markbeginend\")return;var i=r.match(this.foldingStopMarker);if(i){var s=i.index+i[0].length;return i[1]?this.closingBracketBlock(e,i[1],n,s):e.getCommentFoldRange(n,s,-1)}}}.call(o.prototype)})"
  },
  {
    "path": "public/js/vendor/ace/mode-markdown.js",
    "content": "ace.define(\"ace/mode/markdown\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/javascript\",\"ace/mode/xml\",\"ace/mode/html\",\"ace/tokenizer\",\"ace/mode/markdown_highlight_rules\",\"ace/mode/folding/markdown\"],function(e,t,n){var r=e(\"../lib/oop\"),i=e(\"./text\").Mode,s=e(\"./javascript\").Mode,o=e(\"./xml\").Mode,u=e(\"./html\").Mode,a=e(\"../tokenizer\").Tokenizer,f=e(\"./markdown_highlight_rules\").MarkdownHighlightRules,l=e(\"./folding/markdown\").FoldMode,c=function(){var e=new f;this.$tokenizer=new a(e.getRules()),this.$embeds=e.getEmbeds(),this.createModeDelegates({\"js-\":s,\"xml-\":o,\"html-\":u}),this.foldingRules=new l};r.inherits(c,i),function(){this.getNextLineIndent=function(e,t,n){if(e==\"listblock\"){var r=/^(\\s*)(?:([-+*])|(\\d+)\\.)(\\s+)/.exec(t);if(!r)return\"\";var i=r[2];return i||(i=parseInt(r[3],10)+1+\".\"),r[1]+i+r[4]}return this.$getIndent(t)}}.call(c.prototype),t.Mode=c}),ace.define(\"ace/mode/javascript\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/tokenizer\",\"ace/mode/javascript_highlight_rules\",\"ace/mode/matching_brace_outdent\",\"ace/range\",\"ace/worker/worker_client\",\"ace/mode/behaviour/cstyle\",\"ace/mode/folding/cstyle\"],function(e,t,n){var r=e(\"../lib/oop\"),i=e(\"./text\").Mode,s=e(\"../tokenizer\").Tokenizer,o=e(\"./javascript_highlight_rules\").JavaScriptHighlightRules,u=e(\"./matching_brace_outdent\").MatchingBraceOutdent,a=e(\"../range\").Range,f=e(\"../worker/worker_client\").WorkerClient,l=e(\"./behaviour/cstyle\").CstyleBehaviour,c=e(\"./folding/cstyle\").FoldMode,h=function(){this.$tokenizer=new s((new o).getRules()),this.$outdent=new u,this.$behaviour=new l,this.foldingRules=new c};r.inherits(h,i),function(){this.toggleCommentLines=function(e,t,n,r){var i=!0,s=/^(\\s*)\\/\\//;for(var o=n;o<=r;o++)if(!s.test(t.getLine(o))){i=!1;break}if(i){var u=new a(0,0,0,0);for(var o=n;o<=r;o++){var f=t.getLine(o),l=f.match(s);u.start.row=o,u.end.row=o,u.end.column=l[0].length,t.replace(u,l[1])}}else t.indentRows(n,r,\"//\")},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.$tokenizer.getLineTokens(t,e),s=i.tokens,o=i.state;if(s.length&&s[s.length-1].type==\"comment\")return r;if(e==\"start\"||e==\"regex_allowed\"){var u=t.match(/^.*(?:\\bcase\\b.*\\:|[\\{\\(\\[])\\s*$/);u&&(r+=n)}else if(e==\"doc-start\"){if(o==\"start\"||e==\"regex_allowed\")return\"\";var u=t.match(/^\\s*(\\/?)\\*/);u&&(u[1]&&(r+=\" \"),r+=\"* \")}return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.createWorker=function(e){var t=new f([\"ace\"],\"ace/mode/javascript_worker\",\"JavaScriptWorker\");return t.attachToDocument(e.getDocument()),t.on(\"jslint\",function(t){e.setAnnotations(t.data)}),t.on(\"terminate\",function(){e.clearAnnotations()}),t}}.call(h.prototype),t.Mode=h}),ace.define(\"ace/mode/javascript_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/doc_comment_highlight_rules\",\"ace/mode/text_highlight_rules\"],function(e,t,n){var r=e(\"../lib/oop\"),i=e(\"./doc_comment_highlight_rules\").DocCommentHighlightRules,s=e(\"./text_highlight_rules\").TextHighlightRules,o=function(){var e=this.createKeywordMapper({\"variable.language\":\"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document\",keyword:\"const|yield|import|get|set|break|case|catch|continue|default|delete|do|else|finally|for|function|if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static\",\"storage.type\":\"const|let|var|function\",\"constant.language\":\"null|Infinity|NaN|undefined\",\"support.function\":\"alert\",\"constant.language.boolean\":\"true|false\"},\"identifier\"),t=\"case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void\",n=\"[a-zA-Z\\\\$_¡-￿][a-zA-Z\\\\d\\\\$_¡-￿]*\\\\b\",r=\"\\\\\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.)\";this.$rules={start:[{token:\"comment\",regex:/\\/\\/.*$/},i.getStartRule(\"doc-start\"),{token:\"comment\",regex:/\\/\\*/,next:\"comment\"},{token:\"string\",regex:\"'(?=.)\",next:\"qstring\"},{token:\"string\",regex:'\"(?=.)',next:\"qqstring\"},{token:\"constant.numeric\",regex:/0[xX][0-9a-fA-F]+\\b/},{token:\"constant.numeric\",regex:/[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b/},{token:[\"storage.type\",\"punctuation.operator\",\"support.function\",\"punctuation.operator\",\"entity.name.function\",\"text\",\"keyword.operator\"],regex:\"(\"+n+\")(\\\\.)(prototype)(\\\\.)(\"+n+\")(\\\\s*)(=)\",next:\"function_arguments\"},{token:[\"storage.type\",\"punctuation.operator\",\"entity.name.function\",\"text\",\"keyword.operator\",\"text\",\"storage.type\",\"text\",\"paren.lparen\"],regex:\"(\"+n+\")(\\\\.)(\"+n+\")(\\\\s*)(=)(\\\\s*)(function)(\\\\s*)(\\\\()\",next:\"function_arguments\"},{token:[\"entity.name.function\",\"text\",\"keyword.operator\",\"text\",\"storage.type\",\"text\",\"paren.lparen\"],regex:\"(\"+n+\")(\\\\s*)(=)(\\\\s*)(function)(\\\\s*)(\\\\()\",next:\"function_arguments\"},{token:[\"storage.type\",\"punctuation.operator\",\"entity.name.function\",\"text\",\"keyword.operator\",\"text\",\"storage.type\",\"text\",\"entity.name.function\",\"text\",\"paren.lparen\"],regex:\"(\"+n+\")(\\\\.)(\"+n+\")(\\\\s*)(=)(\\\\s*)(function)(\\\\s+)(\\\\w+)(\\\\s*)(\\\\()\",next:\"function_arguments\"},{token:[\"storage.type\",\"text\",\"entity.name.function\",\"text\",\"paren.lparen\"],regex:\"(function)(\\\\s+)(\"+n+\")(\\\\s*)(\\\\()\",next:\"function_arguments\"},{token:[\"entity.name.function\",\"text\",\"punctuation.operator\",\"text\",\"storage.type\",\"text\",\"paren.lparen\"],regex:\"(\"+n+\")(\\\\s*)(:)(\\\\s*)(function)(\\\\s*)(\\\\()\",next:\"function_arguments\"},{token:[\"text\",\"text\",\"storage.type\",\"text\",\"paren.lparen\"],regex:\"(:)(\\\\s*)(function)(\\\\s*)(\\\\()\",next:\"function_arguments\"},{token:\"keyword\",regex:\"(?:\"+t+\")\\\\b\",next:\"regex_allowed\"},{token:[\"punctuation.operator\",\"support.function\"],regex:/(\\.)(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:opzzzz|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\\b(?=\\()/},{token:[\"punctuation.operator\",\"support.function.dom\"],regex:/(\\.)(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName)|ById)|Attribute(?:Node)?)|blur)\\b(?=\\()/},{token:[\"punctuation.operator\",\"support.constant\"],regex:/(\\.)(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\\b/},{token:[\"storage.type\",\"punctuation.operator\",\"support.function.firebug\"],regex:/(console)(\\.)(warn|info|log|error|time|timeEnd|assert)\\b/},{token:e,regex:n},{token:\"keyword.operator\",regex:/--|\\+\\+|[!$%&*+\\-~]|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=/,next:\"regex_allowed\"},{token:\"punctuation.operator\",regex:/\\?|\\:|\\,|\\;|\\./,next:\"regex_allowed\"},{token:\"paren.lparen\",regex:/[\\[({]/,next:\"regex_allowed\"},{token:\"paren.rparen\",regex:/[\\])}]/},{token:\"keyword.operator\",regex:/\\/=?/,next:\"regex_allowed\"},{token:\"comment\",regex:/^#!.*$/}],regex_allowed:[i.getStartRule(\"doc-start\"),{token:\"comment\",regex:\"\\\\/\\\\*\",next:\"comment_regex_allowed\"},{token:\"comment\",regex:\"\\\\/\\\\/.*$\"},{token:\"string.regexp\",regex:\"\\\\/\",next:\"regex\"},{token:\"text\",regex:\"\\\\s+\"},{token:\"empty\",regex:\"\",next:\"start\"}],regex:[{token:\"regexp.keyword.operator\",regex:\"\\\\\\\\(?:u[\\\\da-fA-F]{4}|x[\\\\da-fA-F]{2}|.)\"},{token:\"string.regexp\",regex:\"/\\\\w*\",next:\"start\"},{token:\"invalid\",regex:/\\{\\d+,?(?:\\d+)?}[+*]|[+*$^?][+*]|[$^][?]|\\?{3,}/},{token:\"constant.language.escape\",regex:/\\(\\?[:=!]|\\)|{\\d+,?(?:\\d+)?}|{,\\d+}|[+*]\\?|[()$^+*?]/},{token:\"constant.language.delimiter\",regex:/\\|/},{token:\"constant.language.escape\",regex:/\\[\\^?/,next:\"regex_character_class\"},{token:\"empty\",regex:\"$\",next:\"start\"},{defaultToken:\"string.regexp\"}],regex_character_class:[{token:\"regexp.keyword.operator\",regex:\"\\\\\\\\(?:u[\\\\da-fA-F]{4}|x[\\\\da-fA-F]{2}|.)\"},{token:\"constant.language.escape\",regex:\"]\",next:\"regex\"},{token:\"constant.language.escape\",regex:\"-\"},{token:\"empty\",regex:\"$\",next:\"start\"},{defaultToken:\"string.regexp.charachterclass\"}],function_arguments:[{token:\"variable.parameter\",regex:n},{token:\"punctuation.operator\",regex:\"[, ]+\"},{token:\"punctuation.operator\",regex:\"$\"},{token:\"empty\",regex:\"\",next:\"start\"}],comment_regex_allowed:[{token:\"comment\",regex:\"\\\\*\\\\/\",next:\"regex_allowed\"},{defaultToken:\"comment\"}],comment:[{token:\"comment\",regex:\"\\\\*\\\\/\",next:\"start\"},{defaultToken:\"comment\"}],qqstring:[{token:\"constant.language.escape\",regex:r},{token:\"string\",regex:\"\\\\\\\\$\",next:\"qqstring\"},{token:\"string\",regex:'\"|$',next:\"start\"},{defaultToken:\"string\"}],qstring:[{token:\"constant.language.escape\",regex:r},{token:\"string\",regex:\"\\\\\\\\$\",next:\"qstring\"},{token:\"string\",regex:\"'|$\",next:\"start\"},{defaultToken:\"string\"}]},this.embedRules(i,\"doc-\",[i.getEndRule(\"start\")])};r.inherits(o,s),t.JavaScriptHighlightRules=o}),ace.define(\"ace/mode/doc_comment_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"],function(e,t,n){var r=e(\"../lib/oop\"),i=e(\"./text_highlight_rules\").TextHighlightRules,s=function(){this.$rules={start:[{token:\"comment.doc.tag\",regex:\"@[\\\\w\\\\d_]+\"},{token:\"comment.doc.tag\",regex:\"\\\\bTODO\\\\b\"},{defaultToken:\"comment.doc\"}]}};r.inherits(s,i),s.getStartRule=function(e){return{token:\"comment.doc\",regex:\"\\\\/\\\\*(?=\\\\*)\",next:e}},s.getEndRule=function(e){return{token:\"comment.doc\",regex:\"\\\\*\\\\/\",next:e}},t.DocCommentHighlightRules=s}),ace.define(\"ace/mode/matching_brace_outdent\",[\"require\",\"exports\",\"module\",\"ace/range\"],function(e,t,n){var r=e(\"../range\").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\\s+$/.test(e)?/^\\s*\\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\\s*\\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){var t=e.match(/^(\\s+)/);return t?t[1]:\"\"}}).call(i.prototype),t.MatchingBraceOutdent=i}),ace.define(\"ace/mode/behaviour/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/behaviour\",\"ace/token_iterator\",\"ace/lib/lang\"],function(e,t,n){var r=e(\"../../lib/oop\"),i=e(\"../behaviour\").Behaviour,s=e(\"../../token_iterator\").TokenIterator,o=e(\"../../lib/lang\"),u=[\"text\",\"paren.rparen\",\"punctuation.operator\"],a=[\"text\",\"paren.rparen\",\"punctuation.operator\",\"comment\"],f=0,l=-1,c=\"\",h=0,p=-1,d=\"\",v=\"\",m=function(){m.isSaneInsertion=function(e,t){var n=e.getCursorPosition(),r=new s(t,n.row,n.column);if(!this.$matchTokenType(r.getCurrentToken()||\"text\",u)){var i=new s(t,n.row,n.column+1);if(!this.$matchTokenType(i.getCurrentToken()||\"text\",u))return!1}return r.stepForward(),r.getCurrentTokenRow()!==n.row||this.$matchTokenType(r.getCurrentToken()||\"text\",a)},m.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},m.recordAutoInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isAutoInsertedClosing(r,i,c[0])||(f=0),l=r.row,c=n+i.substr(r.column),f++},m.recordMaybeInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isMaybeInsertedClosing(r,i)||(h=0),p=r.row,d=i.substr(0,r.column)+n,v=i.substr(r.column),h++},m.isAutoInsertedClosing=function(e,t,n){return f>0&&e.row===l&&n===c[0]&&t.substr(e.column)===c},m.isMaybeInsertedClosing=function(e,t){return h>0&&e.row===p&&t.substr(e.column)===v&&t.substr(0,e.column)==d},m.popAutoInsertedClosing=function(){c=c.substr(1),f--},m.clearMaybeInsertedClosing=function(){h=0,p=-1},this.add(\"braces\",\"insertion\",function(e,t,n,r,i){var s=n.getCursorPosition(),u=r.doc.getLine(s.row);if(i==\"{\"){var a=n.getSelectionRange(),f=r.doc.getTextRange(a);if(f!==\"\"&&f!==\"{\"&&n.getWrapBehavioursEnabled())return{text:\"{\"+f+\"}\",selection:!1};if(m.isSaneInsertion(n,r))return/[\\]\\}\\)]/.test(u[s.column])?(m.recordAutoInsert(n,r,\"}\"),{text:\"{}\",selection:[1,1]}):(m.recordMaybeInsert(n,r,\"{\"),{text:\"{\",selection:[1,1]})}else if(i==\"}\"){var l=u.substring(s.column,s.column+1);if(l==\"}\"){var c=r.$findOpeningBracket(\"}\",{column:s.column+1,row:s.row});if(c!==null&&m.isAutoInsertedClosing(s,u,i))return m.popAutoInsertedClosing(),{text:\"\",selection:[1,1]}}}else if(i==\"\\n\"||i==\"\\r\\n\"){var p=\"\";m.isMaybeInsertedClosing(s,u)&&(p=o.stringRepeat(\"}\",h),m.clearMaybeInsertedClosing());var l=u.substring(s.column,s.column+1);if(l==\"}\"||p!==\"\"){var d=r.findMatchingBracket({row:s.row,column:s.column},\"}\");if(!d)return null;var v=this.getNextLineIndent(e,u.substring(0,s.column),r.getTabString()),g=this.$getIndent(u);return{text:\"\\n\"+v+\"\\n\"+g+p,selection:[1,v.length,1,v.length]}}}}),this.add(\"braces\",\"deletion\",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s==\"{\"){var o=r.doc.getLine(i.start.row),u=o.substring(i.end.column,i.end.column+1);if(u==\"}\")return i.end.column++,i;h--}}),this.add(\"parens\",\"insertion\",function(e,t,n,r,i){if(i==\"(\"){var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==\"\"&&n.getWrapBehavioursEnabled())return{text:\"(\"+o+\")\",selection:!1};if(m.isSaneInsertion(n,r))return m.recordAutoInsert(n,r,\")\"),{text:\"()\",selection:[1,1]}}else if(i==\")\"){var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f==\")\"){var l=r.$findOpeningBracket(\")\",{column:u.column+1,row:u.row});if(l!==null&&m.isAutoInsertedClosing(u,a,i))return m.popAutoInsertedClosing(),{text:\"\",selection:[1,1]}}}}),this.add(\"parens\",\"deletion\",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s==\"(\"){var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==\")\")return i.end.column++,i}}),this.add(\"brackets\",\"insertion\",function(e,t,n,r,i){if(i==\"[\"){var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==\"\"&&n.getWrapBehavioursEnabled())return{text:\"[\"+o+\"]\",selection:!1};if(m.isSaneInsertion(n,r))return m.recordAutoInsert(n,r,\"]\"),{text:\"[]\",selection:[1,1]}}else if(i==\"]\"){var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f==\"]\"){var l=r.$findOpeningBracket(\"]\",{column:u.column+1,row:u.row});if(l!==null&&m.isAutoInsertedClosing(u,a,i))return m.popAutoInsertedClosing(),{text:\"\",selection:[1,1]}}}}),this.add(\"brackets\",\"deletion\",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s==\"[\"){var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==\"]\")return i.end.column++,i}}),this.add(\"string_dquotes\",\"insertion\",function(e,t,n,r,i){if(i=='\"'||i==\"'\"){var s=i,o=n.getSelectionRange(),u=r.doc.getTextRange(o);if(u!==\"\"&&u!==\"'\"&&u!='\"'&&n.getWrapBehavioursEnabled())return{text:s+u+s,selection:!1};var a=n.getCursorPosition(),f=r.doc.getLine(a.row),l=f.substring(a.column-1,a.column);if(l==\"\\\\\")return null;var c=r.getTokens(o.start.row),h=0,p,d=-1;for(var v=0;v<c.length;v++){p=c[v],p.type==\"string\"?d=-1:d<0&&(d=p.value.indexOf(s));if(p.value.length+h>o.start.column)break;h+=c[v].value.length}if(!p||d<0&&p.type!==\"comment\"&&(p.type!==\"string\"||o.start.column!==p.value.length+h-1&&p.value.lastIndexOf(s)===p.value.length-1)){if(!m.isSaneInsertion(n,r))return;return{text:s+s,selection:[1,1]}}if(p&&p.type===\"string\"){var g=f.substring(a.column,a.column+1);if(g==s)return{text:\"\",selection:[1,1]}}}}),this.add(\"string_dquotes\",\"deletion\",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='\"'||s==\"'\")){var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}})};r.inherits(m,i),t.CstyleBehaviour=m}),ace.define(\"ace/mode/folding/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/range\",\"ace/mode/folding/fold_mode\"],function(e,t,n){var r=e(\"../../lib/oop\"),i=e(\"../../range\").Range,s=e(\"./fold_mode\").FoldMode,o=t.FoldMode=function(){};r.inherits(o,s),function(){this.foldingStartMarker=/(\\{|\\[)[^\\}\\]]*$|^\\s*(\\/\\*)/,this.foldingStopMarker=/^[^\\[\\{]*(\\}|\\])|^[\\s\\*]*(\\*\\/)/,this.getFoldWidgetRange=function(e,t,n){var r=e.getLine(n),i=r.match(this.foldingStartMarker);if(i){var s=i.index;return i[1]?this.openingBracketBlock(e,i[1],n,s):e.getCommentFoldRange(n,s+i[0].length,1)}if(t!==\"markbeginend\")return;var i=r.match(this.foldingStopMarker);if(i){var s=i.index+i[0].length;return i[1]?this.closingBracketBlock(e,i[1],n,s):e.getCommentFoldRange(n,s,-1)}}}.call(o.prototype)}),ace.define(\"ace/mode/xml\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/tokenizer\",\"ace/mode/xml_highlight_rules\",\"ace/mode/behaviour/xml\",\"ace/mode/folding/xml\"],function(e,t,n){var r=e(\"../lib/oop\"),i=e(\"./text\").Mode,s=e(\"../tokenizer\").Tokenizer,o=e(\"./xml_highlight_rules\").XmlHighlightRules,u=e(\"./behaviour/xml\").XmlBehaviour,a=e(\"./folding/xml\").FoldMode,f=function(){this.$tokenizer=new s((new o).getRules()),this.$behaviour=new u,this.foldingRules=new a};r.inherits(f,i),function(){this.getNextLineIndent=function(e,t,n){return this.$getIndent(t)}}.call(f.prototype),t.Mode=f}),ace.define(\"ace/mode/xml_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/xml_util\",\"ace/mode/text_highlight_rules\"],function(e,t,n){var r=e(\"../lib/oop\"),i=e(\"./xml_util\"),s=e(\"./text_highlight_rules\").TextHighlightRules,o=function(){this.$rules={start:[{token:\"text\",regex:\"<\\\\!\\\\[CDATA\\\\[\",next:\"cdata\"},{token:\"xml-pe\",regex:\"<\\\\?.*?\\\\?>\"},{token:\"comment\",regex:\"<\\\\!--\",next:\"comment\"},{token:\"xml-pe\",regex:\"<\\\\!.*?>\"},{token:\"meta.tag\",regex:\"<\\\\/?\",next:\"tag\"},{token:\"text\",regex:\"\\\\s+\"},{token:\"constant.character.entity\",regex:\"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\\\.-]+;)\"}],cdata:[{token:\"text\",regex:\"\\\\]\\\\]>\",next:\"start\"},{token:\"text\",regex:\"\\\\s+\"},{token:\"text\",regex:\"(?:[^\\\\]]|\\\\](?!\\\\]>))+\"}],comment:[{token:\"comment\",regex:\".*?-->\",next:\"start\"},{token:\"comment\",regex:\".+\"}]},i.tag(this.$rules,\"tag\",\"start\")};r.inherits(o,s),t.XmlHighlightRules=o}),ace.define(\"ace/mode/xml_util\",[\"require\",\"exports\",\"module\"],function(e,t,n){function r(e){return[{token:\"string\",regex:'\"',next:e+\"_qqstring\"},{token:\"string\",regex:\"'\",next:e+\"_qstring\"}]}function i(e,t){return[{token:\"string\",regex:e,next:t},{token:\"constant.language.escape\",regex:\"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\\\.-]+;)\"},{defaultToken:\"string\"}]}t.tag=function(e,t,n,s){e[t]=[{token:\"text\",regex:\"\\\\s+\"},{token:s?function(e){return s[e]?\"meta.tag.tag-name.\"+s[e]:\"meta.tag.tag-name\"}:\"meta.tag.tag-name\",regex:\"[-_a-zA-Z0-9:]+\",next:t+\"_embed_attribute_list\"},{token:\"empty\",regex:\"\",next:t+\"_embed_attribute_list\"}],e[t+\"_qstring\"]=i(\"'\",t+\"_embed_attribute_list\"),e[t+\"_qqstring\"]=i('\"',t+\"_embed_attribute_list\"),e[t+\"_embed_attribute_list\"]=[{token:\"meta.tag.r\",regex:\"/?>\",next:n},{token:\"keyword.operator\",regex:\"=\"},{token:\"entity.other.attribute-name\",regex:\"[-_a-zA-Z0-9:]+\"},{token:\"constant.numeric\",regex:\"[+-]?\\\\d+(?:(?:\\\\.\\\\d*)?(?:[eE][+-]?\\\\d+)?)?\\\\b\"},{token:\"text\",regex:\"\\\\s+\"}].concat(r(t))}}),ace.define(\"ace/mode/behaviour/xml\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/behaviour\",\"ace/mode/behaviour/cstyle\",\"ace/token_iterator\"],function(e,t,n){function u(e,t){var n=!0,r=e.type.split(\".\"),i=t.split(\".\");return i.forEach(function(e){if(r.indexOf(e)==-1)return n=!1,!1}),n}var r=e(\"../../lib/oop\"),i=e(\"../behaviour\").Behaviour,s=e(\"./cstyle\").CstyleBehaviour,o=e(\"../../token_iterator\").TokenIterator,a=function(){this.inherit(s,[\"string_dquotes\"]),this.add(\"autoclosing\",\"insertion\",function(e,t,n,r,i){if(i==\">\"){var s=n.getCursorPosition(),a=new o(r,s.row,s.column),f=a.getCurrentToken(),l=!1;if(!f||!u(f,\"meta.tag\")&&(!u(f,\"text\")||!f.value.match(\"/\"))){do f=a.stepBackward();while(f&&(u(f,\"string\")||u(f,\"keyword.operator\")||u(f,\"entity.attribute-name\")||u(f,\"text\")))}else l=!0;if(!f||!u(f,\"meta.tag-name\")||a.stepBackward().value.match(\"/\"))return;var c=f.value;if(l)var c=c.substring(0,s.column-f.start);return{text:\"></\"+c+\">\",selection:[1,1]}}}),this.add(\"autoindent\",\"insertion\",function(e,t,n,r,i){if(i==\"\\n\"){var s=n.getCursorPosition(),o=r.doc.getLine(s.row),u=o.substring(s.column,s.column+2);if(u==\"</\"){var a=this.$getIndent(r.doc.getLine(s.row))+r.getTabString(),f=this.$getIndent(r.doc.getLine(s.row));return{text:\"\\n\"+a+\"\\n\"+f,selection:[1,a.length,1,a.length]}}}})};r.inherits(a,i),t.XmlBehaviour=a}),ace.define(\"ace/mode/folding/xml\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/range\",\"ace/mode/folding/fold_mode\",\"ace/token_iterator\"],function(e,t,n){var r=e(\"../../lib/oop\"),i=e(\"../../lib/lang\"),s=e(\"../../range\").Range,o=e(\"./fold_mode\").FoldMode,u=e(\"../../token_iterator\").TokenIterator,a=t.FoldMode=function(e){o.call(this),this.voidElements=e||{}};r.inherits(a,o),function(){this.getFoldWidget=function(e,t,n){var r=this._getFirstTagInLine(e,n);return r.closing?t==\"markbeginend\"?\"end\":\"\":!r.tagName||this.voidElements[r.tagName.toLowerCase()]?\"\":r.selfClosing?\"\":r.value.indexOf(\"/\"+r.tagName)!==-1?\"\":\"start\"},this._getFirstTagInLine=function(e,t){var n=e.getTokens(t),r=\"\";for(var s=0;s<n.length;s++){var o=n[s];o.type.indexOf(\"meta.tag\")===0?r+=o.value:r+=i.stringRepeat(\" \",o.value.length)}return this._parseTag(r)},this.tagRe=/^(\\s*)(<?(\\/?)([-_a-zA-Z0-9:!]*)\\s*(\\/?)>?)/,this._parseTag=function(e){var t=this.tagRe.exec(e),n=this.tagRe.lastIndex||0;return this.tagRe.lastIndex=0,{value:e,match:t?t[2]:\"\",closing:t?!!t[3]:!1,selfClosing:t?!!t[5]||t[2]==\"/>\":!1,tagName:t?t[4]:\"\",column:t[1]?n+t[1].length:n}},this._readTagForward=function(e){var t=e.getCurrentToken();if(!t)return null;var n=\"\",r;do if(t.type.indexOf(\"meta.tag\")===0){if(!r)var r={row:e.getCurrentTokenRow(),column:e.getCurrentTokenColumn()};n+=t.value;if(n.indexOf(\">\")!==-1){var i=this._parseTag(n);return i.start=r,i.end={row:e.getCurrentTokenRow(),column:e.getCurrentTokenColumn()+t.value.length},e.stepForward(),i}}while(t=e.stepForward());return null},this._readTagBackward=function(e){var t=e.getCurrentToken();if(!t)return null;var n=\"\",r;do if(t.type.indexOf(\"meta.tag\")===0){r||(r={row:e.getCurrentTokenRow(),column:e.getCurrentTokenColumn()+t.value.length}),n=t.value+n;if(n.indexOf(\"<\")!==-1){var i=this._parseTag(n);return i.end=r,i.start={row:e.getCurrentTokenRow(),column:e.getCurrentTokenColumn()},e.stepBackward(),i}}while(t=e.stepBackward());return null},this._pop=function(e,t){while(e.length){var n=e[e.length-1];if(!t||n.tagName==t.tagName)return e.pop();if(this.voidElements[t.tagName])return;if(this.voidElements[n.tagName]){e.pop();continue}return null}},this.getFoldWidgetRange=function(e,t,n){var r=this._getFirstTagInLine(e,n);if(!r.match)return null;var i=r.closing||r.selfClosing,o=[],a;if(!i){var f=new u(e,n,r.column),l={row:n,column:r.column+r.tagName.length+2};while(a=this._readTagForward(f)){if(a.selfClosing){if(!o.length)return a.start.column+=a.tagName.length+2,a.end.column-=2,s.fromPoints(a.start,a.end);continue}if(a.closing){this._pop(o,a);if(o.length==0)return s.fromPoints(l,a.start)}else o.push(a)}}else{var f=new u(e,n,r.column+r.match.length),c={row:n,column:r.column};while(a=this._readTagBackward(f)){if(a.selfClosing){if(!o.length)return a.start.column+=a.tagName.length+2,a.end.column-=2,s.fromPoints(a.start,a.end);continue}if(!a.closing){this._pop(o,a);if(o.length==0)return a.start.column+=a.tagName.length+2,s.fromPoints(a.start,c)}else o.push(a)}}}}.call(a.prototype)}),ace.define(\"ace/mode/html\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/javascript\",\"ace/mode/css\",\"ace/tokenizer\",\"ace/mode/html_highlight_rules\",\"ace/mode/behaviour/html\",\"ace/mode/folding/html\"],function(e,t,n){var r=e(\"../lib/oop\"),i=e(\"./text\").Mode,s=e(\"./javascript\").Mode,o=e(\"./css\").Mode,u=e(\"../tokenizer\").Tokenizer,a=e(\"./html_highlight_rules\").HtmlHighlightRules,f=e(\"./behaviour/html\").HtmlBehaviour,l=e(\"./folding/html\").FoldMode,c=function(){var e=new a;this.$tokenizer=new u(e.getRules()),this.$behaviour=new f,this.$embeds=e.getEmbeds(),this.createModeDelegates({\"js-\":s,\"css-\":o}),this.foldingRules=new l};r.inherits(c,i),function(){this.toggleCommentLines=function(e,t,n,r){return 0},this.getNextLineIndent=function(e,t,n){return this.$getIndent(t)},this.checkOutdent=function(e,t,n){return!1}}.call(c.prototype),t.Mode=c}),ace.define(\"ace/mode/css\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/tokenizer\",\"ace/mode/css_highlight_rules\",\"ace/mode/matching_brace_outdent\",\"ace/worker/worker_client\",\"ace/mode/behaviour/css\",\"ace/mode/folding/cstyle\"],function(e,t,n){var r=e(\"../lib/oop\"),i=e(\"./text\").Mode,s=e(\"../tokenizer\").Tokenizer,o=e(\"./css_highlight_rules\").CssHighlightRules,u=e(\"./matching_brace_outdent\").MatchingBraceOutdent,a=e(\"../worker/worker_client\").WorkerClient,f=e(\"./behaviour/css\").CssBehaviour,l=e(\"./folding/cstyle\").FoldMode,c=function(){this.$tokenizer=new s((new o).getRules(),\"i\"),this.$outdent=new u,this.$behaviour=new f,this.foldingRules=new l};r.inherits(c,i),function(){this.foldingRules=\"cStyle\",this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.$tokenizer.getLineTokens(t,e).tokens;if(i.length&&i[i.length-1].type==\"comment\")return r;var s=t.match(/^.*\\{\\s*$/);return s&&(r+=n),r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.createWorker=function(e){var t=new a([\"ace\"],\"ace/mode/css_worker\",\"Worker\");return t.attachToDocument(e.getDocument()),t.on(\"csslint\",function(t){e.setAnnotations(t.data)}),t.on(\"terminate\",function(){e.clearAnnotations()}),t}}.call(c.prototype),t.Mode=c}),ace.define(\"ace/mode/css_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/mode/text_highlight_rules\"],function(e,t,n){var r=e(\"../lib/oop\"),i=e(\"../lib/lang\"),s=e(\"./text_highlight_rules\").TextHighlightRules,o=t.supportType=\"animation-fill-mode|alignment-adjust|alignment-baseline|animation-delay|animation-direction|animation-duration|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|animation|appearance|azimuth|backface-visibility|background-attachment|background-break|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|background|baseline-shift|binding|bleed|bookmark-label|bookmark-level|bookmark-state|bookmark-target|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|border|bottom|box-align|box-decoration-break|box-direction|box-flex-group|box-flex|box-lines|box-ordinal-group|box-orient|box-pack|box-shadow|box-sizing|break-after|break-before|break-inside|caption-side|clear|clip|color-profile|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|crop|cue-after|cue-before|cue|cursor|direction|display|dominant-baseline|drop-initial-after-adjust|drop-initial-after-align|drop-initial-before-adjust|drop-initial-before-align|drop-initial-size|drop-initial-value|elevation|empty-cells|fit|fit-position|float-offset|float|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|font|grid-columns|grid-rows|hanging-punctuation|height|hyphenate-after|hyphenate-before|hyphenate-character|hyphenate-lines|hyphenate-resource|hyphens|icon|image-orientation|image-rendering|image-resolution|inline-box-align|left|letter-spacing|line-height|line-stacking-ruby|line-stacking-shift|line-stacking-strategy|line-stacking|list-style-image|list-style-position|list-style-type|list-style|margin-bottom|margin-left|margin-right|margin-top|margin|mark-after|mark-before|mark|marks|marquee-direction|marquee-play-count|marquee-speed|marquee-style|max-height|max-width|min-height|min-width|move-to|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|orphans|outline-color|outline-offset|outline-style|outline-width|outline|overflow-style|overflow-x|overflow-y|overflow|padding-bottom|padding-left|padding-right|padding-top|padding|page-break-after|page-break-before|page-break-inside|page-policy|page|pause-after|pause-before|pause|perspective-origin|perspective|phonemes|pitch-range|pitch|play-during|position|presentation-level|punctuation-trim|quotes|rendering-intent|resize|rest-after|rest-before|rest|richness|right|rotation-point|rotation|ruby-align|ruby-overhang|ruby-position|ruby-span|size|speak-header|speak-numeral|speak-punctuation|speak|speech-rate|stress|string-set|table-layout|target-name|target-new|target-position|target|text-align-last|text-align|text-decoration|text-emphasis|text-height|text-indent|text-justify|text-outline|text-shadow|text-transform|text-wrap|top|transform-origin|transform-style|transform|transition-delay|transition-duration|transition-property|transition-timing-function|transition|unicode-bidi|vertical-align|visibility|voice-balance|voice-duration|voice-family|voice-pitch-range|voice-pitch|voice-rate|voice-stress|voice-volume|volume|white-space-collapse|white-space|widows|width|word-break|word-spacing|word-wrap|z-index\",u=t.supportFunction=\"rgb|rgba|url|attr|counter|counters\",a=t.supportConstant=\"absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero\",f=t.supportConstantColor=\"aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow\",l=t.supportConstantFonts=\"arial|century|comic|courier|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace\",c=t.numRe=\"\\\\-?(?:(?:[0-9]+)|(?:[0-9]*\\\\.[0-9]+))\",h=t.pseudoElements=\"(\\\\:+)\\\\b(after|before|first-letter|first-line|moz-selection|selection)\\\\b\",p=t.pseudoClasses=\"(:)\\\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\\\b\",d=function(){var e=this.createKeywordMapper({\"support.function\":u,\"support.constant\":a,\"support.type\":o,\"support.constant.color\":f,\"support.constant.fonts\":l},\"text\",!0),t=[{token:\"comment\",regex:\"\\\\/\\\\*\",next:\"ruleset_comment\"},{token:\"string\",regex:'[\"](?:(?:\\\\\\\\.)|(?:[^\"\\\\\\\\]))*?[\"]'},{token:\"string\",regex:\"['](?:(?:\\\\\\\\.)|(?:[^'\\\\\\\\]))*?[']\"},{token:[\"constant.numeric\",\"keyword\"],regex:\"(\"+c+\")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)\"},{token:\"constant.numeric\",regex:c},{token:\"constant.numeric\",regex:\"#[a-f0-9]{6}\"},{token:\"constant.numeric\",regex:\"#[a-f0-9]{3}\"},{token:[\"punctuation\",\"entity.other.attribute-name.pseudo-element.css\"],regex:h},{token:[\"punctuation\",\"entity.other.attribute-name.pseudo-class.css\"],regex:p},{token:e,regex:\"\\\\-?[a-zA-Z_][a-zA-Z0-9_\\\\-]*\"}],n=i.copyArray(t);n.unshift({token:\"paren.rparen\",regex:\"\\\\}\",next:\"start\"});var r=i.copyArray(t);r.unshift({token:\"paren.rparen\",regex:\"\\\\}\",next:\"media\"});var s=[{token:\"comment\",regex:\".+\"}],d=i.copyArray(s);d.unshift({token:\"comment\",regex:\".*?\\\\*\\\\/\",next:\"start\"});var v=i.copyArray(s);v.unshift({token:\"comment\",regex:\".*?\\\\*\\\\/\",next:\"media\"});var m=i.copyArray(s);m.unshift({token:\"comment\",regex:\".*?\\\\*\\\\/\",next:\"ruleset\"}),this.$rules={start:[{token:\"comment\",regex:\"\\\\/\\\\*\",next:\"comment\"},{token:\"paren.lparen\",regex:\"\\\\{\",next:\"ruleset\"},{token:\"string\",regex:\"@.*?{\",next:\"media\"},{token:\"keyword\",regex:\"#[a-z0-9-_]+\"},{token:\"variable\",regex:\"\\\\.[a-z0-9-_]+\"},{token:\"string\",regex:\":[a-z0-9-_]+\"},{token:\"constant\",regex:\"[a-z0-9-_]+\"}],media:[{token:\"comment\",regex:\"\\\\/\\\\*\",next:\"media_comment\"},{token:\"paren.lparen\",regex:\"\\\\{\",next:\"media_ruleset\"},{token:\"string\",regex:\"\\\\}\",next:\"start\"},{token:\"keyword\",regex:\"#[a-z0-9-_]+\"},{token:\"variable\",regex:\"\\\\.[a-z0-9-_]+\"},{token:\"string\",regex:\":[a-z0-9-_]+\"},{token:\"constant\",regex:\"[a-z0-9-_]+\"}],comment:d,ruleset:n,ruleset_comment:m,media_ruleset:r,media_comment:v}};r.inherits(d,s),t.CssHighlightRules=d}),ace.define(\"ace/mode/behaviour/css\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/behaviour\",\"ace/mode/behaviour/cstyle\",\"ace/token_iterator\"],function(e,t,n){var r=e(\"../../lib/oop\"),i=e(\"../behaviour\").Behaviour,s=e(\"./cstyle\").CstyleBehaviour,o=e(\"../../token_iterator\").TokenIterator,u=function(){this.inherit(s),this.add(\"colon\",\"insertion\",function(e,t,n,r,i){if(i===\":\"){var s=n.getCursorPosition(),u=new o(r,s.row,s.column),a=u.getCurrentToken();a&&a.value.match(/\\s+/)&&(a=u.stepBackward());if(a&&a.type===\"support.type\"){var f=r.doc.getLine(s.row),l=f.substring(s.column,s.column+1);if(l===\":\")return{text:\"\",selection:[1,1]};if(!f.substring(s.column).match(/^\\s*;/))return{text:\":;\",selection:[1,1]}}}}),this.add(\"colon\",\"deletion\",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s===\":\"){var o=r.doc.getLine(i.start.row),u=o.substring(i.end.column,i.end.column+1);if(u===\";\")return i.end.column++,i}}),this.add(\"semicolon\",\"insertion\",function(e,t,n,r,i){if(i===\";\"){var s=n.getCursorPosition(),o=r.doc.getLine(s.row),u=o.substring(s.column,s.column+1);if(u===\";\")return{text:\"\",selection:[1,1]}}})};r.inherits(u,s),t.CssBehaviour=u}),ace.define(\"ace/mode/html_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/mode/css_highlight_rules\",\"ace/mode/javascript_highlight_rules\",\"ace/mode/xml_util\",\"ace/mode/text_highlight_rules\"],function(e,t,n){var r=e(\"../lib/oop\"),i=e(\"../lib/lang\"),s=e(\"./css_highlight_rules\").CssHighlightRules,o=e(\"./javascript_highlight_rules\").JavaScriptHighlightRules,u=e(\"./xml_util\"),a=e(\"./text_highlight_rules\").TextHighlightRules,f=i.createMap({a:\"anchor\",button:\"form\",form:\"form\",img:\"image\",input:\"form\",label:\"form\",script:\"script\",select:\"form\",textarea:\"form\",style:\"style\",table:\"table\",tbody:\"table\",td:\"table\",tfoot:\"table\",th:\"table\",tr:\"table\"}),l=function(){this.$rules={start:[{token:\"text\",regex:\"<\\\\!\\\\[CDATA\\\\[\",next:\"cdata\"},{token:\"xml-pe\",regex:\"<\\\\?.*?\\\\?>\"},{token:\"comment\",regex:\"<\\\\!--\",next:\"comment\"},{token:\"xml-pe\",regex:\"<\\\\!.*?>\"},{token:\"meta.tag\",regex:\"<(?=script\\\\b)\",next:\"script\"},{token:\"meta.tag\",regex:\"<(?=style\\\\b)\",next:\"style\"},{token:\"meta.tag\",regex:\"<\\\\/?\",next:\"tag\"},{token:\"text\",regex:\"\\\\s+\"},{token:\"constant.character.entity\",regex:\"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\\\.-]+;)\"}],cdata:[{token:\"text\",regex:\"\\\\]\\\\]>\",next:\"start\"}],comment:[{token:\"comment\",regex:\".*?-->\",next:\"start\"},{defaultToken:\"comment\"}]},u.tag(this.$rules,\"tag\",\"start\",f),u.tag(this.$rules,\"style\",\"css-start\",f),u.tag(this.$rules,\"script\",\"js-start\",f),this.embedRules(o,\"js-\",[{token:\"comment\",regex:\"\\\\/\\\\/.*(?=<\\\\/script>)\",next:\"tag\"},{token:\"meta.tag\",regex:\"<\\\\/(?=script)\",next:\"tag\"}]),this.embedRules(s,\"css-\",[{token:\"meta.tag\",regex:\"<\\\\/(?=style)\",next:\"tag\"}])};r.inherits(l,a),t.HtmlHighlightRules=l}),ace.define(\"ace/mode/behaviour/html\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/behaviour/xml\",\"ace/mode/behaviour/cstyle\",\"ace/token_iterator\"],function(e,t,n){function a(e,t){var n=!0,r=e.type.split(\".\"),i=t.split(\".\");return i.forEach(function(e){if(r.indexOf(e)==-1)return n=!1,!1}),n}var r=e(\"../../lib/oop\"),i=e(\"../behaviour/xml\").XmlBehaviour,s=e(\"./cstyle\").CstyleBehaviour,o=e(\"../../token_iterator\").TokenIterator,u=[\"area\",\"base\",\"br\",\"col\",\"command\",\"embed\",\"hr\",\"img\",\"input\",\"keygen\",\"link\",\"meta\",\"param\",\"source\",\"track\",\"wbr\"],f=function(){this.inherit(i),this.add(\"autoclosing\",\"insertion\",function(e,t,n,r,i){if(i==\">\"){var s=n.getCursorPosition(),f=new o(r,s.row,s.column),l=f.getCurrentToken(),c=!1;if(!l||!a(l,\"meta.tag\")&&(!a(l,\"text\")||!l.value.match(\"/\"))){do l=f.stepBackward();while(l&&(a(l,\"string\")||a(l,\"keyword.operator\")||a(l,\"entity.attribute-name\")||a(l,\"text\")))}else c=!0;if(!l||!a(l,\"meta.tag-name\")||f.stepBackward().value.match(\"/\"))return;var h=l.value;if(c)var h=h.substring(0,s.column-l.start);if(u.indexOf(h)!==-1)return;return{text:\"></\"+h+\">\",selection:[1,1]}}})};r.inherits(f,i),t.HtmlBehaviour=f}),ace.define(\"ace/mode/folding/html\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/folding/mixed\",\"ace/mode/folding/xml\",\"ace/mode/folding/cstyle\"],function(e,t,n){var r=e(\"../../lib/oop\"),i=e(\"./mixed\").FoldMode,s=e(\"./xml\").FoldMode,o=e(\"./cstyle\").FoldMode,u=t.FoldMode=function(){i.call(this,new s({area:1,base:1,br:1,col:1,command:1,embed:1,hr:1,img:1,input:1,keygen:1,link:1,meta:1,param:1,source:1,track:1,wbr:1,li:1,dt:1,dd:1,p:1,rt:1,rp:1,optgroup:1,option:1,colgroup:1,td:1,th:1}),{\"js-\":new o,\"css-\":new o})};r.inherits(u,i)}),ace.define(\"ace/mode/folding/mixed\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/folding/fold_mode\"],function(e,t,n){var r=e(\"../../lib/oop\"),i=e(\"./fold_mode\").FoldMode,s=t.FoldMode=function(e,t){this.defaultMode=e,this.subModes=t};r.inherits(s,i),function(){this.$getMode=function(e){for(var t in this.subModes)if(e.indexOf(t)===0)return this.subModes[t];return null},this.$tryMode=function(e,t,n,r){var i=this.$getMode(e);return i?i.getFoldWidget(t,n,r):\"\"},this.getFoldWidget=function(e,t,n){return this.$tryMode(e.getState(n-1),e,t,n)||this.$tryMode(e.getState(n),e,t,n)||this.defaultMode.getFoldWidget(e,t,n)},this.getFoldWidgetRange=function(e,t,n){var r=this.$getMode(e.getState(n-1));if(!r||!r.getFoldWidget(e,t,n))r=this.$getMode(e.getState(n));if(!r||!r.getFoldWidget(e,t,n))r=this.defaultMode;return r.getFoldWidgetRange(e,t,n)}}.call(s.prototype)}),ace.define(\"ace/mode/markdown_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\",\"ace/mode/javascript_highlight_rules\",\"ace/mode/xml_highlight_rules\",\"ace/mode/html_highlight_rules\",\"ace/mode/css_highlight_rules\"],function(e,t,n){function f(e,t){return{token:\"support.function\",regex:\"^```\"+e+\"\\\\s*$\",next:t+\"start\"}}var r=e(\"../lib/oop\"),i=e(\"./text_highlight_rules\").TextHighlightRules,s=e(\"./javascript_highlight_rules\").JavaScriptHighlightRules,o=e(\"./xml_highlight_rules\").XmlHighlightRules,u=e(\"./html_highlight_rules\").HtmlHighlightRules,a=e(\"./css_highlight_rules\").CssHighlightRules,l=function(){this.$rules={basic:[{token:\"support.function\",regex:\"(`+)(.*?[^`])(\\\\1)\"},{token:[\"text\",\"constant\",\"text\",\"url\",\"string\",\"text\"],regex:'^([ ]{0,3}\\\\[)([^\\\\]]+)(\\\\]:\\\\s*)([^ ]+)(\\\\s*(?:[\"][^\"]+[\"])?(\\\\s*))$'},{token:[\"text\",\"string\",\"text\",\"constant\",\"text\"],regex:\"(\\\\[)((?:[[^\\\\]]*\\\\]|[^\\\\[\\\\]])*)(\\\\][ ]?(?:\\\\n[ ]*)?\\\\[)(.*?)(\\\\])\"},{token:[\"text\",\"string\",\"text\",\"markup.underline\",\"string\",\"text\"],regex:'(\\\\[)(\\\\[[^\\\\]]*\\\\]|[^\\\\[\\\\]]*)(\\\\]\\\\([ \\\\t]*)(<?(?:(?:[^\\\\(]*?\\\\([^\\\\)]*?\\\\)\\\\S*?)|(?:.*?))>?)((?:[ \t]*\"(?:.*?)\"[ \\\\t]*)?)(\\\\))'},{token:\"string\",regex:\"([*]{2}|[_]{2}(?=\\\\S))(.*?\\\\S[*_]*)(\\\\1)\"},{token:\"string\",regex:\"([*]|[_](?=\\\\S))(.*?\\\\S[*_]*)(\\\\1)\"},{token:[\"text\",\"url\",\"text\"],regex:\"(<)((?:https?|ftp|dict):[^'\\\">\\\\s]+|(?:mailto:)?[-.\\\\w]+\\\\@[-a-z0-9]+(?:\\\\.[-a-z0-9]+)*\\\\.[a-z]+)(>)\"}],allowBlock:[{token:\"support.function\",regex:\"^ {4}.+\",next:\"allowBlock\"},{token:\"empty\",regex:\"\",next:\"start\"}],start:[{token:\"empty_line\",regex:\"^$\",next:\"allowBlock\"},{token:\"markup.heading.1\",regex:\"^=+(?=\\\\s*$)\"},{token:\"markup.heading.2\",regex:\"^\\\\-+(?=\\\\s*$)\"},{token:function(e){return\"markup.heading.\"+e.search(/[^#]/)},regex:\"^#{1,6}(?:[^ #].*| +.*(?:[^ #].*|[^ ]+.* +#+ *))$\"},f(\"(?:javascript|js)\",\"js-\"),f(\"xml\",\"xml-\"),f(\"html\",\"html-\"),f(\"css\",\"css-\"),{token:\"support.function\",regex:\"^```\\\\s*[a-zA-Z]*(?:{.*?\\\\})?\\\\s*$\",next:\"githubblock\"},{token:\"string\",regex:\"^>[ ].+$\",next:\"blockquote\"},{token:\"constant\",regex:\"^ {0,2}(?:(?: ?\\\\* ?){3,}|(?: ?\\\\- ?){3,}|(?: ?\\\\_ ?){3,})\\\\s*$\",next:\"allowBlock\"},{token:\"markup.list\",regex:\"^\\\\s{0,3}(?:[*+-]|\\\\d+\\\\.)\\\\s+\",next:\"listblock-start\"},{include:\"basic\"}],\"listblock-start\":[{token:\"support.variable\",regex:/(?:\\[[ x]\\])?/,next:\"listblock\"}],listblock:[{token:\"empty_line\",regex:\"^$\",next:\"start\"},{include:\"basic\",noEscape:!0},{token:\"markup.list\",regex:\"^\\\\s{0,3}(?:[*+-]|\\\\d+\\\\.)\\\\s+\",next:\"listblock-start\"},{defaultToken:\"markup.list\"}],blockquote:[{token:\"empty_line\",regex:\"^\\\\s*$\",next:\"start\"},{token:\"string\",regex:\".+\"}],githubblock:[{token:\"support.function\",regex:\"^```\",next:\"start\"},{token:\"support.function\",regex:\".+\"}]},this.embedRules(s,\"js-\",[{token:\"support.function\",regex:\"^```\",next:\"start\"}]),this.embedRules(u,\"html-\",[{token:\"support.function\",regex:\"^```\",next:\"start\"}]),this.embedRules(a,\"css-\",[{token:\"support.function\",regex:\"^```\",next:\"start\"}]),this.embedRules(o,\"xml-\",[{token:\"support.function\",regex:\"^```\",next:\"start\"}]);var e=(new u).getRules();for(var t in e)this.$rules[t]?this.$rules[t]=this.$rules[t].concat(e[t]):this.$rules[t]=e[t];this.normalizeRules()};r.inherits(l,i),t.MarkdownHighlightRules=l}),ace.define(\"ace/mode/folding/markdown\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/folding/fold_mode\",\"ace/range\"],function(e,t,n){var r=e(\"../../lib/oop\"),i=e(\"./fold_mode\").FoldMode,s=e(\"../../range\").Range,o=t.FoldMode=function(){};r.inherits(o,i),function(){this.foldingStartMarker=/^(?:[=-]+\\s*$|#{1,6} |`{3})/,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);return this.foldingStartMarker.test(r)?r[0]==\"`\"?e.bgTokenizer.getState(n)==\"start\"?\"end\":\"start\":\"start\":\"\"},this.getFoldWidgetRange=function(e,t,n){function l(t){return f=e.getTokens(t)[0],f&&f.type.lastIndexOf(c,0)===0}function h(){var e=f.value[0];return e==\"=\"?6:e==\"-\"?5:7-f.value.search(/[^#]/)}var r=e.getLine(n),i=r.length,o=e.getLength(),u=n,a=n;if(!r.match(this.foldingStartMarker))return;if(r[0]==\"`\"){if(e.bgTokenizer.getState(n)!==\"start\"){while(++n<o){r=e.getLine(n);if(r[0]==\"`\"&r.substring(0,3)==\"```\")break}return new s(u,i,n,0)}while(n-->0){r=e.getLine(n);if(r[0]==\"`\"&r.substring(0,3)==\"```\")break}return new s(n,r.length,u,0)}var f,c=\"markup.heading\";if(l(n)){var p=h();while(++n<o){if(!l(n))continue;var d=h();if(d>=p)break}a=n-(!f||[\"=\",\"-\"].indexOf(f.value[0])==-1?1:2);if(a>u)while(a>u&&/^\\s*$/.test(e.getLine(a)))a--;if(a>u){var v=e.getLine(a).length;return new s(u,i,a,v)}}}}.call(o.prototype)})"
  },
  {
    "path": "public/js/vendor/ace/mode-php.js",
    "content": "ace.define(\"ace/mode/php\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/tokenizer\",\"ace/mode/php_highlight_rules\",\"ace/mode/matching_brace_outdent\",\"ace/range\",\"ace/worker/worker_client\",\"ace/mode/behaviour/cstyle\",\"ace/mode/folding/cstyle\",\"ace/unicode\"],function(e,t,n){var r=e(\"../lib/oop\"),i=e(\"./text\").Mode,s=e(\"../tokenizer\").Tokenizer,o=e(\"./php_highlight_rules\").PhpHighlightRules,u=e(\"./php_highlight_rules\").PhpLangHighlightRules,a=e(\"./matching_brace_outdent\").MatchingBraceOutdent,f=e(\"../range\").Range,l=e(\"../worker/worker_client\").WorkerClient,c=e(\"./behaviour/cstyle\").CstyleBehaviour,h=e(\"./folding/cstyle\").FoldMode,p=e(\"../unicode\"),d=function(e){var t=e&&e.inline,n=t?u:o;this.$tokenizer=new s((new n).getRules()),this.$outdent=new a,this.$behaviour=new c,this.foldingRules=new h};r.inherits(d,i),function(){this.tokenRe=new RegExp(\"^[\"+p.packages.L+p.packages.Mn+p.packages.Mc+p.packages.Nd+p.packages.Pc+\"_]+\",\"g\"),this.nonTokenRe=new RegExp(\"^(?:[^\"+p.packages.L+p.packages.Mn+p.packages.Mc+p.packages.Nd+p.packages.Pc+\"_]|s])+\",\"g\"),this.toggleCommentLines=function(e,t,n,r){var i=!0,s=/^(\\s*)#/;for(var o=n;o<=r;o++)if(!s.test(t.getLine(o))){i=!1;break}if(i){var u=new f(0,0,0,0);for(var o=n;o<=r;o++){var a=t.getLine(o),l=a.match(s);u.start.row=o,u.end.row=o,u.end.column=l[0].length,t.replace(u,l[1])}}else t.indentRows(n,r,\"#\")},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.$tokenizer.getLineTokens(t,e),s=i.tokens,o=i.state;if(s.length&&s[s.length-1].type==\"comment\")return r;if(e==\"php-start\"){var u=t.match(/^.*[\\{\\(\\[\\:]\\s*$/);u&&(r+=n)}else if(e==\"php-doc-start\"){if(o!=\"php-doc-start\")return\"\";var u=t.match(/^\\s*(\\/?)\\*/);u&&(u[1]&&(r+=\" \"),r+=\"* \")}return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.createWorker=function(e){var t=new l([\"ace\"],\"ace/mode/php_worker\",\"PhpWorker\");return t.attachToDocument(e.getDocument()),t.on(\"error\",function(t){e.setAnnotations(t.data)}),t.on(\"ok\",function(){e.clearAnnotations()}),t}}.call(d.prototype),t.Mode=d}),ace.define(\"ace/mode/php_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/mode/doc_comment_highlight_rules\",\"ace/mode/text_highlight_rules\",\"ace/mode/html_highlight_rules\"],function(e,t,n){var r=e(\"../lib/oop\"),i=e(\"../lib/lang\"),s=e(\"./doc_comment_highlight_rules\").DocCommentHighlightRules,o=e(\"./text_highlight_rules\").TextHighlightRules,u=e(\"./html_highlight_rules\").HtmlHighlightRules,a=function(){var e=s,t=i.arrayToMap(\"abs|acos|acosh|addcslashes|addslashes|aggregate|aggregate_info|aggregate_methods|aggregate_methods_by_list|aggregate_methods_by_regexp|aggregate_properties|aggregate_properties_by_list|aggregate_properties_by_regexp|aggregation_info|amqpconnection|amqpexchange|amqpqueue|apache_child_terminate|apache_get_modules|apache_get_version|apache_getenv|apache_lookup_uri|apache_note|apache_request_headers|apache_reset_timeout|apache_response_headers|apache_setenv|apc_add|apc_bin_dump|apc_bin_dumpfile|apc_bin_load|apc_bin_loadfile|apc_cache_info|apc_cas|apc_clear_cache|apc_compile_file|apc_dec|apc_define_constants|apc_delete|apc_delete_file|apc_exists|apc_fetch|apc_inc|apc_load_constants|apc_sma_info|apc_store|apciterator|apd_breakpoint|apd_callstack|apd_clunk|apd_continue|apd_croak|apd_dump_function_table|apd_dump_persistent_resources|apd_dump_regular_resources|apd_echo|apd_get_active_symbols|apd_set_pprof_trace|apd_set_session|apd_set_session_trace|apd_set_session_trace_socket|appenditerator|array|array_change_key_case|array_chunk|array_combine|array_count_values|array_diff|array_diff_assoc|array_diff_key|array_diff_uassoc|array_diff_ukey|array_fill|array_fill_keys|array_filter|array_flip|array_intersect|array_intersect_assoc|array_intersect_key|array_intersect_uassoc|array_intersect_ukey|array_key_exists|array_keys|array_map|array_merge|array_merge_recursive|array_multisort|array_pad|array_pop|array_product|array_push|array_rand|array_reduce|array_replace|array_replace_recursive|array_reverse|array_search|array_shift|array_slice|array_splice|array_sum|array_udiff|array_udiff_assoc|array_udiff_uassoc|array_uintersect|array_uintersect_assoc|array_uintersect_uassoc|array_unique|array_unshift|array_values|array_walk|array_walk_recursive|arrayaccess|arrayiterator|arrayobject|arsort|asin|asinh|asort|assert|assert_options|atan|atan2|atanh|audioproperties|badfunctioncallexception|badmethodcallexception|base64_decode|base64_encode|base_convert|basename|bbcode_add_element|bbcode_add_smiley|bbcode_create|bbcode_destroy|bbcode_parse|bbcode_set_arg_parser|bbcode_set_flags|bcadd|bccomp|bcdiv|bcmod|bcmul|bcompiler_load|bcompiler_load_exe|bcompiler_parse_class|bcompiler_read|bcompiler_write_class|bcompiler_write_constant|bcompiler_write_exe_footer|bcompiler_write_file|bcompiler_write_footer|bcompiler_write_function|bcompiler_write_functions_from_file|bcompiler_write_header|bcompiler_write_included_filename|bcpow|bcpowmod|bcscale|bcsqrt|bcsub|bin2hex|bind_textdomain_codeset|bindec|bindtextdomain|bson_decode|bson_encode|bumpValue|bzclose|bzcompress|bzdecompress|bzerrno|bzerror|bzerrstr|bzflush|bzopen|bzread|bzwrite|cachingiterator|cairo|cairo_create|cairo_font_face_get_type|cairo_font_face_status|cairo_font_options_create|cairo_font_options_equal|cairo_font_options_get_antialias|cairo_font_options_get_hint_metrics|cairo_font_options_get_hint_style|cairo_font_options_get_subpixel_order|cairo_font_options_hash|cairo_font_options_merge|cairo_font_options_set_antialias|cairo_font_options_set_hint_metrics|cairo_font_options_set_hint_style|cairo_font_options_set_subpixel_order|cairo_font_options_status|cairo_format_stride_for_width|cairo_image_surface_create|cairo_image_surface_create_for_data|cairo_image_surface_create_from_png|cairo_image_surface_get_data|cairo_image_surface_get_format|cairo_image_surface_get_height|cairo_image_surface_get_stride|cairo_image_surface_get_width|cairo_matrix_create_scale|cairo_matrix_create_translate|cairo_matrix_invert|cairo_matrix_multiply|cairo_matrix_rotate|cairo_matrix_transform_distance|cairo_matrix_transform_point|cairo_matrix_translate|cairo_pattern_add_color_stop_rgb|cairo_pattern_add_color_stop_rgba|cairo_pattern_create_for_surface|cairo_pattern_create_linear|cairo_pattern_create_radial|cairo_pattern_create_rgb|cairo_pattern_create_rgba|cairo_pattern_get_color_stop_count|cairo_pattern_get_color_stop_rgba|cairo_pattern_get_extend|cairo_pattern_get_filter|cairo_pattern_get_linear_points|cairo_pattern_get_matrix|cairo_pattern_get_radial_circles|cairo_pattern_get_rgba|cairo_pattern_get_surface|cairo_pattern_get_type|cairo_pattern_set_extend|cairo_pattern_set_filter|cairo_pattern_set_matrix|cairo_pattern_status|cairo_pdf_surface_create|cairo_pdf_surface_set_size|cairo_ps_get_levels|cairo_ps_level_to_string|cairo_ps_surface_create|cairo_ps_surface_dsc_begin_page_setup|cairo_ps_surface_dsc_begin_setup|cairo_ps_surface_dsc_comment|cairo_ps_surface_get_eps|cairo_ps_surface_restrict_to_level|cairo_ps_surface_set_eps|cairo_ps_surface_set_size|cairo_scaled_font_create|cairo_scaled_font_extents|cairo_scaled_font_get_ctm|cairo_scaled_font_get_font_face|cairo_scaled_font_get_font_matrix|cairo_scaled_font_get_font_options|cairo_scaled_font_get_scale_matrix|cairo_scaled_font_get_type|cairo_scaled_font_glyph_extents|cairo_scaled_font_status|cairo_scaled_font_text_extents|cairo_surface_copy_page|cairo_surface_create_similar|cairo_surface_finish|cairo_surface_flush|cairo_surface_get_content|cairo_surface_get_device_offset|cairo_surface_get_font_options|cairo_surface_get_type|cairo_surface_mark_dirty|cairo_surface_mark_dirty_rectangle|cairo_surface_set_device_offset|cairo_surface_set_fallback_resolution|cairo_surface_show_page|cairo_surface_status|cairo_surface_write_to_png|cairo_svg_surface_create|cairo_svg_surface_restrict_to_version|cairo_svg_version_to_string|cairoantialias|cairocontent|cairocontext|cairoexception|cairoextend|cairofillrule|cairofilter|cairofontface|cairofontoptions|cairofontslant|cairofonttype|cairofontweight|cairoformat|cairogradientpattern|cairohintmetrics|cairohintstyle|cairoimagesurface|cairolineargradient|cairolinecap|cairolinejoin|cairomatrix|cairooperator|cairopath|cairopattern|cairopatterntype|cairopdfsurface|cairopslevel|cairopssurface|cairoradialgradient|cairoscaledfont|cairosolidpattern|cairostatus|cairosubpixelorder|cairosurface|cairosurfacepattern|cairosurfacetype|cairosvgsurface|cairosvgversion|cairotoyfontface|cal_days_in_month|cal_from_jd|cal_info|cal_to_jd|calcul_hmac|calculhmac|call_user_func|call_user_func_array|call_user_method|call_user_method_array|callbackfilteriterator|ceil|chdb|chdb_create|chdir|checkdate|checkdnsrr|chgrp|chmod|chop|chown|chr|chroot|chunk_split|class_alias|class_exists|class_implements|class_parents|classkit_import|classkit_method_add|classkit_method_copy|classkit_method_redefine|classkit_method_remove|classkit_method_rename|clearstatcache|clone|closedir|closelog|collator|com|com_addref|com_create_guid|com_event_sink|com_get|com_get_active_object|com_invoke|com_isenum|com_load|com_load_typelib|com_message_pump|com_print_typeinfo|com_propget|com_propput|com_propset|com_release|com_set|compact|connection_aborted|connection_status|connection_timeout|constant|construct|construct|construct|convert_cyr_string|convert_uudecode|convert_uuencode|copy|cos|cosh|count|count_chars|countable|counter_bump|counter_bump_value|counter_create|counter_get|counter_get_meta|counter_get_named|counter_get_value|counter_reset|counter_reset_value|crack_check|crack_closedict|crack_getlastmessage|crack_opendict|crc32|create_function|crypt|ctype_alnum|ctype_alpha|ctype_cntrl|ctype_digit|ctype_graph|ctype_lower|ctype_print|ctype_punct|ctype_space|ctype_upper|ctype_xdigit|cubrid_affected_rows|cubrid_bind|cubrid_client_encoding|cubrid_close|cubrid_close_prepare|cubrid_close_request|cubrid_col_get|cubrid_col_size|cubrid_column_names|cubrid_column_types|cubrid_commit|cubrid_connect|cubrid_connect_with_url|cubrid_current_oid|cubrid_data_seek|cubrid_db_name|cubrid_disconnect|cubrid_drop|cubrid_errno|cubrid_error|cubrid_error_code|cubrid_error_code_facility|cubrid_error_msg|cubrid_execute|cubrid_fetch|cubrid_fetch_array|cubrid_fetch_assoc|cubrid_fetch_field|cubrid_fetch_lengths|cubrid_fetch_object|cubrid_fetch_row|cubrid_field_flags|cubrid_field_len|cubrid_field_name|cubrid_field_seek|cubrid_field_table|cubrid_field_type|cubrid_free_result|cubrid_get|cubrid_get_autocommit|cubrid_get_charset|cubrid_get_class_name|cubrid_get_client_info|cubrid_get_db_parameter|cubrid_get_server_info|cubrid_insert_id|cubrid_is_instance|cubrid_list_dbs|cubrid_load_from_glo|cubrid_lob_close|cubrid_lob_export|cubrid_lob_get|cubrid_lob_send|cubrid_lob_size|cubrid_lock_read|cubrid_lock_write|cubrid_move_cursor|cubrid_new_glo|cubrid_next_result|cubrid_num_cols|cubrid_num_fields|cubrid_num_rows|cubrid_ping|cubrid_prepare|cubrid_put|cubrid_query|cubrid_real_escape_string|cubrid_result|cubrid_rollback|cubrid_save_to_glo|cubrid_schema|cubrid_send_glo|cubrid_seq_drop|cubrid_seq_insert|cubrid_seq_put|cubrid_set_add|cubrid_set_autocommit|cubrid_set_db_parameter|cubrid_set_drop|cubrid_unbuffered_query|cubrid_version|curl_close|curl_copy_handle|curl_errno|curl_error|curl_exec|curl_getinfo|curl_init|curl_multi_add_handle|curl_multi_close|curl_multi_exec|curl_multi_getcontent|curl_multi_info_read|curl_multi_init|curl_multi_remove_handle|curl_multi_select|curl_setopt|curl_setopt_array|curl_version|current|cyrus_authenticate|cyrus_bind|cyrus_close|cyrus_connect|cyrus_query|cyrus_unbind|date|date_add|date_create|date_create_from_format|date_date_set|date_default_timezone_get|date_default_timezone_set|date_diff|date_format|date_get_last_errors|date_interval_create_from_date_string|date_interval_format|date_isodate_set|date_modify|date_offset_get|date_parse|date_parse_from_format|date_sub|date_sun_info|date_sunrise|date_sunset|date_time_set|date_timestamp_get|date_timestamp_set|date_timezone_get|date_timezone_set|dateinterval|dateperiod|datetime|datetimezone|db2_autocommit|db2_bind_param|db2_client_info|db2_close|db2_column_privileges|db2_columns|db2_commit|db2_conn_error|db2_conn_errormsg|db2_connect|db2_cursor_type|db2_escape_string|db2_exec|db2_execute|db2_fetch_array|db2_fetch_assoc|db2_fetch_both|db2_fetch_object|db2_fetch_row|db2_field_display_size|db2_field_name|db2_field_num|db2_field_precision|db2_field_scale|db2_field_type|db2_field_width|db2_foreign_keys|db2_free_result|db2_free_stmt|db2_get_option|db2_last_insert_id|db2_lob_read|db2_next_result|db2_num_fields|db2_num_rows|db2_pclose|db2_pconnect|db2_prepare|db2_primary_keys|db2_procedure_columns|db2_procedures|db2_result|db2_rollback|db2_server_info|db2_set_option|db2_special_columns|db2_statistics|db2_stmt_error|db2_stmt_errormsg|db2_table_privileges|db2_tables|dba_close|dba_delete|dba_exists|dba_fetch|dba_firstkey|dba_handlers|dba_insert|dba_key_split|dba_list|dba_nextkey|dba_open|dba_optimize|dba_popen|dba_replace|dba_sync|dbase_add_record|dbase_close|dbase_create|dbase_delete_record|dbase_get_header_info|dbase_get_record|dbase_get_record_with_names|dbase_numfields|dbase_numrecords|dbase_open|dbase_pack|dbase_replace_record|dbplus_add|dbplus_aql|dbplus_chdir|dbplus_close|dbplus_curr|dbplus_errcode|dbplus_errno|dbplus_find|dbplus_first|dbplus_flush|dbplus_freealllocks|dbplus_freelock|dbplus_freerlocks|dbplus_getlock|dbplus_getunique|dbplus_info|dbplus_last|dbplus_lockrel|dbplus_next|dbplus_open|dbplus_prev|dbplus_rchperm|dbplus_rcreate|dbplus_rcrtexact|dbplus_rcrtlike|dbplus_resolve|dbplus_restorepos|dbplus_rkeys|dbplus_ropen|dbplus_rquery|dbplus_rrename|dbplus_rsecindex|dbplus_runlink|dbplus_rzap|dbplus_savepos|dbplus_setindex|dbplus_setindexbynumber|dbplus_sql|dbplus_tcl|dbplus_tremove|dbplus_undo|dbplus_undoprepare|dbplus_unlockrel|dbplus_unselect|dbplus_update|dbplus_xlockrel|dbplus_xunlockrel|dbx_close|dbx_compare|dbx_connect|dbx_error|dbx_escape_string|dbx_fetch_row|dbx_query|dbx_sort|dcgettext|dcngettext|deaggregate|debug_backtrace|debug_print_backtrace|debug_zval_dump|decbin|dechex|decoct|define|define_syslog_variables|defined|deg2rad|delete|dgettext|die|dio_close|dio_fcntl|dio_open|dio_read|dio_seek|dio_stat|dio_tcsetattr|dio_truncate|dio_write|dir|directoryiterator|dirname|disk_free_space|disk_total_space|diskfreespace|dl|dngettext|dns_check_record|dns_get_mx|dns_get_record|dom_import_simplexml|domainexception|domattr|domattribute_name|domattribute_set_value|domattribute_specified|domattribute_value|domcharacterdata|domcomment|domdocument|domdocument_add_root|domdocument_create_attribute|domdocument_create_cdata_section|domdocument_create_comment|domdocument_create_element|domdocument_create_element_ns|domdocument_create_entity_reference|domdocument_create_processing_instruction|domdocument_create_text_node|domdocument_doctype|domdocument_document_element|domdocument_dump_file|domdocument_dump_mem|domdocument_get_element_by_id|domdocument_get_elements_by_tagname|domdocument_html_dump_mem|domdocument_xinclude|domdocumentfragment|domdocumenttype|domdocumenttype_entities|domdocumenttype_internal_subset|domdocumenttype_name|domdocumenttype_notations|domdocumenttype_public_id|domdocumenttype_system_id|domelement|domelement_get_attribute|domelement_get_attribute_node|domelement_get_elements_by_tagname|domelement_has_attribute|domelement_remove_attribute|domelement_set_attribute|domelement_set_attribute_node|domelement_tagname|domentity|domentityreference|domexception|domimplementation|domnamednodemap|domnode|domnode_add_namespace|domnode_append_child|domnode_append_sibling|domnode_attributes|domnode_child_nodes|domnode_clone_node|domnode_dump_node|domnode_first_child|domnode_get_content|domnode_has_attributes|domnode_has_child_nodes|domnode_insert_before|domnode_is_blank_node|domnode_last_child|domnode_next_sibling|domnode_node_name|domnode_node_type|domnode_node_value|domnode_owner_document|domnode_parent_node|domnode_prefix|domnode_previous_sibling|domnode_remove_child|domnode_replace_child|domnode_replace_node|domnode_set_content|domnode_set_name|domnode_set_namespace|domnode_unlink_node|domnodelist|domnotation|domprocessinginstruction|domprocessinginstruction_data|domprocessinginstruction_target|domtext|domxml_new_doc|domxml_open_file|domxml_open_mem|domxml_version|domxml_xmltree|domxml_xslt_stylesheet|domxml_xslt_stylesheet_doc|domxml_xslt_stylesheet_file|domxml_xslt_version|domxpath|domxsltstylesheet_process|domxsltstylesheet_result_dump_file|domxsltstylesheet_result_dump_mem|dotnet|dotnet_load|doubleval|each|easter_date|easter_days|echo|empty|emptyiterator|enchant_broker_describe|enchant_broker_dict_exists|enchant_broker_free|enchant_broker_free_dict|enchant_broker_get_error|enchant_broker_init|enchant_broker_list_dicts|enchant_broker_request_dict|enchant_broker_request_pwl_dict|enchant_broker_set_ordering|enchant_dict_add_to_personal|enchant_dict_add_to_session|enchant_dict_check|enchant_dict_describe|enchant_dict_get_error|enchant_dict_is_in_session|enchant_dict_quick_check|enchant_dict_store_replacement|enchant_dict_suggest|end|ereg|ereg_replace|eregi|eregi_replace|error_get_last|error_log|error_reporting|errorexception|escapeshellarg|escapeshellcmd|eval|event_add|event_base_free|event_base_loop|event_base_loopbreak|event_base_loopexit|event_base_new|event_base_priority_init|event_base_set|event_buffer_base_set|event_buffer_disable|event_buffer_enable|event_buffer_fd_set|event_buffer_free|event_buffer_new|event_buffer_priority_set|event_buffer_read|event_buffer_set_callback|event_buffer_timeout_set|event_buffer_watermark_set|event_buffer_write|event_del|event_free|event_new|event_set|exception|exec|exif_imagetype|exif_read_data|exif_tagname|exif_thumbnail|exit|exp|expect_expectl|expect_popen|explode|expm1|export|export|extension_loaded|extract|ezmlm_hash|fam_cancel_monitor|fam_close|fam_monitor_collection|fam_monitor_directory|fam_monitor_file|fam_next_event|fam_open|fam_pending|fam_resume_monitor|fam_suspend_monitor|fbsql_affected_rows|fbsql_autocommit|fbsql_blob_size|fbsql_change_user|fbsql_clob_size|fbsql_close|fbsql_commit|fbsql_connect|fbsql_create_blob|fbsql_create_clob|fbsql_create_db|fbsql_data_seek|fbsql_database|fbsql_database_password|fbsql_db_query|fbsql_db_status|fbsql_drop_db|fbsql_errno|fbsql_error|fbsql_fetch_array|fbsql_fetch_assoc|fbsql_fetch_field|fbsql_fetch_lengths|fbsql_fetch_object|fbsql_fetch_row|fbsql_field_flags|fbsql_field_len|fbsql_field_name|fbsql_field_seek|fbsql_field_table|fbsql_field_type|fbsql_free_result|fbsql_get_autostart_info|fbsql_hostname|fbsql_insert_id|fbsql_list_dbs|fbsql_list_fields|fbsql_list_tables|fbsql_next_result|fbsql_num_fields|fbsql_num_rows|fbsql_password|fbsql_pconnect|fbsql_query|fbsql_read_blob|fbsql_read_clob|fbsql_result|fbsql_rollback|fbsql_rows_fetched|fbsql_select_db|fbsql_set_characterset|fbsql_set_lob_mode|fbsql_set_password|fbsql_set_transaction|fbsql_start_db|fbsql_stop_db|fbsql_table_name|fbsql_tablename|fbsql_username|fbsql_warnings|fclose|fdf_add_doc_javascript|fdf_add_template|fdf_close|fdf_create|fdf_enum_values|fdf_errno|fdf_error|fdf_get_ap|fdf_get_attachment|fdf_get_encoding|fdf_get_file|fdf_get_flags|fdf_get_opt|fdf_get_status|fdf_get_value|fdf_get_version|fdf_header|fdf_next_field_name|fdf_open|fdf_open_string|fdf_remove_item|fdf_save|fdf_save_string|fdf_set_ap|fdf_set_encoding|fdf_set_file|fdf_set_flags|fdf_set_javascript_action|fdf_set_on_import_javascript|fdf_set_opt|fdf_set_status|fdf_set_submit_form_action|fdf_set_target_frame|fdf_set_value|fdf_set_version|feof|fflush|fgetc|fgetcsv|fgets|fgetss|file|file_exists|file_get_contents|file_put_contents|fileatime|filectime|filegroup|fileinode|filemtime|fileowner|fileperms|filepro|filepro_fieldcount|filepro_fieldname|filepro_fieldtype|filepro_fieldwidth|filepro_retrieve|filepro_rowcount|filesize|filesystemiterator|filetype|filter_has_var|filter_id|filter_input|filter_input_array|filter_list|filter_var|filter_var_array|filteriterator|finfo_buffer|finfo_close|finfo_file|finfo_open|finfo_set_flags|floatval|flock|floor|flush|fmod|fnmatch|fopen|forward_static_call|forward_static_call_array|fpassthru|fprintf|fputcsv|fputs|fread|frenchtojd|fribidi_log2vis|fscanf|fseek|fsockopen|fstat|ftell|ftok|ftp_alloc|ftp_cdup|ftp_chdir|ftp_chmod|ftp_close|ftp_connect|ftp_delete|ftp_exec|ftp_fget|ftp_fput|ftp_get|ftp_get_option|ftp_login|ftp_mdtm|ftp_mkdir|ftp_nb_continue|ftp_nb_fget|ftp_nb_fput|ftp_nb_get|ftp_nb_put|ftp_nlist|ftp_pasv|ftp_put|ftp_pwd|ftp_quit|ftp_raw|ftp_rawlist|ftp_rename|ftp_rmdir|ftp_set_option|ftp_site|ftp_size|ftp_ssl_connect|ftp_systype|ftruncate|func_get_arg|func_get_args|func_num_args|function_exists|fwrite|gc_collect_cycles|gc_disable|gc_enable|gc_enabled|gd_info|gearmanclient|gearmanjob|gearmantask|gearmanworker|geoip_continent_code_by_name|geoip_country_code3_by_name|geoip_country_code_by_name|geoip_country_name_by_name|geoip_database_info|geoip_db_avail|geoip_db_filename|geoip_db_get_all_info|geoip_id_by_name|geoip_isp_by_name|geoip_org_by_name|geoip_record_by_name|geoip_region_by_name|geoip_region_name_by_code|geoip_time_zone_by_country_and_region|getMeta|getNamed|getValue|get_browser|get_called_class|get_cfg_var|get_class|get_class_methods|get_class_vars|get_current_user|get_declared_classes|get_declared_interfaces|get_defined_constants|get_defined_functions|get_defined_vars|get_extension_funcs|get_headers|get_html_translation_table|get_include_path|get_included_files|get_loaded_extensions|get_magic_quotes_gpc|get_magic_quotes_runtime|get_meta_tags|get_object_vars|get_parent_class|get_required_files|get_resource_type|getallheaders|getconstant|getconstants|getconstructor|getcwd|getdate|getdefaultproperties|getdoccomment|getendline|getenv|getextension|getextensionname|getfilename|gethostbyaddr|gethostbyname|gethostbynamel|gethostname|getimagesize|getinterfacenames|getinterfaces|getlastmod|getmethod|getmethods|getmodifiers|getmxrr|getmygid|getmyinode|getmypid|getmyuid|getname|getnamespacename|getopt|getparentclass|getproperties|getproperty|getprotobyname|getprotobynumber|getrandmax|getrusage|getservbyname|getservbyport|getshortname|getstartline|getstaticproperties|getstaticpropertyvalue|gettext|gettimeofday|gettype|glob|globiterator|gmagick|gmagickdraw|gmagickpixel|gmdate|gmmktime|gmp_abs|gmp_add|gmp_and|gmp_clrbit|gmp_cmp|gmp_com|gmp_div|gmp_div_q|gmp_div_qr|gmp_div_r|gmp_divexact|gmp_fact|gmp_gcd|gmp_gcdext|gmp_hamdist|gmp_init|gmp_intval|gmp_invert|gmp_jacobi|gmp_legendre|gmp_mod|gmp_mul|gmp_neg|gmp_nextprime|gmp_or|gmp_perfect_square|gmp_popcount|gmp_pow|gmp_powm|gmp_prob_prime|gmp_random|gmp_scan0|gmp_scan1|gmp_setbit|gmp_sign|gmp_sqrt|gmp_sqrtrem|gmp_strval|gmp_sub|gmp_testbit|gmp_xor|gmstrftime|gnupg_adddecryptkey|gnupg_addencryptkey|gnupg_addsignkey|gnupg_cleardecryptkeys|gnupg_clearencryptkeys|gnupg_clearsignkeys|gnupg_decrypt|gnupg_decryptverify|gnupg_encrypt|gnupg_encryptsign|gnupg_export|gnupg_geterror|gnupg_getprotocol|gnupg_import|gnupg_init|gnupg_keyinfo|gnupg_setarmor|gnupg_seterrormode|gnupg_setsignmode|gnupg_sign|gnupg_verify|gopher_parsedir|grapheme_extract|grapheme_stripos|grapheme_stristr|grapheme_strlen|grapheme_strpos|grapheme_strripos|grapheme_strrpos|grapheme_strstr|grapheme_substr|gregoriantojd|gupnp_context_get_host_ip|gupnp_context_get_port|gupnp_context_get_subscription_timeout|gupnp_context_host_path|gupnp_context_new|gupnp_context_set_subscription_timeout|gupnp_context_timeout_add|gupnp_context_unhost_path|gupnp_control_point_browse_start|gupnp_control_point_browse_stop|gupnp_control_point_callback_set|gupnp_control_point_new|gupnp_device_action_callback_set|gupnp_device_info_get|gupnp_device_info_get_service|gupnp_root_device_get_available|gupnp_root_device_get_relative_location|gupnp_root_device_new|gupnp_root_device_set_available|gupnp_root_device_start|gupnp_root_device_stop|gupnp_service_action_get|gupnp_service_action_return|gupnp_service_action_return_error|gupnp_service_action_set|gupnp_service_freeze_notify|gupnp_service_info_get|gupnp_service_info_get_introspection|gupnp_service_introspection_get_state_variable|gupnp_service_notify|gupnp_service_proxy_action_get|gupnp_service_proxy_action_set|gupnp_service_proxy_add_notify|gupnp_service_proxy_callback_set|gupnp_service_proxy_get_subscribed|gupnp_service_proxy_remove_notify|gupnp_service_proxy_set_subscribed|gupnp_service_thaw_notify|gzclose|gzcompress|gzdecode|gzdeflate|gzencode|gzeof|gzfile|gzgetc|gzgets|gzgetss|gzinflate|gzopen|gzpassthru|gzputs|gzread|gzrewind|gzseek|gztell|gzuncompress|gzwrite|halt_compiler|haruannotation|haruannotation_setborderstyle|haruannotation_sethighlightmode|haruannotation_seticon|haruannotation_setopened|harudestination|harudestination_setfit|harudestination_setfitb|harudestination_setfitbh|harudestination_setfitbv|harudestination_setfith|harudestination_setfitr|harudestination_setfitv|harudestination_setxyz|harudoc|harudoc_addpage|harudoc_addpagelabel|harudoc_construct|harudoc_createoutline|harudoc_getcurrentencoder|harudoc_getcurrentpage|harudoc_getencoder|harudoc_getfont|harudoc_getinfoattr|harudoc_getpagelayout|harudoc_getpagemode|harudoc_getstreamsize|harudoc_insertpage|harudoc_loadjpeg|harudoc_loadpng|harudoc_loadraw|harudoc_loadttc|harudoc_loadttf|harudoc_loadtype1|harudoc_output|harudoc_readfromstream|harudoc_reseterror|harudoc_resetstream|harudoc_save|harudoc_savetostream|harudoc_setcompressionmode|harudoc_setcurrentencoder|harudoc_setencryptionmode|harudoc_setinfoattr|harudoc_setinfodateattr|harudoc_setopenaction|harudoc_setpagelayout|harudoc_setpagemode|harudoc_setpagesconfiguration|harudoc_setpassword|harudoc_setpermission|harudoc_usecnsencodings|harudoc_usecnsfonts|harudoc_usecntencodings|harudoc_usecntfonts|harudoc_usejpencodings|harudoc_usejpfonts|harudoc_usekrencodings|harudoc_usekrfonts|haruencoder|haruencoder_getbytetype|haruencoder_gettype|haruencoder_getunicode|haruencoder_getwritingmode|haruexception|harufont|harufont_getascent|harufont_getcapheight|harufont_getdescent|harufont_getencodingname|harufont_getfontname|harufont_gettextwidth|harufont_getunicodewidth|harufont_getxheight|harufont_measuretext|haruimage|haruimage_getbitspercomponent|haruimage_getcolorspace|haruimage_getheight|haruimage_getsize|haruimage_getwidth|haruimage_setcolormask|haruimage_setmaskimage|haruoutline|haruoutline_setdestination|haruoutline_setopened|harupage|harupage_arc|harupage_begintext|harupage_circle|harupage_closepath|harupage_concat|harupage_createdestination|harupage_createlinkannotation|harupage_createtextannotation|harupage_createurlannotation|harupage_curveto|harupage_curveto2|harupage_curveto3|harupage_drawimage|harupage_ellipse|harupage_endpath|harupage_endtext|harupage_eofill|harupage_eofillstroke|harupage_fill|harupage_fillstroke|harupage_getcharspace|harupage_getcmykfill|harupage_getcmykstroke|harupage_getcurrentfont|harupage_getcurrentfontsize|harupage_getcurrentpos|harupage_getcurrenttextpos|harupage_getdash|harupage_getfillingcolorspace|harupage_getflatness|harupage_getgmode|harupage_getgrayfill|harupage_getgraystroke|harupage_getheight|harupage_gethorizontalscaling|harupage_getlinecap|harupage_getlinejoin|harupage_getlinewidth|harupage_getmiterlimit|harupage_getrgbfill|harupage_getrgbstroke|harupage_getstrokingcolorspace|harupage_gettextleading|harupage_gettextmatrix|harupage_gettextrenderingmode|harupage_gettextrise|harupage_gettextwidth|harupage_gettransmatrix|harupage_getwidth|harupage_getwordspace|harupage_lineto|harupage_measuretext|harupage_movetextpos|harupage_moveto|harupage_movetonextline|harupage_rectangle|harupage_setcharspace|harupage_setcmykfill|harupage_setcmykstroke|harupage_setdash|harupage_setflatness|harupage_setfontandsize|harupage_setgrayfill|harupage_setgraystroke|harupage_setheight|harupage_sethorizontalscaling|harupage_setlinecap|harupage_setlinejoin|harupage_setlinewidth|harupage_setmiterlimit|harupage_setrgbfill|harupage_setrgbstroke|harupage_setrotate|harupage_setsize|harupage_setslideshow|harupage_settextleading|harupage_settextmatrix|harupage_settextrenderingmode|harupage_settextrise|harupage_setwidth|harupage_setwordspace|harupage_showtext|harupage_showtextnextline|harupage_stroke|harupage_textout|harupage_textrect|hasconstant|hash|hash_algos|hash_copy|hash_file|hash_final|hash_hmac|hash_hmac_file|hash_init|hash_update|hash_update_file|hash_update_stream|hasmethod|hasproperty|header|header_register_callback|header_remove|headers_list|headers_sent|hebrev|hebrevc|hex2bin|hexdec|highlight_file|highlight_string|html_entity_decode|htmlentities|htmlspecialchars|htmlspecialchars_decode|http_build_cookie|http_build_query|http_build_str|http_build_url|http_cache_etag|http_cache_last_modified|http_chunked_decode|http_date|http_deflate|http_get|http_get_request_body|http_get_request_body_stream|http_get_request_headers|http_head|http_inflate|http_match_etag|http_match_modified|http_match_request_header|http_negotiate_charset|http_negotiate_content_type|http_negotiate_language|http_parse_cookie|http_parse_headers|http_parse_message|http_parse_params|http_persistent_handles_clean|http_persistent_handles_count|http_persistent_handles_ident|http_post_data|http_post_fields|http_put_data|http_put_file|http_put_stream|http_redirect|http_request|http_request_body_encode|http_request_method_exists|http_request_method_name|http_request_method_register|http_request_method_unregister|http_response_code|http_send_content_disposition|http_send_content_type|http_send_data|http_send_file|http_send_last_modified|http_send_status|http_send_stream|http_support|http_throttle|httpdeflatestream|httpdeflatestream_construct|httpdeflatestream_factory|httpdeflatestream_finish|httpdeflatestream_flush|httpdeflatestream_update|httpinflatestream|httpinflatestream_construct|httpinflatestream_factory|httpinflatestream_finish|httpinflatestream_flush|httpinflatestream_update|httpmessage|httpmessage_addheaders|httpmessage_construct|httpmessage_detach|httpmessage_factory|httpmessage_fromenv|httpmessage_fromstring|httpmessage_getbody|httpmessage_getheader|httpmessage_getheaders|httpmessage_gethttpversion|httpmessage_getparentmessage|httpmessage_getrequestmethod|httpmessage_getrequesturl|httpmessage_getresponsecode|httpmessage_getresponsestatus|httpmessage_gettype|httpmessage_guesscontenttype|httpmessage_prepend|httpmessage_reverse|httpmessage_send|httpmessage_setbody|httpmessage_setheaders|httpmessage_sethttpversion|httpmessage_setrequestmethod|httpmessage_setrequesturl|httpmessage_setresponsecode|httpmessage_setresponsestatus|httpmessage_settype|httpmessage_tomessagetypeobject|httpmessage_tostring|httpquerystring|httpquerystring_construct|httpquerystring_get|httpquerystring_mod|httpquerystring_set|httpquerystring_singleton|httpquerystring_toarray|httpquerystring_tostring|httpquerystring_xlate|httprequest|httprequest_addcookies|httprequest_addheaders|httprequest_addpostfields|httprequest_addpostfile|httprequest_addputdata|httprequest_addquerydata|httprequest_addrawpostdata|httprequest_addssloptions|httprequest_clearhistory|httprequest_construct|httprequest_enablecookies|httprequest_getcontenttype|httprequest_getcookies|httprequest_getheaders|httprequest_gethistory|httprequest_getmethod|httprequest_getoptions|httprequest_getpostfields|httprequest_getpostfiles|httprequest_getputdata|httprequest_getputfile|httprequest_getquerydata|httprequest_getrawpostdata|httprequest_getrawrequestmessage|httprequest_getrawresponsemessage|httprequest_getrequestmessage|httprequest_getresponsebody|httprequest_getresponsecode|httprequest_getresponsecookies|httprequest_getresponsedata|httprequest_getresponseheader|httprequest_getresponseinfo|httprequest_getresponsemessage|httprequest_getresponsestatus|httprequest_getssloptions|httprequest_geturl|httprequest_resetcookies|httprequest_send|httprequest_setcontenttype|httprequest_setcookies|httprequest_setheaders|httprequest_setmethod|httprequest_setoptions|httprequest_setpostfields|httprequest_setpostfiles|httprequest_setputdata|httprequest_setputfile|httprequest_setquerydata|httprequest_setrawpostdata|httprequest_setssloptions|httprequest_seturl|httprequestpool|httprequestpool_attach|httprequestpool_construct|httprequestpool_destruct|httprequestpool_detach|httprequestpool_getattachedrequests|httprequestpool_getfinishedrequests|httprequestpool_reset|httprequestpool_send|httprequestpool_socketperform|httprequestpool_socketselect|httpresponse|httpresponse_capture|httpresponse_getbuffersize|httpresponse_getcache|httpresponse_getcachecontrol|httpresponse_getcontentdisposition|httpresponse_getcontenttype|httpresponse_getdata|httpresponse_getetag|httpresponse_getfile|httpresponse_getgzip|httpresponse_getheader|httpresponse_getlastmodified|httpresponse_getrequestbody|httpresponse_getrequestbodystream|httpresponse_getrequestheaders|httpresponse_getstream|httpresponse_getthrottledelay|httpresponse_guesscontenttype|httpresponse_redirect|httpresponse_send|httpresponse_setbuffersize|httpresponse_setcache|httpresponse_setcachecontrol|httpresponse_setcontentdisposition|httpresponse_setcontenttype|httpresponse_setdata|httpresponse_setetag|httpresponse_setfile|httpresponse_setgzip|httpresponse_setheader|httpresponse_setlastmodified|httpresponse_setstream|httpresponse_setthrottledelay|httpresponse_status|hw_array2objrec|hw_changeobject|hw_children|hw_childrenobj|hw_close|hw_connect|hw_connection_info|hw_cp|hw_deleteobject|hw_docbyanchor|hw_docbyanchorobj|hw_document_attributes|hw_document_bodytag|hw_document_content|hw_document_setcontent|hw_document_size|hw_dummy|hw_edittext|hw_error|hw_errormsg|hw_free_document|hw_getanchors|hw_getanchorsobj|hw_getandlock|hw_getchildcoll|hw_getchildcollobj|hw_getchilddoccoll|hw_getchilddoccollobj|hw_getobject|hw_getobjectbyquery|hw_getobjectbyquerycoll|hw_getobjectbyquerycollobj|hw_getobjectbyqueryobj|hw_getparents|hw_getparentsobj|hw_getrellink|hw_getremote|hw_getremotechildren|hw_getsrcbydestobj|hw_gettext|hw_getusername|hw_identify|hw_incollections|hw_info|hw_inscoll|hw_insdoc|hw_insertanchors|hw_insertdocument|hw_insertobject|hw_mapid|hw_modifyobject|hw_mv|hw_new_document|hw_objrec2array|hw_output_document|hw_pconnect|hw_pipedocument|hw_root|hw_setlinkroot|hw_stat|hw_unlock|hw_who|hwapi_attribute|hwapi_attribute_key|hwapi_attribute_langdepvalue|hwapi_attribute_value|hwapi_attribute_values|hwapi_checkin|hwapi_checkout|hwapi_children|hwapi_content|hwapi_content_mimetype|hwapi_content_read|hwapi_copy|hwapi_dbstat|hwapi_dcstat|hwapi_dstanchors|hwapi_dstofsrcanchor|hwapi_error_count|hwapi_error_reason|hwapi_find|hwapi_ftstat|hwapi_hgcsp|hwapi_hwstat|hwapi_identify|hwapi_info|hwapi_insert|hwapi_insertanchor|hwapi_insertcollection|hwapi_insertdocument|hwapi_link|hwapi_lock|hwapi_move|hwapi_new_content|hwapi_object|hwapi_object_assign|hwapi_object_attreditable|hwapi_object_count|hwapi_object_insert|hwapi_object_new|hwapi_object_remove|hwapi_object_title|hwapi_object_value|hwapi_objectbyanchor|hwapi_parents|hwapi_reason_description|hwapi_reason_type|hwapi_remove|hwapi_replace|hwapi_setcommittedversion|hwapi_srcanchors|hwapi_srcsofdst|hwapi_unlock|hwapi_user|hwapi_userlist|hypot|ibase_add_user|ibase_affected_rows|ibase_backup|ibase_blob_add|ibase_blob_cancel|ibase_blob_close|ibase_blob_create|ibase_blob_echo|ibase_blob_get|ibase_blob_import|ibase_blob_info|ibase_blob_open|ibase_close|ibase_commit|ibase_commit_ret|ibase_connect|ibase_db_info|ibase_delete_user|ibase_drop_db|ibase_errcode|ibase_errmsg|ibase_execute|ibase_fetch_assoc|ibase_fetch_object|ibase_fetch_row|ibase_field_info|ibase_free_event_handler|ibase_free_query|ibase_free_result|ibase_gen_id|ibase_maintain_db|ibase_modify_user|ibase_name_result|ibase_num_fields|ibase_num_params|ibase_param_info|ibase_pconnect|ibase_prepare|ibase_query|ibase_restore|ibase_rollback|ibase_rollback_ret|ibase_server_info|ibase_service_attach|ibase_service_detach|ibase_set_event_handler|ibase_timefmt|ibase_trans|ibase_wait_event|iconv|iconv_get_encoding|iconv_mime_decode|iconv_mime_decode_headers|iconv_mime_encode|iconv_set_encoding|iconv_strlen|iconv_strpos|iconv_strrpos|iconv_substr|id3_get_frame_long_name|id3_get_frame_short_name|id3_get_genre_id|id3_get_genre_list|id3_get_genre_name|id3_get_tag|id3_get_version|id3_remove_tag|id3_set_tag|id3v2attachedpictureframe|id3v2frame|id3v2tag|idate|idn_to_ascii|idn_to_unicode|idn_to_utf8|ifx_affected_rows|ifx_blobinfile_mode|ifx_byteasvarchar|ifx_close|ifx_connect|ifx_copy_blob|ifx_create_blob|ifx_create_char|ifx_do|ifx_error|ifx_errormsg|ifx_fetch_row|ifx_fieldproperties|ifx_fieldtypes|ifx_free_blob|ifx_free_char|ifx_free_result|ifx_get_blob|ifx_get_char|ifx_getsqlca|ifx_htmltbl_result|ifx_nullformat|ifx_num_fields|ifx_num_rows|ifx_pconnect|ifx_prepare|ifx_query|ifx_textasvarchar|ifx_update_blob|ifx_update_char|ifxus_close_slob|ifxus_create_slob|ifxus_free_slob|ifxus_open_slob|ifxus_read_slob|ifxus_seek_slob|ifxus_tell_slob|ifxus_write_slob|ignore_user_abort|iis_add_server|iis_get_dir_security|iis_get_script_map|iis_get_server_by_comment|iis_get_server_by_path|iis_get_server_rights|iis_get_service_state|iis_remove_server|iis_set_app_settings|iis_set_dir_security|iis_set_script_map|iis_set_server_rights|iis_start_server|iis_start_service|iis_stop_server|iis_stop_service|image2wbmp|image_type_to_extension|image_type_to_mime_type|imagealphablending|imageantialias|imagearc|imagechar|imagecharup|imagecolorallocate|imagecolorallocatealpha|imagecolorat|imagecolorclosest|imagecolorclosestalpha|imagecolorclosesthwb|imagecolordeallocate|imagecolorexact|imagecolorexactalpha|imagecolormatch|imagecolorresolve|imagecolorresolvealpha|imagecolorset|imagecolorsforindex|imagecolorstotal|imagecolortransparent|imageconvolution|imagecopy|imagecopymerge|imagecopymergegray|imagecopyresampled|imagecopyresized|imagecreate|imagecreatefromgd|imagecreatefromgd2|imagecreatefromgd2part|imagecreatefromgif|imagecreatefromjpeg|imagecreatefrompng|imagecreatefromstring|imagecreatefromwbmp|imagecreatefromxbm|imagecreatefromxpm|imagecreatetruecolor|imagedashedline|imagedestroy|imageellipse|imagefill|imagefilledarc|imagefilledellipse|imagefilledpolygon|imagefilledrectangle|imagefilltoborder|imagefilter|imagefontheight|imagefontwidth|imageftbbox|imagefttext|imagegammacorrect|imagegd|imagegd2|imagegif|imagegrabscreen|imagegrabwindow|imageinterlace|imageistruecolor|imagejpeg|imagelayereffect|imageline|imageloadfont|imagepalettecopy|imagepng|imagepolygon|imagepsbbox|imagepsencodefont|imagepsextendfont|imagepsfreefont|imagepsloadfont|imagepsslantfont|imagepstext|imagerectangle|imagerotate|imagesavealpha|imagesetbrush|imagesetpixel|imagesetstyle|imagesetthickness|imagesettile|imagestring|imagestringup|imagesx|imagesy|imagetruecolortopalette|imagettfbbox|imagettftext|imagetypes|imagewbmp|imagexbm|imagick|imagick_adaptiveblurimage|imagick_adaptiveresizeimage|imagick_adaptivesharpenimage|imagick_adaptivethresholdimage|imagick_addimage|imagick_addnoiseimage|imagick_affinetransformimage|imagick_animateimages|imagick_annotateimage|imagick_appendimages|imagick_averageimages|imagick_blackthresholdimage|imagick_blurimage|imagick_borderimage|imagick_charcoalimage|imagick_chopimage|imagick_clear|imagick_clipimage|imagick_clippathimage|imagick_clone|imagick_clutimage|imagick_coalesceimages|imagick_colorfloodfillimage|imagick_colorizeimage|imagick_combineimages|imagick_commentimage|imagick_compareimagechannels|imagick_compareimagelayers|imagick_compareimages|imagick_compositeimage|imagick_construct|imagick_contrastimage|imagick_contraststretchimage|imagick_convolveimage|imagick_cropimage|imagick_cropthumbnailimage|imagick_current|imagick_cyclecolormapimage|imagick_decipherimage|imagick_deconstructimages|imagick_deleteimageartifact|imagick_despeckleimage|imagick_destroy|imagick_displayimage|imagick_displayimages|imagick_distortimage|imagick_drawimage|imagick_edgeimage|imagick_embossimage|imagick_encipherimage|imagick_enhanceimage|imagick_equalizeimage|imagick_evaluateimage|imagick_extentimage|imagick_flattenimages|imagick_flipimage|imagick_floodfillpaintimage|imagick_flopimage|imagick_frameimage|imagick_fximage|imagick_gammaimage|imagick_gaussianblurimage|imagick_getcolorspace|imagick_getcompression|imagick_getcompressionquality|imagick_getcopyright|imagick_getfilename|imagick_getfont|imagick_getformat|imagick_getgravity|imagick_gethomeurl|imagick_getimage|imagick_getimagealphachannel|imagick_getimageartifact|imagick_getimagebackgroundcolor|imagick_getimageblob|imagick_getimageblueprimary|imagick_getimagebordercolor|imagick_getimagechanneldepth|imagick_getimagechanneldistortion|imagick_getimagechanneldistortions|imagick_getimagechannelextrema|imagick_getimagechannelmean|imagick_getimagechannelrange|imagick_getimagechannelstatistics|imagick_getimageclipmask|imagick_getimagecolormapcolor|imagick_getimagecolors|imagick_getimagecolorspace|imagick_getimagecompose|imagick_getimagecompression|imagick_getimagecompressionquality|imagick_getimagedelay|imagick_getimagedepth|imagick_getimagedispose|imagick_getimagedistortion|imagick_getimageextrema|imagick_getimagefilename|imagick_getimageformat|imagick_getimagegamma|imagick_getimagegeometry|imagick_getimagegravity|imagick_getimagegreenprimary|imagick_getimageheight|imagick_getimagehistogram|imagick_getimageindex|imagick_getimageinterlacescheme|imagick_getimageinterpolatemethod|imagick_getimageiterations|imagick_getimagelength|imagick_getimagemagicklicense|imagick_getimagematte|imagick_getimagemattecolor|imagick_getimageorientation|imagick_getimagepage|imagick_getimagepixelcolor|imagick_getimageprofile|imagick_getimageprofiles|imagick_getimageproperties|imagick_getimageproperty|imagick_getimageredprimary|imagick_getimageregion|imagick_getimagerenderingintent|imagick_getimageresolution|imagick_getimagesblob|imagick_getimagescene|imagick_getimagesignature|imagick_getimagesize|imagick_getimagetickspersecond|imagick_getimagetotalinkdensity|imagick_getimagetype|imagick_getimageunits|imagick_getimagevirtualpixelmethod|imagick_getimagewhitepoint|imagick_getimagewidth|imagick_getinterlacescheme|imagick_getiteratorindex|imagick_getnumberimages|imagick_getoption|imagick_getpackagename|imagick_getpage|imagick_getpixeliterator|imagick_getpixelregioniterator|imagick_getpointsize|imagick_getquantumdepth|imagick_getquantumrange|imagick_getreleasedate|imagick_getresource|imagick_getresourcelimit|imagick_getsamplingfactors|imagick_getsize|imagick_getsizeoffset|imagick_getversion|imagick_hasnextimage|imagick_haspreviousimage|imagick_identifyimage|imagick_implodeimage|imagick_labelimage|imagick_levelimage|imagick_linearstretchimage|imagick_liquidrescaleimage|imagick_magnifyimage|imagick_mapimage|imagick_mattefloodfillimage|imagick_medianfilterimage|imagick_mergeimagelayers|imagick_minifyimage|imagick_modulateimage|imagick_montageimage|imagick_morphimages|imagick_mosaicimages|imagick_motionblurimage|imagick_negateimage|imagick_newimage|imagick_newpseudoimage|imagick_nextimage|imagick_normalizeimage|imagick_oilpaintimage|imagick_opaquepaintimage|imagick_optimizeimagelayers|imagick_orderedposterizeimage|imagick_paintfloodfillimage|imagick_paintopaqueimage|imagick_painttransparentimage|imagick_pingimage|imagick_pingimageblob|imagick_pingimagefile|imagick_polaroidimage|imagick_posterizeimage|imagick_previewimages|imagick_previousimage|imagick_profileimage|imagick_quantizeimage|imagick_quantizeimages|imagick_queryfontmetrics|imagick_queryfonts|imagick_queryformats|imagick_radialblurimage|imagick_raiseimage|imagick_randomthresholdimage|imagick_readimage|imagick_readimageblob|imagick_readimagefile|imagick_recolorimage|imagick_reducenoiseimage|imagick_removeimage|imagick_removeimageprofile|imagick_render|imagick_resampleimage|imagick_resetimagepage|imagick_resizeimage|imagick_rollimage|imagick_rotateimage|imagick_roundcorners|imagick_sampleimage|imagick_scaleimage|imagick_separateimagechannel|imagick_sepiatoneimage|imagick_setbackgroundcolor|imagick_setcolorspace|imagick_setcompression|imagick_setcompressionquality|imagick_setfilename|imagick_setfirstiterator|imagick_setfont|imagick_setformat|imagick_setgravity|imagick_setimage|imagick_setimagealphachannel|imagick_setimageartifact|imagick_setimagebackgroundcolor|imagick_setimagebias|imagick_setimageblueprimary|imagick_setimagebordercolor|imagick_setimagechanneldepth|imagick_setimageclipmask|imagick_setimagecolormapcolor|imagick_setimagecolorspace|imagick_setimagecompose|imagick_setimagecompression|imagick_setimagecompressionquality|imagick_setimagedelay|imagick_setimagedepth|imagick_setimagedispose|imagick_setimageextent|imagick_setimagefilename|imagick_setimageformat|imagick_setimagegamma|imagick_setimagegravity|imagick_setimagegreenprimary|imagick_setimageindex|imagick_setimageinterlacescheme|imagick_setimageinterpolatemethod|imagick_setimageiterations|imagick_setimagematte|imagick_setimagemattecolor|imagick_setimageopacity|imagick_setimageorientation|imagick_setimagepage|imagick_setimageprofile|imagick_setimageproperty|imagick_setimageredprimary|imagick_setimagerenderingintent|imagick_setimageresolution|imagick_setimagescene|imagick_setimagetickspersecond|imagick_setimagetype|imagick_setimageunits|imagick_setimagevirtualpixelmethod|imagick_setimagewhitepoint|imagick_setinterlacescheme|imagick_setiteratorindex|imagick_setlastiterator|imagick_setoption|imagick_setpage|imagick_setpointsize|imagick_setresolution|imagick_setresourcelimit|imagick_setsamplingfactors|imagick_setsize|imagick_setsizeoffset|imagick_settype|imagick_shadeimage|imagick_shadowimage|imagick_sharpenimage|imagick_shaveimage|imagick_shearimage|imagick_sigmoidalcontrastimage|imagick_sketchimage|imagick_solarizeimage|imagick_spliceimage|imagick_spreadimage|imagick_steganoimage|imagick_stereoimage|imagick_stripimage|imagick_swirlimage|imagick_textureimage|imagick_thresholdimage|imagick_thumbnailimage|imagick_tintimage|imagick_transformimage|imagick_transparentpaintimage|imagick_transposeimage|imagick_transverseimage|imagick_trimimage|imagick_uniqueimagecolors|imagick_unsharpmaskimage|imagick_valid|imagick_vignetteimage|imagick_waveimage|imagick_whitethresholdimage|imagick_writeimage|imagick_writeimagefile|imagick_writeimages|imagick_writeimagesfile|imagickdraw|imagickdraw_affine|imagickdraw_annotation|imagickdraw_arc|imagickdraw_bezier|imagickdraw_circle|imagickdraw_clear|imagickdraw_clone|imagickdraw_color|imagickdraw_comment|imagickdraw_composite|imagickdraw_construct|imagickdraw_destroy|imagickdraw_ellipse|imagickdraw_getclippath|imagickdraw_getcliprule|imagickdraw_getclipunits|imagickdraw_getfillcolor|imagickdraw_getfillopacity|imagickdraw_getfillrule|imagickdraw_getfont|imagickdraw_getfontfamily|imagickdraw_getfontsize|imagickdraw_getfontstyle|imagickdraw_getfontweight|imagickdraw_getgravity|imagickdraw_getstrokeantialias|imagickdraw_getstrokecolor|imagickdraw_getstrokedasharray|imagickdraw_getstrokedashoffset|imagickdraw_getstrokelinecap|imagickdraw_getstrokelinejoin|imagickdraw_getstrokemiterlimit|imagickdraw_getstrokeopacity|imagickdraw_getstrokewidth|imagickdraw_gettextalignment|imagickdraw_gettextantialias|imagickdraw_gettextdecoration|imagickdraw_gettextencoding|imagickdraw_gettextundercolor|imagickdraw_getvectorgraphics|imagickdraw_line|imagickdraw_matte|imagickdraw_pathclose|imagickdraw_pathcurvetoabsolute|imagickdraw_pathcurvetoquadraticbezierabsolute|imagickdraw_pathcurvetoquadraticbezierrelative|imagickdraw_pathcurvetoquadraticbeziersmoothabsolute|imagickdraw_pathcurvetoquadraticbeziersmoothrelative|imagickdraw_pathcurvetorelative|imagickdraw_pathcurvetosmoothabsolute|imagickdraw_pathcurvetosmoothrelative|imagickdraw_pathellipticarcabsolute|imagickdraw_pathellipticarcrelative|imagickdraw_pathfinish|imagickdraw_pathlinetoabsolute|imagickdraw_pathlinetohorizontalabsolute|imagickdraw_pathlinetohorizontalrelative|imagickdraw_pathlinetorelative|imagickdraw_pathlinetoverticalabsolute|imagickdraw_pathlinetoverticalrelative|imagickdraw_pathmovetoabsolute|imagickdraw_pathmovetorelative|imagickdraw_pathstart|imagickdraw_point|imagickdraw_polygon|imagickdraw_polyline|imagickdraw_pop|imagickdraw_popclippath|imagickdraw_popdefs|imagickdraw_poppattern|imagickdraw_push|imagickdraw_pushclippath|imagickdraw_pushdefs|imagickdraw_pushpattern|imagickdraw_rectangle|imagickdraw_render|imagickdraw_rotate|imagickdraw_roundrectangle|imagickdraw_scale|imagickdraw_setclippath|imagickdraw_setcliprule|imagickdraw_setclipunits|imagickdraw_setfillalpha|imagickdraw_setfillcolor|imagickdraw_setfillopacity|imagickdraw_setfillpatternurl|imagickdraw_setfillrule|imagickdraw_setfont|imagickdraw_setfontfamily|imagickdraw_setfontsize|imagickdraw_setfontstretch|imagickdraw_setfontstyle|imagickdraw_setfontweight|imagickdraw_setgravity|imagickdraw_setstrokealpha|imagickdraw_setstrokeantialias|imagickdraw_setstrokecolor|imagickdraw_setstrokedasharray|imagickdraw_setstrokedashoffset|imagickdraw_setstrokelinecap|imagickdraw_setstrokelinejoin|imagickdraw_setstrokemiterlimit|imagickdraw_setstrokeopacity|imagickdraw_setstrokepatternurl|imagickdraw_setstrokewidth|imagickdraw_settextalignment|imagickdraw_settextantialias|imagickdraw_settextdecoration|imagickdraw_settextencoding|imagickdraw_settextundercolor|imagickdraw_setvectorgraphics|imagickdraw_setviewbox|imagickdraw_skewx|imagickdraw_skewy|imagickdraw_translate|imagickpixel|imagickpixel_clear|imagickpixel_construct|imagickpixel_destroy|imagickpixel_getcolor|imagickpixel_getcolorasstring|imagickpixel_getcolorcount|imagickpixel_getcolorvalue|imagickpixel_gethsl|imagickpixel_issimilar|imagickpixel_setcolor|imagickpixel_setcolorvalue|imagickpixel_sethsl|imagickpixeliterator|imagickpixeliterator_clear|imagickpixeliterator_construct|imagickpixeliterator_destroy|imagickpixeliterator_getcurrentiteratorrow|imagickpixeliterator_getiteratorrow|imagickpixeliterator_getnextiteratorrow|imagickpixeliterator_getpreviousiteratorrow|imagickpixeliterator_newpixeliterator|imagickpixeliterator_newpixelregioniterator|imagickpixeliterator_resetiterator|imagickpixeliterator_setiteratorfirstrow|imagickpixeliterator_setiteratorlastrow|imagickpixeliterator_setiteratorrow|imagickpixeliterator_synciterator|imap_8bit|imap_alerts|imap_append|imap_base64|imap_binary|imap_body|imap_bodystruct|imap_check|imap_clearflag_full|imap_close|imap_create|imap_createmailbox|imap_delete|imap_deletemailbox|imap_errors|imap_expunge|imap_fetch_overview|imap_fetchbody|imap_fetchheader|imap_fetchmime|imap_fetchstructure|imap_fetchtext|imap_gc|imap_get_quota|imap_get_quotaroot|imap_getacl|imap_getmailboxes|imap_getsubscribed|imap_header|imap_headerinfo|imap_headers|imap_last_error|imap_list|imap_listmailbox|imap_listscan|imap_listsubscribed|imap_lsub|imap_mail|imap_mail_compose|imap_mail_copy|imap_mail_move|imap_mailboxmsginfo|imap_mime_header_decode|imap_msgno|imap_num_msg|imap_num_recent|imap_open|imap_ping|imap_qprint|imap_rename|imap_renamemailbox|imap_reopen|imap_rfc822_parse_adrlist|imap_rfc822_parse_headers|imap_rfc822_write_address|imap_savebody|imap_scan|imap_scanmailbox|imap_search|imap_set_quota|imap_setacl|imap_setflag_full|imap_sort|imap_status|imap_subscribe|imap_thread|imap_timeout|imap_uid|imap_undelete|imap_unsubscribe|imap_utf7_decode|imap_utf7_encode|imap_utf8|implementsinterface|implode|import_request_variables|in_array|include|include_once|inclued_get_data|inet_ntop|inet_pton|infiniteiterator|ingres_autocommit|ingres_autocommit_state|ingres_charset|ingres_close|ingres_commit|ingres_connect|ingres_cursor|ingres_errno|ingres_error|ingres_errsqlstate|ingres_escape_string|ingres_execute|ingres_fetch_array|ingres_fetch_assoc|ingres_fetch_object|ingres_fetch_proc_return|ingres_fetch_row|ingres_field_length|ingres_field_name|ingres_field_nullable|ingres_field_precision|ingres_field_scale|ingres_field_type|ingres_free_result|ingres_next_error|ingres_num_fields|ingres_num_rows|ingres_pconnect|ingres_prepare|ingres_query|ingres_result_seek|ingres_rollback|ingres_set_environment|ingres_unbuffered_query|ini_alter|ini_get|ini_get_all|ini_restore|ini_set|innamespace|inotify_add_watch|inotify_init|inotify_queue_len|inotify_read|inotify_rm_watch|interface_exists|intl_error_name|intl_get_error_code|intl_get_error_message|intl_is_failure|intldateformatter|intval|invalidargumentexception|invoke|invokeargs|ip2long|iptcembed|iptcparse|is_a|is_array|is_bool|is_callable|is_dir|is_double|is_executable|is_file|is_finite|is_float|is_infinite|is_int|is_integer|is_link|is_long|is_nan|is_null|is_numeric|is_object|is_readable|is_real|is_resource|is_scalar|is_soap_fault|is_string|is_subclass_of|is_uploaded_file|is_writable|is_writeable|isabstract|iscloneable|isdisabled|isfinal|isinstance|isinstantiable|isinterface|isinternal|isiterateable|isset|issubclassof|isuserdefined|iterator|iterator_apply|iterator_count|iterator_to_array|iteratoraggregate|iteratoriterator|java_last_exception_clear|java_last_exception_get|jddayofweek|jdmonthname|jdtofrench|jdtogregorian|jdtojewish|jdtojulian|jdtounix|jewishtojd|join|jpeg2wbmp|json_decode|json_encode|json_last_error|jsonserializable|judy|judy_type|judy_version|juliantojd|kadm5_chpass_principal|kadm5_create_principal|kadm5_delete_principal|kadm5_destroy|kadm5_flush|kadm5_get_policies|kadm5_get_principal|kadm5_get_principals|kadm5_init_with_password|kadm5_modify_principal|key|krsort|ksort|lcfirst|lcg_value|lchgrp|lchown|ldap_8859_to_t61|ldap_add|ldap_bind|ldap_close|ldap_compare|ldap_connect|ldap_count_entries|ldap_delete|ldap_dn2ufn|ldap_err2str|ldap_errno|ldap_error|ldap_explode_dn|ldap_first_attribute|ldap_first_entry|ldap_first_reference|ldap_free_result|ldap_get_attributes|ldap_get_dn|ldap_get_entries|ldap_get_option|ldap_get_values|ldap_get_values_len|ldap_list|ldap_mod_add|ldap_mod_del|ldap_mod_replace|ldap_modify|ldap_next_attribute|ldap_next_entry|ldap_next_reference|ldap_parse_reference|ldap_parse_result|ldap_read|ldap_rename|ldap_sasl_bind|ldap_search|ldap_set_option|ldap_set_rebind_proc|ldap_sort|ldap_start_tls|ldap_t61_to_8859|ldap_unbind|lengthexception|levenshtein|libxml_clear_errors|libxml_disable_entity_loader|libxml_get_errors|libxml_get_last_error|libxml_set_streams_context|libxml_use_internal_errors|libxmlerror|limititerator|link|linkinfo|list|locale|localeconv|localtime|log|log10|log1p|logicexception|long2ip|lstat|ltrim|lzf_compress|lzf_decompress|lzf_optimized_for|m_checkstatus|m_completeauthorizations|m_connect|m_connectionerror|m_deletetrans|m_destroyconn|m_destroyengine|m_getcell|m_getcellbynum|m_getcommadelimited|m_getheader|m_initconn|m_initengine|m_iscommadelimited|m_maxconntimeout|m_monitor|m_numcolumns|m_numrows|m_parsecommadelimited|m_responsekeys|m_responseparam|m_returnstatus|m_setblocking|m_setdropfile|m_setip|m_setssl|m_setssl_cafile|m_setssl_files|m_settimeout|m_sslcert_gen_hash|m_transactionssent|m_transinqueue|m_transkeyval|m_transnew|m_transsend|m_uwait|m_validateidentifier|m_verifyconnection|m_verifysslcert|magic_quotes_runtime|mail|mailparse_determine_best_xfer_encoding|mailparse_msg_create|mailparse_msg_extract_part|mailparse_msg_extract_part_file|mailparse_msg_extract_whole_part_file|mailparse_msg_free|mailparse_msg_get_part|mailparse_msg_get_part_data|mailparse_msg_get_structure|mailparse_msg_parse|mailparse_msg_parse_file|mailparse_rfc822_parse_addresses|mailparse_stream_encode|mailparse_uudecode_all|main|max|maxdb_affected_rows|maxdb_autocommit|maxdb_bind_param|maxdb_bind_result|maxdb_change_user|maxdb_character_set_name|maxdb_client_encoding|maxdb_close|maxdb_close_long_data|maxdb_commit|maxdb_connect|maxdb_connect_errno|maxdb_connect_error|maxdb_data_seek|maxdb_debug|maxdb_disable_reads_from_master|maxdb_disable_rpl_parse|maxdb_dump_debug_info|maxdb_embedded_connect|maxdb_enable_reads_from_master|maxdb_enable_rpl_parse|maxdb_errno|maxdb_error|maxdb_escape_string|maxdb_execute|maxdb_fetch|maxdb_fetch_array|maxdb_fetch_assoc|maxdb_fetch_field|maxdb_fetch_field_direct|maxdb_fetch_fields|maxdb_fetch_lengths|maxdb_fetch_object|maxdb_fetch_row|maxdb_field_count|maxdb_field_seek|maxdb_field_tell|maxdb_free_result|maxdb_get_client_info|maxdb_get_client_version|maxdb_get_host_info|maxdb_get_metadata|maxdb_get_proto_info|maxdb_get_server_info|maxdb_get_server_version|maxdb_info|maxdb_init|maxdb_insert_id|maxdb_kill|maxdb_master_query|maxdb_more_results|maxdb_multi_query|maxdb_next_result|maxdb_num_fields|maxdb_num_rows|maxdb_options|maxdb_param_count|maxdb_ping|maxdb_prepare|maxdb_query|maxdb_real_connect|maxdb_real_escape_string|maxdb_real_query|maxdb_report|maxdb_rollback|maxdb_rpl_parse_enabled|maxdb_rpl_probe|maxdb_rpl_query_type|maxdb_select_db|maxdb_send_long_data|maxdb_send_query|maxdb_server_end|maxdb_server_init|maxdb_set_opt|maxdb_sqlstate|maxdb_ssl_set|maxdb_stat|maxdb_stmt_affected_rows|maxdb_stmt_bind_param|maxdb_stmt_bind_result|maxdb_stmt_close|maxdb_stmt_close_long_data|maxdb_stmt_data_seek|maxdb_stmt_errno|maxdb_stmt_error|maxdb_stmt_execute|maxdb_stmt_fetch|maxdb_stmt_free_result|maxdb_stmt_init|maxdb_stmt_num_rows|maxdb_stmt_param_count|maxdb_stmt_prepare|maxdb_stmt_reset|maxdb_stmt_result_metadata|maxdb_stmt_send_long_data|maxdb_stmt_sqlstate|maxdb_stmt_store_result|maxdb_store_result|maxdb_thread_id|maxdb_thread_safe|maxdb_use_result|maxdb_warning_count|mb_check_encoding|mb_convert_case|mb_convert_encoding|mb_convert_kana|mb_convert_variables|mb_decode_mimeheader|mb_decode_numericentity|mb_detect_encoding|mb_detect_order|mb_encode_mimeheader|mb_encode_numericentity|mb_encoding_aliases|mb_ereg|mb_ereg_match|mb_ereg_replace|mb_ereg_search|mb_ereg_search_getpos|mb_ereg_search_getregs|mb_ereg_search_init|mb_ereg_search_pos|mb_ereg_search_regs|mb_ereg_search_setpos|mb_eregi|mb_eregi_replace|mb_get_info|mb_http_input|mb_http_output|mb_internal_encoding|mb_language|mb_list_encodings|mb_output_handler|mb_parse_str|mb_preferred_mime_name|mb_regex_encoding|mb_regex_set_options|mb_send_mail|mb_split|mb_strcut|mb_strimwidth|mb_stripos|mb_stristr|mb_strlen|mb_strpos|mb_strrchr|mb_strrichr|mb_strripos|mb_strrpos|mb_strstr|mb_strtolower|mb_strtoupper|mb_strwidth|mb_substitute_character|mb_substr|mb_substr_count|mcrypt_cbc|mcrypt_cfb|mcrypt_create_iv|mcrypt_decrypt|mcrypt_ecb|mcrypt_enc_get_algorithms_name|mcrypt_enc_get_block_size|mcrypt_enc_get_iv_size|mcrypt_enc_get_key_size|mcrypt_enc_get_modes_name|mcrypt_enc_get_supported_key_sizes|mcrypt_enc_is_block_algorithm|mcrypt_enc_is_block_algorithm_mode|mcrypt_enc_is_block_mode|mcrypt_enc_self_test|mcrypt_encrypt|mcrypt_generic|mcrypt_generic_deinit|mcrypt_generic_end|mcrypt_generic_init|mcrypt_get_block_size|mcrypt_get_cipher_name|mcrypt_get_iv_size|mcrypt_get_key_size|mcrypt_list_algorithms|mcrypt_list_modes|mcrypt_module_close|mcrypt_module_get_algo_block_size|mcrypt_module_get_algo_key_size|mcrypt_module_get_supported_key_sizes|mcrypt_module_is_block_algorithm|mcrypt_module_is_block_algorithm_mode|mcrypt_module_is_block_mode|mcrypt_module_open|mcrypt_module_self_test|mcrypt_ofb|md5|md5_file|mdecrypt_generic|memcache|memcache_debug|memcached|memory_get_peak_usage|memory_get_usage|messageformatter|metaphone|method_exists|mhash|mhash_count|mhash_get_block_size|mhash_get_hash_name|mhash_keygen_s2k|microtime|mime_content_type|min|ming_keypress|ming_setcubicthreshold|ming_setscale|ming_setswfcompression|ming_useconstants|ming_useswfversion|mkdir|mktime|money_format|mongo|mongobindata|mongocode|mongocollection|mongoconnectionexception|mongocursor|mongocursorexception|mongocursortimeoutexception|mongodate|mongodb|mongodbref|mongoexception|mongogridfs|mongogridfscursor|mongogridfsexception|mongogridfsfile|mongoid|mongoint32|mongoint64|mongomaxkey|mongominkey|mongoregex|mongotimestamp|move_uploaded_file|mpegfile|mqseries_back|mqseries_begin|mqseries_close|mqseries_cmit|mqseries_conn|mqseries_connx|mqseries_disc|mqseries_get|mqseries_inq|mqseries_open|mqseries_put|mqseries_put1|mqseries_set|mqseries_strerror|msession_connect|msession_count|msession_create|msession_destroy|msession_disconnect|msession_find|msession_get|msession_get_array|msession_get_data|msession_inc|msession_list|msession_listvar|msession_lock|msession_plugin|msession_randstr|msession_set|msession_set_array|msession_set_data|msession_timeout|msession_uniq|msession_unlock|msg_get_queue|msg_queue_exists|msg_receive|msg_remove_queue|msg_send|msg_set_queue|msg_stat_queue|msql|msql_affected_rows|msql_close|msql_connect|msql_create_db|msql_createdb|msql_data_seek|msql_db_query|msql_dbname|msql_drop_db|msql_error|msql_fetch_array|msql_fetch_field|msql_fetch_object|msql_fetch_row|msql_field_flags|msql_field_len|msql_field_name|msql_field_seek|msql_field_table|msql_field_type|msql_fieldflags|msql_fieldlen|msql_fieldname|msql_fieldtable|msql_fieldtype|msql_free_result|msql_list_dbs|msql_list_fields|msql_list_tables|msql_num_fields|msql_num_rows|msql_numfields|msql_numrows|msql_pconnect|msql_query|msql_regcase|msql_result|msql_select_db|msql_tablename|mssql_bind|mssql_close|mssql_connect|mssql_data_seek|mssql_execute|mssql_fetch_array|mssql_fetch_assoc|mssql_fetch_batch|mssql_fetch_field|mssql_fetch_object|mssql_fetch_row|mssql_field_length|mssql_field_name|mssql_field_seek|mssql_field_type|mssql_free_result|mssql_free_statement|mssql_get_last_message|mssql_guid_string|mssql_init|mssql_min_error_severity|mssql_min_message_severity|mssql_next_result|mssql_num_fields|mssql_num_rows|mssql_pconnect|mssql_query|mssql_result|mssql_rows_affected|mssql_select_db|mt_getrandmax|mt_rand|mt_srand|multipleiterator|mysql_affected_rows|mysql_client_encoding|mysql_close|mysql_connect|mysql_create_db|mysql_data_seek|mysql_db_name|mysql_db_query|mysql_drop_db|mysql_errno|mysql_error|mysql_escape_string|mysql_fetch_array|mysql_fetch_assoc|mysql_fetch_field|mysql_fetch_lengths|mysql_fetch_object|mysql_fetch_row|mysql_field_flags|mysql_field_len|mysql_field_name|mysql_field_seek|mysql_field_table|mysql_field_type|mysql_free_result|mysql_get_client_info|mysql_get_host_info|mysql_get_proto_info|mysql_get_server_info|mysql_info|mysql_insert_id|mysql_list_dbs|mysql_list_fields|mysql_list_processes|mysql_list_tables|mysql_num_fields|mysql_num_rows|mysql_pconnect|mysql_ping|mysql_query|mysql_real_escape_string|mysql_result|mysql_select_db|mysql_set_charset|mysql_stat|mysql_tablename|mysql_thread_id|mysql_unbuffered_query|mysqli|mysqli_bind_param|mysqli_bind_result|mysqli_client_encoding|mysqli_connect|mysqli_disable_reads_from_master|mysqli_disable_rpl_parse|mysqli_driver|mysqli_enable_reads_from_master|mysqli_enable_rpl_parse|mysqli_escape_string|mysqli_execute|mysqli_fetch|mysqli_get_metadata|mysqli_master_query|mysqli_param_count|mysqli_report|mysqli_result|mysqli_rpl_parse_enabled|mysqli_rpl_probe|mysqli_rpl_query_type|mysqli_send_long_data|mysqli_send_query|mysqli_set_opt|mysqli_slave_query|mysqli_stmt|mysqli_warning|mysqlnd_ms_get_stats|mysqlnd_ms_query_is_select|mysqlnd_ms_set_user_pick_server|mysqlnd_qc_change_handler|mysqlnd_qc_clear_cache|mysqlnd_qc_get_cache_info|mysqlnd_qc_get_core_stats|mysqlnd_qc_get_handler|mysqlnd_qc_get_query_trace_log|mysqlnd_qc_set_user_handlers|natcasesort|natsort|ncurses_addch|ncurses_addchnstr|ncurses_addchstr|ncurses_addnstr|ncurses_addstr|ncurses_assume_default_colors|ncurses_attroff|ncurses_attron|ncurses_attrset|ncurses_baudrate|ncurses_beep|ncurses_bkgd|ncurses_bkgdset|ncurses_border|ncurses_bottom_panel|ncurses_can_change_color|ncurses_cbreak|ncurses_clear|ncurses_clrtobot|ncurses_clrtoeol|ncurses_color_content|ncurses_color_set|ncurses_curs_set|ncurses_def_prog_mode|ncurses_def_shell_mode|ncurses_define_key|ncurses_del_panel|ncurses_delay_output|ncurses_delch|ncurses_deleteln|ncurses_delwin|ncurses_doupdate|ncurses_echo|ncurses_echochar|ncurses_end|ncurses_erase|ncurses_erasechar|ncurses_filter|ncurses_flash|ncurses_flushinp|ncurses_getch|ncurses_getmaxyx|ncurses_getmouse|ncurses_getyx|ncurses_halfdelay|ncurses_has_colors|ncurses_has_ic|ncurses_has_il|ncurses_has_key|ncurses_hide_panel|ncurses_hline|ncurses_inch|ncurses_init|ncurses_init_color|ncurses_init_pair|ncurses_insch|ncurses_insdelln|ncurses_insertln|ncurses_insstr|ncurses_instr|ncurses_isendwin|ncurses_keyok|ncurses_keypad|ncurses_killchar|ncurses_longname|ncurses_meta|ncurses_mouse_trafo|ncurses_mouseinterval|ncurses_mousemask|ncurses_move|ncurses_move_panel|ncurses_mvaddch|ncurses_mvaddchnstr|ncurses_mvaddchstr|ncurses_mvaddnstr|ncurses_mvaddstr|ncurses_mvcur|ncurses_mvdelch|ncurses_mvgetch|ncurses_mvhline|ncurses_mvinch|ncurses_mvvline|ncurses_mvwaddstr|ncurses_napms|ncurses_new_panel|ncurses_newpad|ncurses_newwin|ncurses_nl|ncurses_nocbreak|ncurses_noecho|ncurses_nonl|ncurses_noqiflush|ncurses_noraw|ncurses_pair_content|ncurses_panel_above|ncurses_panel_below|ncurses_panel_window|ncurses_pnoutrefresh|ncurses_prefresh|ncurses_putp|ncurses_qiflush|ncurses_raw|ncurses_refresh|ncurses_replace_panel|ncurses_reset_prog_mode|ncurses_reset_shell_mode|ncurses_resetty|ncurses_savetty|ncurses_scr_dump|ncurses_scr_init|ncurses_scr_restore|ncurses_scr_set|ncurses_scrl|ncurses_show_panel|ncurses_slk_attr|ncurses_slk_attroff|ncurses_slk_attron|ncurses_slk_attrset|ncurses_slk_clear|ncurses_slk_color|ncurses_slk_init|ncurses_slk_noutrefresh|ncurses_slk_refresh|ncurses_slk_restore|ncurses_slk_set|ncurses_slk_touch|ncurses_standend|ncurses_standout|ncurses_start_color|ncurses_termattrs|ncurses_termname|ncurses_timeout|ncurses_top_panel|ncurses_typeahead|ncurses_ungetch|ncurses_ungetmouse|ncurses_update_panels|ncurses_use_default_colors|ncurses_use_env|ncurses_use_extended_names|ncurses_vidattr|ncurses_vline|ncurses_waddch|ncurses_waddstr|ncurses_wattroff|ncurses_wattron|ncurses_wattrset|ncurses_wborder|ncurses_wclear|ncurses_wcolor_set|ncurses_werase|ncurses_wgetch|ncurses_whline|ncurses_wmouse_trafo|ncurses_wmove|ncurses_wnoutrefresh|ncurses_wrefresh|ncurses_wstandend|ncurses_wstandout|ncurses_wvline|newinstance|newinstanceargs|newt_bell|newt_button|newt_button_bar|newt_centered_window|newt_checkbox|newt_checkbox_get_value|newt_checkbox_set_flags|newt_checkbox_set_value|newt_checkbox_tree|newt_checkbox_tree_add_item|newt_checkbox_tree_find_item|newt_checkbox_tree_get_current|newt_checkbox_tree_get_entry_value|newt_checkbox_tree_get_multi_selection|newt_checkbox_tree_get_selection|newt_checkbox_tree_multi|newt_checkbox_tree_set_current|newt_checkbox_tree_set_entry|newt_checkbox_tree_set_entry_value|newt_checkbox_tree_set_width|newt_clear_key_buffer|newt_cls|newt_compact_button|newt_component_add_callback|newt_component_takes_focus|newt_create_grid|newt_cursor_off|newt_cursor_on|newt_delay|newt_draw_form|newt_draw_root_text|newt_entry|newt_entry_get_value|newt_entry_set|newt_entry_set_filter|newt_entry_set_flags|newt_finished|newt_form|newt_form_add_component|newt_form_add_components|newt_form_add_hot_key|newt_form_destroy|newt_form_get_current|newt_form_run|newt_form_set_background|newt_form_set_height|newt_form_set_size|newt_form_set_timer|newt_form_set_width|newt_form_watch_fd|newt_get_screen_size|newt_grid_add_components_to_form|newt_grid_basic_window|newt_grid_free|newt_grid_get_size|newt_grid_h_close_stacked|newt_grid_h_stacked|newt_grid_place|newt_grid_set_field|newt_grid_simple_window|newt_grid_v_close_stacked|newt_grid_v_stacked|newt_grid_wrapped_window|newt_grid_wrapped_window_at|newt_init|newt_label|newt_label_set_text|newt_listbox|newt_listbox_append_entry|newt_listbox_clear|newt_listbox_clear_selection|newt_listbox_delete_entry|newt_listbox_get_current|newt_listbox_get_selection|newt_listbox_insert_entry|newt_listbox_item_count|newt_listbox_select_item|newt_listbox_set_current|newt_listbox_set_current_by_key|newt_listbox_set_data|newt_listbox_set_entry|newt_listbox_set_width|newt_listitem|newt_listitem_get_data|newt_listitem_set|newt_open_window|newt_pop_help_line|newt_pop_window|newt_push_help_line|newt_radio_get_current|newt_radiobutton|newt_redraw_help_line|newt_reflow_text|newt_refresh|newt_resize_screen|newt_resume|newt_run_form|newt_scale|newt_scale_set|newt_scrollbar_set|newt_set_help_callback|newt_set_suspend_callback|newt_suspend|newt_textbox|newt_textbox_get_num_lines|newt_textbox_reflowed|newt_textbox_set_height|newt_textbox_set_text|newt_vertical_scrollbar|newt_wait_for_key|newt_win_choice|newt_win_entries|newt_win_menu|newt_win_message|newt_win_messagev|newt_win_ternary|next|ngettext|nl2br|nl_langinfo|norewinditerator|normalizer|notes_body|notes_copy_db|notes_create_db|notes_create_note|notes_drop_db|notes_find_note|notes_header_info|notes_list_msgs|notes_mark_read|notes_mark_unread|notes_nav_create|notes_search|notes_unread|notes_version|nsapi_request_headers|nsapi_response_headers|nsapi_virtual|nthmac|number_format|numberformatter|oauth|oauth_get_sbs|oauth_urlencode|oauthexception|oauthprovider|ob_clean|ob_deflatehandler|ob_end_clean|ob_end_flush|ob_etaghandler|ob_flush|ob_get_clean|ob_get_contents|ob_get_flush|ob_get_length|ob_get_level|ob_get_status|ob_gzhandler|ob_iconv_handler|ob_implicit_flush|ob_inflatehandler|ob_list_handlers|ob_start|ob_tidyhandler|oci_bind_array_by_name|oci_bind_by_name|oci_cancel|oci_client_version|oci_close|oci_collection_append|oci_collection_assign|oci_collection_element_assign|oci_collection_element_get|oci_collection_free|oci_collection_max|oci_collection_size|oci_collection_trim|oci_commit|oci_connect|oci_define_by_name|oci_error|oci_execute|oci_fetch|oci_fetch_all|oci_fetch_array|oci_fetch_assoc|oci_fetch_object|oci_fetch_row|oci_field_is_null|oci_field_name|oci_field_precision|oci_field_scale|oci_field_size|oci_field_type|oci_field_type_raw|oci_free_statement|oci_internal_debug|oci_lob_append|oci_lob_close|oci_lob_copy|oci_lob_eof|oci_lob_erase|oci_lob_export|oci_lob_flush|oci_lob_free|oci_lob_getbuffering|oci_lob_import|oci_lob_is_equal|oci_lob_load|oci_lob_read|oci_lob_rewind|oci_lob_save|oci_lob_savefile|oci_lob_seek|oci_lob_setbuffering|oci_lob_size|oci_lob_tell|oci_lob_truncate|oci_lob_write|oci_lob_writetemporary|oci_lob_writetofile|oci_new_collection|oci_new_connect|oci_new_cursor|oci_new_descriptor|oci_num_fields|oci_num_rows|oci_parse|oci_password_change|oci_pconnect|oci_result|oci_rollback|oci_server_version|oci_set_action|oci_set_client_identifier|oci_set_client_info|oci_set_edition|oci_set_module_name|oci_set_prefetch|oci_statement_type|ocibindbyname|ocicancel|ocicloselob|ocicollappend|ocicollassign|ocicollassignelem|ocicollgetelem|ocicollmax|ocicollsize|ocicolltrim|ocicolumnisnull|ocicolumnname|ocicolumnprecision|ocicolumnscale|ocicolumnsize|ocicolumntype|ocicolumntyperaw|ocicommit|ocidefinebyname|ocierror|ociexecute|ocifetch|ocifetchinto|ocifetchstatement|ocifreecollection|ocifreecursor|ocifreedesc|ocifreestatement|ociinternaldebug|ociloadlob|ocilogoff|ocilogon|ocinewcollection|ocinewcursor|ocinewdescriptor|ocinlogon|ocinumcols|ociparse|ociplogon|ociresult|ocirollback|ocirowcount|ocisavelob|ocisavelobfile|ociserverversion|ocisetprefetch|ocistatementtype|ociwritelobtofile|ociwritetemporarylob|octdec|odbc_autocommit|odbc_binmode|odbc_close|odbc_close_all|odbc_columnprivileges|odbc_columns|odbc_commit|odbc_connect|odbc_cursor|odbc_data_source|odbc_do|odbc_error|odbc_errormsg|odbc_exec|odbc_execute|odbc_fetch_array|odbc_fetch_into|odbc_fetch_object|odbc_fetch_row|odbc_field_len|odbc_field_name|odbc_field_num|odbc_field_precision|odbc_field_scale|odbc_field_type|odbc_foreignkeys|odbc_free_result|odbc_gettypeinfo|odbc_longreadlen|odbc_next_result|odbc_num_fields|odbc_num_rows|odbc_pconnect|odbc_prepare|odbc_primarykeys|odbc_procedurecolumns|odbc_procedures|odbc_result|odbc_result_all|odbc_rollback|odbc_setoption|odbc_specialcolumns|odbc_statistics|odbc_tableprivileges|odbc_tables|openal_buffer_create|openal_buffer_data|openal_buffer_destroy|openal_buffer_get|openal_buffer_loadwav|openal_context_create|openal_context_current|openal_context_destroy|openal_context_process|openal_context_suspend|openal_device_close|openal_device_open|openal_listener_get|openal_listener_set|openal_source_create|openal_source_destroy|openal_source_get|openal_source_pause|openal_source_play|openal_source_rewind|openal_source_set|openal_source_stop|openal_stream|opendir|openlog|openssl_cipher_iv_length|openssl_csr_export|openssl_csr_export_to_file|openssl_csr_get_public_key|openssl_csr_get_subject|openssl_csr_new|openssl_csr_sign|openssl_decrypt|openssl_dh_compute_key|openssl_digest|openssl_encrypt|openssl_error_string|openssl_free_key|openssl_get_cipher_methods|openssl_get_md_methods|openssl_get_privatekey|openssl_get_publickey|openssl_open|openssl_pkcs12_export|openssl_pkcs12_export_to_file|openssl_pkcs12_read|openssl_pkcs7_decrypt|openssl_pkcs7_encrypt|openssl_pkcs7_sign|openssl_pkcs7_verify|openssl_pkey_export|openssl_pkey_export_to_file|openssl_pkey_free|openssl_pkey_get_details|openssl_pkey_get_private|openssl_pkey_get_public|openssl_pkey_new|openssl_private_decrypt|openssl_private_encrypt|openssl_public_decrypt|openssl_public_encrypt|openssl_random_pseudo_bytes|openssl_seal|openssl_sign|openssl_verify|openssl_x509_check_private_key|openssl_x509_checkpurpose|openssl_x509_export|openssl_x509_export_to_file|openssl_x509_free|openssl_x509_parse|openssl_x509_read|ord|outeriterator|outofboundsexception|outofrangeexception|output_add_rewrite_var|output_reset_rewrite_vars|overflowexception|overload|override_function|ovrimos_close|ovrimos_commit|ovrimos_connect|ovrimos_cursor|ovrimos_exec|ovrimos_execute|ovrimos_fetch_into|ovrimos_fetch_row|ovrimos_field_len|ovrimos_field_name|ovrimos_field_num|ovrimos_field_type|ovrimos_free_result|ovrimos_longreadlen|ovrimos_num_fields|ovrimos_num_rows|ovrimos_prepare|ovrimos_result|ovrimos_result_all|ovrimos_rollback|pack|parentiterator|parse_ini_file|parse_ini_string|parse_str|parse_url|parsekit_compile_file|parsekit_compile_string|parsekit_func_arginfo|passthru|pathinfo|pclose|pcntl_alarm|pcntl_exec|pcntl_fork|pcntl_getpriority|pcntl_setpriority|pcntl_signal|pcntl_signal_dispatch|pcntl_sigprocmask|pcntl_sigtimedwait|pcntl_sigwaitinfo|pcntl_wait|pcntl_waitpid|pcntl_wexitstatus|pcntl_wifexited|pcntl_wifsignaled|pcntl_wifstopped|pcntl_wstopsig|pcntl_wtermsig|pdf_activate_item|pdf_add_annotation|pdf_add_bookmark|pdf_add_launchlink|pdf_add_locallink|pdf_add_nameddest|pdf_add_note|pdf_add_outline|pdf_add_pdflink|pdf_add_table_cell|pdf_add_textflow|pdf_add_thumbnail|pdf_add_weblink|pdf_arc|pdf_arcn|pdf_attach_file|pdf_begin_document|pdf_begin_font|pdf_begin_glyph|pdf_begin_item|pdf_begin_layer|pdf_begin_page|pdf_begin_page_ext|pdf_begin_pattern|pdf_begin_template|pdf_begin_template_ext|pdf_circle|pdf_clip|pdf_close|pdf_close_image|pdf_close_pdi|pdf_close_pdi_page|pdf_closepath|pdf_closepath_fill_stroke|pdf_closepath_stroke|pdf_concat|pdf_continue_text|pdf_create_3dview|pdf_create_action|pdf_create_annotation|pdf_create_bookmark|pdf_create_field|pdf_create_fieldgroup|pdf_create_gstate|pdf_create_pvf|pdf_create_textflow|pdf_curveto|pdf_define_layer|pdf_delete|pdf_delete_pvf|pdf_delete_table|pdf_delete_textflow|pdf_encoding_set_char|pdf_end_document|pdf_end_font|pdf_end_glyph|pdf_end_item|pdf_end_layer|pdf_end_page|pdf_end_page_ext|pdf_end_pattern|pdf_end_template|pdf_endpath|pdf_fill|pdf_fill_imageblock|pdf_fill_pdfblock|pdf_fill_stroke|pdf_fill_textblock|pdf_findfont|pdf_fit_image|pdf_fit_pdi_page|pdf_fit_table|pdf_fit_textflow|pdf_fit_textline|pdf_get_apiname|pdf_get_buffer|pdf_get_errmsg|pdf_get_errnum|pdf_get_font|pdf_get_fontname|pdf_get_fontsize|pdf_get_image_height|pdf_get_image_width|pdf_get_majorversion|pdf_get_minorversion|pdf_get_parameter|pdf_get_pdi_parameter|pdf_get_pdi_value|pdf_get_value|pdf_info_font|pdf_info_matchbox|pdf_info_table|pdf_info_textflow|pdf_info_textline|pdf_initgraphics|pdf_lineto|pdf_load_3ddata|pdf_load_font|pdf_load_iccprofile|pdf_load_image|pdf_makespotcolor|pdf_moveto|pdf_new|pdf_open_ccitt|pdf_open_file|pdf_open_gif|pdf_open_image|pdf_open_image_file|pdf_open_jpeg|pdf_open_memory_image|pdf_open_pdi|pdf_open_pdi_document|pdf_open_pdi_page|pdf_open_tiff|pdf_pcos_get_number|pdf_pcos_get_stream|pdf_pcos_get_string|pdf_place_image|pdf_place_pdi_page|pdf_process_pdi|pdf_rect|pdf_restore|pdf_resume_page|pdf_rotate|pdf_save|pdf_scale|pdf_set_border_color|pdf_set_border_dash|pdf_set_border_style|pdf_set_char_spacing|pdf_set_duration|pdf_set_gstate|pdf_set_horiz_scaling|pdf_set_info|pdf_set_info_author|pdf_set_info_creator|pdf_set_info_keywords|pdf_set_info_subject|pdf_set_info_title|pdf_set_layer_dependency|pdf_set_leading|pdf_set_parameter|pdf_set_text_matrix|pdf_set_text_pos|pdf_set_text_rendering|pdf_set_text_rise|pdf_set_value|pdf_set_word_spacing|pdf_setcolor|pdf_setdash|pdf_setdashpattern|pdf_setflat|pdf_setfont|pdf_setgray|pdf_setgray_fill|pdf_setgray_stroke|pdf_setlinecap|pdf_setlinejoin|pdf_setlinewidth|pdf_setmatrix|pdf_setmiterlimit|pdf_setpolydash|pdf_setrgbcolor|pdf_setrgbcolor_fill|pdf_setrgbcolor_stroke|pdf_shading|pdf_shading_pattern|pdf_shfill|pdf_show|pdf_show_boxed|pdf_show_xy|pdf_skew|pdf_stringwidth|pdf_stroke|pdf_suspend_page|pdf_translate|pdf_utf16_to_utf8|pdf_utf32_to_utf16|pdf_utf8_to_utf16|pdo|pdo_cubrid_schema|pdo_pgsqllobcreate|pdo_pgsqllobopen|pdo_pgsqllobunlink|pdo_sqlitecreateaggregate|pdo_sqlitecreatefunction|pdoexception|pdostatement|pfsockopen|pg_affected_rows|pg_cancel_query|pg_client_encoding|pg_close|pg_connect|pg_connection_busy|pg_connection_reset|pg_connection_status|pg_convert|pg_copy_from|pg_copy_to|pg_dbname|pg_delete|pg_end_copy|pg_escape_bytea|pg_escape_string|pg_execute|pg_fetch_all|pg_fetch_all_columns|pg_fetch_array|pg_fetch_assoc|pg_fetch_object|pg_fetch_result|pg_fetch_row|pg_field_is_null|pg_field_name|pg_field_num|pg_field_prtlen|pg_field_size|pg_field_table|pg_field_type|pg_field_type_oid|pg_free_result|pg_get_notify|pg_get_pid|pg_get_result|pg_host|pg_insert|pg_last_error|pg_last_notice|pg_last_oid|pg_lo_close|pg_lo_create|pg_lo_export|pg_lo_import|pg_lo_open|pg_lo_read|pg_lo_read_all|pg_lo_seek|pg_lo_tell|pg_lo_unlink|pg_lo_write|pg_meta_data|pg_num_fields|pg_num_rows|pg_options|pg_parameter_status|pg_pconnect|pg_ping|pg_port|pg_prepare|pg_put_line|pg_query|pg_query_params|pg_result_error|pg_result_error_field|pg_result_seek|pg_result_status|pg_select|pg_send_execute|pg_send_prepare|pg_send_query|pg_send_query_params|pg_set_client_encoding|pg_set_error_verbosity|pg_trace|pg_transaction_status|pg_tty|pg_unescape_bytea|pg_untrace|pg_update|pg_version|php_check_syntax|php_ini_loaded_file|php_ini_scanned_files|php_logo_guid|php_sapi_name|php_strip_whitespace|php_uname|phpcredits|phpinfo|phpversion|pi|png2wbmp|popen|pos|posix_access|posix_ctermid|posix_errno|posix_get_last_error|posix_getcwd|posix_getegid|posix_geteuid|posix_getgid|posix_getgrgid|posix_getgrnam|posix_getgroups|posix_getlogin|posix_getpgid|posix_getpgrp|posix_getpid|posix_getppid|posix_getpwnam|posix_getpwuid|posix_getrlimit|posix_getsid|posix_getuid|posix_initgroups|posix_isatty|posix_kill|posix_mkfifo|posix_mknod|posix_setegid|posix_seteuid|posix_setgid|posix_setpgid|posix_setsid|posix_setuid|posix_strerror|posix_times|posix_ttyname|posix_uname|pow|preg_filter|preg_grep|preg_last_error|preg_match|preg_match_all|preg_quote|preg_replace|preg_replace_callback|preg_split|prev|print|print_r|printer_abort|printer_close|printer_create_brush|printer_create_dc|printer_create_font|printer_create_pen|printer_delete_brush|printer_delete_dc|printer_delete_font|printer_delete_pen|printer_draw_bmp|printer_draw_chord|printer_draw_elipse|printer_draw_line|printer_draw_pie|printer_draw_rectangle|printer_draw_roundrect|printer_draw_text|printer_end_doc|printer_end_page|printer_get_option|printer_list|printer_logical_fontheight|printer_open|printer_select_brush|printer_select_font|printer_select_pen|printer_set_option|printer_start_doc|printer_start_page|printer_write|printf|proc_close|proc_get_status|proc_nice|proc_open|proc_terminate|property_exists|ps_add_bookmark|ps_add_launchlink|ps_add_locallink|ps_add_note|ps_add_pdflink|ps_add_weblink|ps_arc|ps_arcn|ps_begin_page|ps_begin_pattern|ps_begin_template|ps_circle|ps_clip|ps_close|ps_close_image|ps_closepath|ps_closepath_stroke|ps_continue_text|ps_curveto|ps_delete|ps_end_page|ps_end_pattern|ps_end_template|ps_fill|ps_fill_stroke|ps_findfont|ps_get_buffer|ps_get_parameter|ps_get_value|ps_hyphenate|ps_include_file|ps_lineto|ps_makespotcolor|ps_moveto|ps_new|ps_open_file|ps_open_image|ps_open_image_file|ps_open_memory_image|ps_place_image|ps_rect|ps_restore|ps_rotate|ps_save|ps_scale|ps_set_border_color|ps_set_border_dash|ps_set_border_style|ps_set_info|ps_set_parameter|ps_set_text_pos|ps_set_value|ps_setcolor|ps_setdash|ps_setflat|ps_setfont|ps_setgray|ps_setlinecap|ps_setlinejoin|ps_setlinewidth|ps_setmiterlimit|ps_setoverprintmode|ps_setpolydash|ps_shading|ps_shading_pattern|ps_shfill|ps_show|ps_show2|ps_show_boxed|ps_show_xy|ps_show_xy2|ps_string_geometry|ps_stringwidth|ps_stroke|ps_symbol|ps_symbol_name|ps_symbol_width|ps_translate|pspell_add_to_personal|pspell_add_to_session|pspell_check|pspell_clear_session|pspell_config_create|pspell_config_data_dir|pspell_config_dict_dir|pspell_config_ignore|pspell_config_mode|pspell_config_personal|pspell_config_repl|pspell_config_runtogether|pspell_config_save_repl|pspell_new|pspell_new_config|pspell_new_personal|pspell_save_wordlist|pspell_store_replacement|pspell_suggest|putenv|px_close|px_create_fp|px_date2string|px_delete|px_delete_record|px_get_field|px_get_info|px_get_parameter|px_get_record|px_get_schema|px_get_value|px_insert_record|px_new|px_numfields|px_numrecords|px_open_fp|px_put_record|px_retrieve_record|px_set_blob_file|px_set_parameter|px_set_tablename|px_set_targetencoding|px_set_value|px_timestamp2string|px_update_record|qdom_error|qdom_tree|quoted_printable_decode|quoted_printable_encode|quotemeta|rad2deg|radius_acct_open|radius_add_server|radius_auth_open|radius_close|radius_config|radius_create_request|radius_cvt_addr|radius_cvt_int|radius_cvt_string|radius_demangle|radius_demangle_mppe_key|radius_get_attr|radius_get_vendor_attr|radius_put_addr|radius_put_attr|radius_put_int|radius_put_string|radius_put_vendor_addr|radius_put_vendor_attr|radius_put_vendor_int|radius_put_vendor_string|radius_request_authenticator|radius_send_request|radius_server_secret|radius_strerror|rand|range|rangeexception|rar_wrapper_cache_stats|rararchive|rarentry|rarexception|rawurldecode|rawurlencode|read_exif_data|readdir|readfile|readgzfile|readline|readline_add_history|readline_callback_handler_install|readline_callback_handler_remove|readline_callback_read_char|readline_clear_history|readline_completion_function|readline_info|readline_list_history|readline_on_new_line|readline_read_history|readline_redisplay|readline_write_history|readlink|realpath|realpath_cache_get|realpath_cache_size|recode|recode_file|recode_string|recursivearrayiterator|recursivecachingiterator|recursivecallbackfilteriterator|recursivedirectoryiterator|recursivefilteriterator|recursiveiterator|recursiveiteratoriterator|recursiveregexiterator|recursivetreeiterator|reflection|reflectionclass|reflectionexception|reflectionextension|reflectionfunction|reflectionfunctionabstract|reflectionmethod|reflectionobject|reflectionparameter|reflectionproperty|reflector|regexiterator|register_shutdown_function|register_tick_function|rename|rename_function|require|require_once|reset|resetValue|resourcebundle|restore_error_handler|restore_exception_handler|restore_include_path|return|rewind|rewinddir|rmdir|round|rpm_close|rpm_get_tag|rpm_is_valid|rpm_open|rpm_version|rrd_create|rrd_error|rrd_fetch|rrd_first|rrd_graph|rrd_info|rrd_last|rrd_lastupdate|rrd_restore|rrd_tune|rrd_update|rrd_xport|rrdcreator|rrdgraph|rrdupdater|rsort|rtrim|runkit_class_adopt|runkit_class_emancipate|runkit_constant_add|runkit_constant_redefine|runkit_constant_remove|runkit_function_add|runkit_function_copy|runkit_function_redefine|runkit_function_remove|runkit_function_rename|runkit_import|runkit_lint|runkit_lint_file|runkit_method_add|runkit_method_copy|runkit_method_redefine|runkit_method_remove|runkit_method_rename|runkit_return_value_used|runkit_sandbox_output_handler|runkit_superglobals|runtimeexception|samconnection_commit|samconnection_connect|samconnection_constructor|samconnection_disconnect|samconnection_errno|samconnection_error|samconnection_isconnected|samconnection_peek|samconnection_peekall|samconnection_receive|samconnection_remove|samconnection_rollback|samconnection_send|samconnection_setDebug|samconnection_subscribe|samconnection_unsubscribe|sammessage_body|sammessage_constructor|sammessage_header|sca_createdataobject|sca_getservice|sca_localproxy_createdataobject|sca_soapproxy_createdataobject|scandir|sdo_das_changesummary_beginlogging|sdo_das_changesummary_endlogging|sdo_das_changesummary_getchangeddataobjects|sdo_das_changesummary_getchangetype|sdo_das_changesummary_getoldcontainer|sdo_das_changesummary_getoldvalues|sdo_das_changesummary_islogging|sdo_das_datafactory_addpropertytotype|sdo_das_datafactory_addtype|sdo_das_datafactory_getdatafactory|sdo_das_dataobject_getchangesummary|sdo_das_relational_applychanges|sdo_das_relational_construct|sdo_das_relational_createrootdataobject|sdo_das_relational_executepreparedquery|sdo_das_relational_executequery|sdo_das_setting_getlistindex|sdo_das_setting_getpropertyindex|sdo_das_setting_getpropertyname|sdo_das_setting_getvalue|sdo_das_setting_isset|sdo_das_xml_addtypes|sdo_das_xml_create|sdo_das_xml_createdataobject|sdo_das_xml_createdocument|sdo_das_xml_document_getrootdataobject|sdo_das_xml_document_getrootelementname|sdo_das_xml_document_getrootelementuri|sdo_das_xml_document_setencoding|sdo_das_xml_document_setxmldeclaration|sdo_das_xml_document_setxmlversion|sdo_das_xml_loadfile|sdo_das_xml_loadstring|sdo_das_xml_savefile|sdo_das_xml_savestring|sdo_datafactory_create|sdo_dataobject_clear|sdo_dataobject_createdataobject|sdo_dataobject_getcontainer|sdo_dataobject_getsequence|sdo_dataobject_gettypename|sdo_dataobject_gettypenamespaceuri|sdo_exception_getcause|sdo_list_insert|sdo_model_property_getcontainingtype|sdo_model_property_getdefault|sdo_model_property_getname|sdo_model_property_gettype|sdo_model_property_iscontainment|sdo_model_property_ismany|sdo_model_reflectiondataobject_construct|sdo_model_reflectiondataobject_export|sdo_model_reflectiondataobject_getcontainmentproperty|sdo_model_reflectiondataobject_getinstanceproperties|sdo_model_reflectiondataobject_gettype|sdo_model_type_getbasetype|sdo_model_type_getname|sdo_model_type_getnamespaceuri|sdo_model_type_getproperties|sdo_model_type_getproperty|sdo_model_type_isabstracttype|sdo_model_type_isdatatype|sdo_model_type_isinstance|sdo_model_type_isopentype|sdo_model_type_issequencedtype|sdo_sequence_getproperty|sdo_sequence_insert|sdo_sequence_move|seekableiterator|sem_acquire|sem_get|sem_release|sem_remove|serializable|serialize|session_cache_expire|session_cache_limiter|session_commit|session_decode|session_destroy|session_encode|session_get_cookie_params|session_id|session_is_registered|session_module_name|session_name|session_pgsql_add_error|session_pgsql_get_error|session_pgsql_get_field|session_pgsql_reset|session_pgsql_set_field|session_pgsql_status|session_regenerate_id|session_register|session_save_path|session_set_cookie_params|session_set_save_handler|session_start|session_unregister|session_unset|session_write_close|setCounterClass|set_error_handler|set_exception_handler|set_file_buffer|set_include_path|set_magic_quotes_runtime|set_socket_blocking|set_time_limit|setcookie|setlocale|setproctitle|setrawcookie|setstaticpropertyvalue|setthreadtitle|settype|sha1|sha1_file|shell_exec|shm_attach|shm_detach|shm_get_var|shm_has_var|shm_put_var|shm_remove|shm_remove_var|shmop_close|shmop_delete|shmop_open|shmop_read|shmop_size|shmop_write|show_source|shuffle|signeurlpaiement|similar_text|simplexml_import_dom|simplexml_load_file|simplexml_load_string|simplexmlelement|simplexmliterator|sin|sinh|sizeof|sleep|snmp|snmp2_get|snmp2_getnext|snmp2_real_walk|snmp2_set|snmp2_walk|snmp3_get|snmp3_getnext|snmp3_real_walk|snmp3_set|snmp3_walk|snmp_get_quick_print|snmp_get_valueretrieval|snmp_read_mib|snmp_set_enum_print|snmp_set_oid_numeric_print|snmp_set_oid_output_format|snmp_set_quick_print|snmp_set_valueretrieval|snmpget|snmpgetnext|snmprealwalk|snmpset|snmpwalk|snmpwalkoid|soapclient|soapfault|soapheader|soapparam|soapserver|soapvar|socket_accept|socket_bind|socket_clear_error|socket_close|socket_connect|socket_create|socket_create_listen|socket_create_pair|socket_get_option|socket_get_status|socket_getpeername|socket_getsockname|socket_last_error|socket_listen|socket_read|socket_recv|socket_recvfrom|socket_select|socket_send|socket_sendto|socket_set_block|socket_set_blocking|socket_set_nonblock|socket_set_option|socket_set_timeout|socket_shutdown|socket_strerror|socket_write|solr_get_version|solrclient|solrclientexception|solrdocument|solrdocumentfield|solrexception|solrgenericresponse|solrillegalargumentexception|solrillegaloperationexception|solrinputdocument|solrmodifiableparams|solrobject|solrparams|solrpingresponse|solrquery|solrqueryresponse|solrresponse|solrupdateresponse|solrutils|sort|soundex|sphinxclient|spl_autoload|spl_autoload_call|spl_autoload_extensions|spl_autoload_functions|spl_autoload_register|spl_autoload_unregister|spl_classes|spl_object_hash|splbool|spldoublylinkedlist|splenum|splfileinfo|splfileobject|splfixedarray|splfloat|splheap|splint|split|spliti|splmaxheap|splminheap|splobjectstorage|splobserver|splpriorityqueue|splqueue|splstack|splstring|splsubject|spltempfileobject|spoofchecker|sprintf|sql_regcase|sqlite3|sqlite3result|sqlite3stmt|sqlite_array_query|sqlite_busy_timeout|sqlite_changes|sqlite_close|sqlite_column|sqlite_create_aggregate|sqlite_create_function|sqlite_current|sqlite_error_string|sqlite_escape_string|sqlite_exec|sqlite_factory|sqlite_fetch_all|sqlite_fetch_array|sqlite_fetch_column_types|sqlite_fetch_object|sqlite_fetch_single|sqlite_fetch_string|sqlite_field_name|sqlite_has_more|sqlite_has_prev|sqlite_key|sqlite_last_error|sqlite_last_insert_rowid|sqlite_libencoding|sqlite_libversion|sqlite_next|sqlite_num_fields|sqlite_num_rows|sqlite_open|sqlite_popen|sqlite_prev|sqlite_query|sqlite_rewind|sqlite_seek|sqlite_single_query|sqlite_udf_decode_binary|sqlite_udf_encode_binary|sqlite_unbuffered_query|sqlite_valid|sqrt|srand|sscanf|ssdeep_fuzzy_compare|ssdeep_fuzzy_hash|ssdeep_fuzzy_hash_filename|ssh2_auth_hostbased_file|ssh2_auth_none|ssh2_auth_password|ssh2_auth_pubkey_file|ssh2_connect|ssh2_exec|ssh2_fetch_stream|ssh2_fingerprint|ssh2_methods_negotiated|ssh2_publickey_add|ssh2_publickey_init|ssh2_publickey_list|ssh2_publickey_remove|ssh2_scp_recv|ssh2_scp_send|ssh2_sftp|ssh2_sftp_lstat|ssh2_sftp_mkdir|ssh2_sftp_readlink|ssh2_sftp_realpath|ssh2_sftp_rename|ssh2_sftp_rmdir|ssh2_sftp_stat|ssh2_sftp_symlink|ssh2_sftp_unlink|ssh2_shell|ssh2_tunnel|stat|stats_absolute_deviation|stats_cdf_beta|stats_cdf_binomial|stats_cdf_cauchy|stats_cdf_chisquare|stats_cdf_exponential|stats_cdf_f|stats_cdf_gamma|stats_cdf_laplace|stats_cdf_logistic|stats_cdf_negative_binomial|stats_cdf_noncentral_chisquare|stats_cdf_noncentral_f|stats_cdf_poisson|stats_cdf_t|stats_cdf_uniform|stats_cdf_weibull|stats_covariance|stats_den_uniform|stats_dens_beta|stats_dens_cauchy|stats_dens_chisquare|stats_dens_exponential|stats_dens_f|stats_dens_gamma|stats_dens_laplace|stats_dens_logistic|stats_dens_negative_binomial|stats_dens_normal|stats_dens_pmf_binomial|stats_dens_pmf_hypergeometric|stats_dens_pmf_poisson|stats_dens_t|stats_dens_weibull|stats_harmonic_mean|stats_kurtosis|stats_rand_gen_beta|stats_rand_gen_chisquare|stats_rand_gen_exponential|stats_rand_gen_f|stats_rand_gen_funiform|stats_rand_gen_gamma|stats_rand_gen_ibinomial|stats_rand_gen_ibinomial_negative|stats_rand_gen_int|stats_rand_gen_ipoisson|stats_rand_gen_iuniform|stats_rand_gen_noncenral_chisquare|stats_rand_gen_noncentral_f|stats_rand_gen_noncentral_t|stats_rand_gen_normal|stats_rand_gen_t|stats_rand_get_seeds|stats_rand_phrase_to_seeds|stats_rand_ranf|stats_rand_setall|stats_skew|stats_standard_deviation|stats_stat_binomial_coef|stats_stat_correlation|stats_stat_gennch|stats_stat_independent_t|stats_stat_innerproduct|stats_stat_noncentral_t|stats_stat_paired_t|stats_stat_percentile|stats_stat_powersum|stats_variance|stomp|stomp_connect_error|stomp_version|stompexception|stompframe|str_getcsv|str_ireplace|str_pad|str_repeat|str_replace|str_rot13|str_shuffle|str_split|str_word_count|strcasecmp|strchr|strcmp|strcoll|strcspn|stream_bucket_append|stream_bucket_make_writeable|stream_bucket_new|stream_bucket_prepend|stream_context_create|stream_context_get_default|stream_context_get_options|stream_context_get_params|stream_context_set_default|stream_context_set_option|stream_context_set_params|stream_copy_to_stream|stream_encoding|stream_filter_append|stream_filter_prepend|stream_filter_register|stream_filter_remove|stream_get_contents|stream_get_filters|stream_get_line|stream_get_meta_data|stream_get_transports|stream_get_wrappers|stream_is_local|stream_notification_callback|stream_register_wrapper|stream_resolve_include_path|stream_select|stream_set_blocking|stream_set_read_buffer|stream_set_timeout|stream_set_write_buffer|stream_socket_accept|stream_socket_client|stream_socket_enable_crypto|stream_socket_get_name|stream_socket_pair|stream_socket_recvfrom|stream_socket_sendto|stream_socket_server|stream_socket_shutdown|stream_supports_lock|stream_wrapper_register|stream_wrapper_restore|stream_wrapper_unregister|streamwrapper|strftime|strip_tags|stripcslashes|stripos|stripslashes|stristr|strlen|strnatcasecmp|strnatcmp|strncasecmp|strncmp|strpbrk|strpos|strptime|strrchr|strrev|strripos|strrpos|strspn|strstr|strtok|strtolower|strtotime|strtoupper|strtr|strval|substr|substr_compare|substr_count|substr_replace|svm|svmmodel|svn_add|svn_auth_get_parameter|svn_auth_set_parameter|svn_blame|svn_cat|svn_checkout|svn_cleanup|svn_client_version|svn_commit|svn_delete|svn_diff|svn_export|svn_fs_abort_txn|svn_fs_apply_text|svn_fs_begin_txn2|svn_fs_change_node_prop|svn_fs_check_path|svn_fs_contents_changed|svn_fs_copy|svn_fs_delete|svn_fs_dir_entries|svn_fs_file_contents|svn_fs_file_length|svn_fs_is_dir|svn_fs_is_file|svn_fs_make_dir|svn_fs_make_file|svn_fs_node_created_rev|svn_fs_node_prop|svn_fs_props_changed|svn_fs_revision_prop|svn_fs_revision_root|svn_fs_txn_root|svn_fs_youngest_rev|svn_import|svn_log|svn_ls|svn_mkdir|svn_repos_create|svn_repos_fs|svn_repos_fs_begin_txn_for_commit|svn_repos_fs_commit_txn|svn_repos_hotcopy|svn_repos_open|svn_repos_recover|svn_revert|svn_status|svn_update|swf_actiongeturl|swf_actiongotoframe|swf_actiongotolabel|swf_actionnextframe|swf_actionplay|swf_actionprevframe|swf_actionsettarget|swf_actionstop|swf_actiontogglequality|swf_actionwaitforframe|swf_addbuttonrecord|swf_addcolor|swf_closefile|swf_definebitmap|swf_definefont|swf_defineline|swf_definepoly|swf_definerect|swf_definetext|swf_endbutton|swf_enddoaction|swf_endshape|swf_endsymbol|swf_fontsize|swf_fontslant|swf_fonttracking|swf_getbitmapinfo|swf_getfontinfo|swf_getframe|swf_labelframe|swf_lookat|swf_modifyobject|swf_mulcolor|swf_nextid|swf_oncondition|swf_openfile|swf_ortho|swf_ortho2|swf_perspective|swf_placeobject|swf_polarview|swf_popmatrix|swf_posround|swf_pushmatrix|swf_removeobject|swf_rotate|swf_scale|swf_setfont|swf_setframe|swf_shapearc|swf_shapecurveto|swf_shapecurveto3|swf_shapefillbitmapclip|swf_shapefillbitmaptile|swf_shapefilloff|swf_shapefillsolid|swf_shapelinesolid|swf_shapelineto|swf_shapemoveto|swf_showframe|swf_startbutton|swf_startdoaction|swf_startshape|swf_startsymbol|swf_textwidth|swf_translate|swf_viewport|swfaction|swfbitmap|swfbutton|swfdisplayitem|swffill|swffont|swffontchar|swfgradient|swfmorph|swfmovie|swfprebuiltclip|swfshape|swfsound|swfsoundinstance|swfsprite|swftext|swftextfield|swfvideostream|swish_construct|swish_getmetalist|swish_getpropertylist|swish_prepare|swish_query|swishresult_getmetalist|swishresult_stem|swishresults_getparsedwords|swishresults_getremovedstopwords|swishresults_nextresult|swishresults_seekresult|swishsearch_execute|swishsearch_resetlimit|swishsearch_setlimit|swishsearch_setphrasedelimiter|swishsearch_setsort|swishsearch_setstructure|sybase_affected_rows|sybase_close|sybase_connect|sybase_data_seek|sybase_deadlock_retry_count|sybase_fetch_array|sybase_fetch_assoc|sybase_fetch_field|sybase_fetch_object|sybase_fetch_row|sybase_field_seek|sybase_free_result|sybase_get_last_message|sybase_min_client_severity|sybase_min_error_severity|sybase_min_message_severity|sybase_min_server_severity|sybase_num_fields|sybase_num_rows|sybase_pconnect|sybase_query|sybase_result|sybase_select_db|sybase_set_message_handler|sybase_unbuffered_query|symlink|sys_get_temp_dir|sys_getloadavg|syslog|system|tag|tan|tanh|tcpwrap_check|tempnam|textdomain|tidy|tidy_access_count|tidy_config_count|tidy_diagnose|tidy_error_count|tidy_get_error_buffer|tidy_get_output|tidy_load_config|tidy_reset_config|tidy_save_config|tidy_set_encoding|tidy_setopt|tidy_warning_count|tidynode|time|time_nanosleep|time_sleep_until|timezone_abbreviations_list|timezone_identifiers_list|timezone_location_get|timezone_name_from_abbr|timezone_name_get|timezone_offset_get|timezone_open|timezone_transitions_get|timezone_version_get|tmpfile|token_get_all|token_name|tokyotyrant|tokyotyrantquery|tokyotyranttable|tostring|tostring|touch|transliterator|traversable|trigger_error|trim|uasort|ucfirst|ucwords|udm_add_search_limit|udm_alloc_agent|udm_alloc_agent_array|udm_api_version|udm_cat_list|udm_cat_path|udm_check_charset|udm_check_stored|udm_clear_search_limits|udm_close_stored|udm_crc32|udm_errno|udm_error|udm_find|udm_free_agent|udm_free_ispell_data|udm_free_res|udm_get_doc_count|udm_get_res_field|udm_get_res_param|udm_hash32|udm_load_ispell_data|udm_open_stored|udm_set_agent_param|uksort|umask|underflowexception|unexpectedvalueexception|uniqid|unixtojd|unlink|unpack|unregister_tick_function|unserialize|unset|urldecode|urlencode|use_soap_error_handler|user_error|usleep|usort|utf8_decode|utf8_encode|v8js|v8jsexception|var_dump|var_export|variant|variant_abs|variant_add|variant_and|variant_cast|variant_cat|variant_cmp|variant_date_from_timestamp|variant_date_to_timestamp|variant_div|variant_eqv|variant_fix|variant_get_type|variant_idiv|variant_imp|variant_int|variant_mod|variant_mul|variant_neg|variant_not|variant_or|variant_pow|variant_round|variant_set|variant_set_type|variant_sub|variant_xor|version_compare|vfprintf|virtual|vpopmail_add_alias_domain|vpopmail_add_alias_domain_ex|vpopmail_add_domain|vpopmail_add_domain_ex|vpopmail_add_user|vpopmail_alias_add|vpopmail_alias_del|vpopmail_alias_del_domain|vpopmail_alias_get|vpopmail_alias_get_all|vpopmail_auth_user|vpopmail_del_domain|vpopmail_del_domain_ex|vpopmail_del_user|vpopmail_error|vpopmail_passwd|vpopmail_set_user_quota|vprintf|vsprintf|w32api_deftype|w32api_init_dtype|w32api_invoke_function|w32api_register_function|w32api_set_call_method|wddx_add_vars|wddx_deserialize|wddx_packet_end|wddx_packet_start|wddx_serialize_value|wddx_serialize_vars|win32_continue_service|win32_create_service|win32_delete_service|win32_get_last_control_message|win32_pause_service|win32_ps_list_procs|win32_ps_stat_mem|win32_ps_stat_proc|win32_query_service_status|win32_set_service_status|win32_start_service|win32_start_service_ctrl_dispatcher|win32_stop_service|wincache_fcache_fileinfo|wincache_fcache_meminfo|wincache_lock|wincache_ocache_fileinfo|wincache_ocache_meminfo|wincache_refresh_if_changed|wincache_rplist_fileinfo|wincache_rplist_meminfo|wincache_scache_info|wincache_scache_meminfo|wincache_ucache_add|wincache_ucache_cas|wincache_ucache_clear|wincache_ucache_dec|wincache_ucache_delete|wincache_ucache_exists|wincache_ucache_get|wincache_ucache_inc|wincache_ucache_info|wincache_ucache_meminfo|wincache_ucache_set|wincache_unlock|wordwrap|xattr_get|xattr_list|xattr_remove|xattr_set|xattr_supported|xdiff_file_bdiff|xdiff_file_bdiff_size|xdiff_file_bpatch|xdiff_file_diff|xdiff_file_diff_binary|xdiff_file_merge3|xdiff_file_patch|xdiff_file_patch_binary|xdiff_file_rabdiff|xdiff_string_bdiff|xdiff_string_bdiff_size|xdiff_string_bpatch|xdiff_string_diff|xdiff_string_diff_binary|xdiff_string_merge3|xdiff_string_patch|xdiff_string_patch_binary|xdiff_string_rabdiff|xhprof_disable|xhprof_enable|xhprof_sample_disable|xhprof_sample_enable|xml_error_string|xml_get_current_byte_index|xml_get_current_column_number|xml_get_current_line_number|xml_get_error_code|xml_parse|xml_parse_into_struct|xml_parser_create|xml_parser_create_ns|xml_parser_free|xml_parser_get_option|xml_parser_set_option|xml_set_character_data_handler|xml_set_default_handler|xml_set_element_handler|xml_set_end_namespace_decl_handler|xml_set_external_entity_ref_handler|xml_set_notation_decl_handler|xml_set_object|xml_set_processing_instruction_handler|xml_set_start_namespace_decl_handler|xml_set_unparsed_entity_decl_handler|xmlreader|xmlrpc_decode|xmlrpc_decode_request|xmlrpc_encode|xmlrpc_encode_request|xmlrpc_get_type|xmlrpc_is_fault|xmlrpc_parse_method_descriptions|xmlrpc_server_add_introspection_data|xmlrpc_server_call_method|xmlrpc_server_create|xmlrpc_server_destroy|xmlrpc_server_register_introspection_callback|xmlrpc_server_register_method|xmlrpc_set_type|xmlwriter_end_attribute|xmlwriter_end_cdata|xmlwriter_end_comment|xmlwriter_end_document|xmlwriter_end_dtd|xmlwriter_end_dtd_attlist|xmlwriter_end_dtd_element|xmlwriter_end_dtd_entity|xmlwriter_end_element|xmlwriter_end_pi|xmlwriter_flush|xmlwriter_full_end_element|xmlwriter_open_memory|xmlwriter_open_uri|xmlwriter_output_memory|xmlwriter_set_indent|xmlwriter_set_indent_string|xmlwriter_start_attribute|xmlwriter_start_attribute_ns|xmlwriter_start_cdata|xmlwriter_start_comment|xmlwriter_start_document|xmlwriter_start_dtd|xmlwriter_start_dtd_attlist|xmlwriter_start_dtd_element|xmlwriter_start_dtd_entity|xmlwriter_start_element|xmlwriter_start_element_ns|xmlwriter_start_pi|xmlwriter_text|xmlwriter_write_attribute|xmlwriter_write_attribute_ns|xmlwriter_write_cdata|xmlwriter_write_comment|xmlwriter_write_dtd|xmlwriter_write_dtd_attlist|xmlwriter_write_dtd_element|xmlwriter_write_dtd_entity|xmlwriter_write_element|xmlwriter_write_element_ns|xmlwriter_write_pi|xmlwriter_write_raw|xpath_eval|xpath_eval_expression|xpath_new_context|xpath_register_ns|xpath_register_ns_auto|xptr_eval|xptr_new_context|xslt_backend_info|xslt_backend_name|xslt_backend_version|xslt_create|xslt_errno|xslt_error|xslt_free|xslt_getopt|xslt_process|xslt_set_base|xslt_set_encoding|xslt_set_error_handler|xslt_set_log|xslt_set_object|xslt_set_sax_handler|xslt_set_sax_handlers|xslt_set_scheme_handler|xslt_set_scheme_handlers|xslt_setopt|xsltprocessor|yaml_emit|yaml_emit_file|yaml_parse|yaml_parse_file|yaml_parse_url|yaz_addinfo|yaz_ccl_conf|yaz_ccl_parse|yaz_close|yaz_connect|yaz_database|yaz_element|yaz_errno|yaz_error|yaz_es|yaz_es_result|yaz_get_option|yaz_hits|yaz_itemorder|yaz_present|yaz_range|yaz_record|yaz_scan|yaz_scan_result|yaz_schema|yaz_search|yaz_set_option|yaz_sort|yaz_syntax|yaz_wait|yp_all|yp_cat|yp_err_string|yp_errno|yp_first|yp_get_default_domain|yp_master|yp_match|yp_next|yp_order|zend_logo_guid|zend_thread_id|zend_version|zip_close|zip_entry_close|zip_entry_compressedsize|zip_entry_compressionmethod|zip_entry_filesize|zip_entry_name|zip_entry_open|zip_entry_read|zip_open|zip_read|ziparchive|ziparchive_addemptydir|ziparchive_addfile|ziparchive_addfromstring|ziparchive_close|ziparchive_deleteindex|ziparchive_deletename|ziparchive_extractto|ziparchive_getarchivecomment|ziparchive_getcommentindex|ziparchive_getcommentname|ziparchive_getfromindex|ziparchive_getfromname|ziparchive_getnameindex|ziparchive_getstatusstring|ziparchive_getstream|ziparchive_locatename|ziparchive_open|ziparchive_renameindex|ziparchive_renamename|ziparchive_setCommentName|ziparchive_setarchivecomment|ziparchive_setcommentindex|ziparchive_statindex|ziparchive_statname|ziparchive_unchangeall|ziparchive_unchangearchive|ziparchive_unchangeindex|ziparchive_unchangename|zlib_get_coding_type\".split(\"|\")),n=i.arrayToMap(\"abstract|and|array|as|break|case|catch|class|clone|const|continue|declare|default|do|else|elseif|enddeclare|endfor|endforeach|endif|endswitch|endwhile|extends|final|for|foreach|function|global|goto|if|implements|interface|instanceof|namespace|new|or|private|protected|public|static|switch|throw|try|use|var|while|xor\".split(\"|\")),r=i.arrayToMap(\"die|echo|empty|exit|eval|include|include_once|isset|list|require|require_once|return|print|unset\".split(\"|\")),o=i.arrayToMap(\"true|false|null|__CLASS__|__DIR__|__FILE__|__LINE__|__METHOD__|__FUNCTION__|__NAMESPACE__\".split(\"|\")),u=i.arrayToMap(\"$GLOBALS|$_SERVER|$_GET|$_POST|$_FILES|$_REQUEST|$_SESSION|$_ENV|$_COOKIE|$php_errormsg|$HTTP_RAW_POST_DATA|$http_response_header|$argc|$argv\".split(\"|\")),a=i.arrayToMap(\"key_exists|cairo_matrix_create_scale|cairo_matrix_create_translate|call_user_method|call_user_method_array|com_addref|com_get|com_invoke|com_isenum|com_load|com_release|com_set|connection_timeout|cubrid_load_from_glo|cubrid_new_glo|cubrid_save_to_glo|cubrid_send_glo|define_syslog_variables|dl|ereg|ereg_replace|eregi|eregi_replace|hw_documentattributes|hw_documentbodytag|hw_documentsize|hw_outputdocument|imagedashedline|maxdb_bind_param|maxdb_bind_result|maxdb_client_encoding|maxdb_close_long_data|maxdb_execute|maxdb_fetch|maxdb_get_metadata|maxdb_param_count|maxdb_send_long_data|mcrypt_ecb|mcrypt_generic_end|mime_content_type|mysql_createdb|mysql_dbname|mysql_db_query|mysql_drop_db|mysql_dropdb|mysql_escape_string|mysql_fieldflags|mysql_fieldflags|mysql_fieldname|mysql_fieldtable|mysql_fieldtype|mysql_freeresult|mysql_listdbs|mysql_list_fields|mysql_listfields|mysql_list_tables|mysql_listtables|mysql_numfields|mysql_numrows|mysql_selectdb|mysql_tablename|mysqli_bind_param|mysqli_bind_result|mysqli_disable_reads_from_master|mysqli_disable_rpl_parse|mysqli_enable_reads_from_master|mysqli_enable_rpl_parse|mysqli_execute|mysqli_fetch|mysqli_get_metadata|mysqli_master_query|mysqli_param_count|mysqli_rpl_parse_enabled|mysqli_rpl_probe|mysqli_rpl_query_type|mysqli_send_long_data|mysqli_send_query|mysqli_slave_query|ocibindbyname|ocicancel|ocicloselob|ocicollappend|ocicollassign|ocicollassignelem|ocicollgetelem|ocicollmax|ocicollsize|ocicolltrim|ocicolumnisnull|ocicolumnname|ocicolumnprecision|ocicolumnscale|ocicolumnsize|ocicolumntype|ocicolumntyperaw|ocicommit|ocidefinebyname|ocierror|ociexecute|ocifetch|ocifetchinto|ocifetchstatement|ocifreecollection|ocifreecursor|ocifreedesc|ocifreestatement|ociinternaldebug|ociloadlob|ocilogoff|ocilogon|ocinewcollection|ocinewcursor|ocinewdescriptor|ocinlogon|ocinumcols|ociparse|ociplogon|ociresult|ocirollback|ocirowcount|ocisavelob|ocisavelobfile|ociserverversion|ocisetprefetch|ocistatementtype|ociwritelobtofile|ociwritetemporarylob|PDF_add_annotation|PDF_add_bookmark|PDF_add_launchlink|PDF_add_locallink|PDF_add_note|PDF_add_outline|PDF_add_pdflink|PDF_add_weblink|PDF_attach_file|PDF_begin_page|PDF_begin_template|PDF_close_pdi|PDF_close|PDF_findfont|PDF_get_font|PDF_get_fontname|PDF_get_fontsize|PDF_get_image_height|PDF_get_image_width|PDF_get_majorversion|PDF_get_minorversion|PDF_get_pdi_parameter|PDF_get_pdi_value|PDF_open_ccitt|PDF_open_file|PDF_open_gif|PDF_open_image_file|PDF_open_image|PDF_open_jpeg|PDF_open_pdi|PDF_open_tiff|PDF_place_image|PDF_place_pdi_page|PDF_set_border_color|PDF_set_border_dash|PDF_set_border_style|PDF_set_char_spacing|PDF_set_duration|PDF_set_horiz_scaling|PDF_set_info_author|PDF_set_info_creator|PDF_set_info_keywords|PDF_set_info_subject|PDF_set_info_title|PDF_set_leading|PDF_set_text_matrix|PDF_set_text_rendering|PDF_set_text_rise|PDF_set_word_spacing|PDF_setgray_fill|PDF_setgray_stroke|PDF_setgray|PDF_setpolydash|PDF_setrgbcolor_fill|PDF_setrgbcolor_stroke|PDF_setrgbcolor|PDF_show_boxed|php_check_syntax|px_set_tablename|px_set_targetencoding|runkit_sandbox_output_handler|session_is_registered|session_register|session_unregisterset_magic_quotes_runtime|magic_quotes_runtime|set_socket_blocking|socket_set_blocking|set_socket_timeout|socket_set_timeout|split|spliti|sql_regcase\".split(\"|\")),f=i.arrayToMap(\"cfunction|old_function\".split(\"|\")),l=i.arrayToMap([]);this.$rules={start:[{token:\"comment\",regex:\"\\\\/\\\\/.*$\"},{token:\"comment\",regex:\"#.*$\"},e.getStartRule(\"doc-start\"),{token:\"comment\",regex:\"\\\\/\\\\*\",next:\"comment\"},{token:\"string.regexp\",regex:\"[/](?:(?:\\\\[(?:\\\\\\\\]|[^\\\\]])+\\\\])|(?:\\\\\\\\/|[^\\\\]/]))*[/][gimy]*\\\\s*(?=[).,;]|$)\"},{token:\"string\",regex:'\"',next:\"qqstring\"},{token:\"string\",regex:\"'\",next:\"qstring\"},{token:\"constant.numeric\",regex:\"0[xX][0-9a-fA-F]+\\\\b\"},{token:\"constant.numeric\",regex:\"[+-]?\\\\d+(?:(?:\\\\.\\\\d*)?(?:[eE][+-]?\\\\d+)?)?\\\\b\"},{token:\"constant.language\",regex:\"\\\\b(?:DEFAULT_INCLUDE_PATH|E_(?:ALL|CO(?:MPILE_(?:ERROR|WARNING)|RE_(?:ERROR|WARNING))|ERROR|NOTICE|PARSE|STRICT|USER_(?:ERROR|NOTICE|WARNING)|WARNING)|P(?:EAR_(?:EXTENSION_DIR|INSTALL_DIR)|HP_(?:BINDIR|CONFIG_FILE_(?:PATH|SCAN_DIR)|DATADIR|E(?:OL|XTENSION_DIR)|INT_(?:MAX|SIZE)|L(?:IBDIR|OCALSTATEDIR)|O(?:S|UTPUT_HANDLER_(?:CONT|END|START))|PREFIX|S(?:API|HLIB_SUFFIX|YSCONFDIR)|VERSION))|__COMPILER_HALT_OFFSET__)\\\\b\"},{token:\"constant.language\",regex:\"\\\\b(?:A(?:B(?:DAY_(?:1|2|3|4|5|6|7)|MON_(?:1(?:0|1|2|)|2|3|4|5|6|7|8|9))|LT_DIGITS|M_STR|SSERT_(?:ACTIVE|BAIL|CALLBACK|QUIET_EVAL|WARNING))|C(?:ASE_(?:LOWER|UPPER)|HAR_MAX|O(?:DESET|NNECTION_(?:ABORTED|NORMAL|TIMEOUT)|UNT_(?:NORMAL|RECURSIVE))|R(?:EDITS_(?:ALL|DOCS|FULLPAGE|G(?:ENERAL|ROUP)|MODULES|QA|SAPI)|NCYSTR|YPT_(?:BLOWFISH|EXT_DES|MD5|S(?:ALT_LENGTH|TD_DES)))|URRENCY_SYMBOL)|D(?:AY_(?:1|2|3|4|5|6|7)|ECIMAL_POINT|IRECTORY_SEPARATOR|_(?:FMT|T_FMT))|E(?:NT_(?:COMPAT|NOQUOTES|QUOTES)|RA(?:_(?:D_(?:FMT|T_FMT)|T_FMT|YEAR)|)|XTR_(?:IF_EXISTS|OVERWRITE|PREFIX_(?:ALL|I(?:F_EXISTS|NVALID)|SAME)|SKIP))|FRAC_DIGITS|GROUPING|HTML_(?:ENTITIES|SPECIALCHARS)|IN(?:FO_(?:ALL|C(?:ONFIGURATION|REDITS)|ENVIRONMENT|GENERAL|LICENSE|MODULES|VARIABLES)|I_(?:ALL|PERDIR|SYSTEM|USER)|T_(?:CURR_SYMBOL|FRAC_DIGITS))|L(?:C_(?:ALL|C(?:OLLATE|TYPE)|M(?:ESSAGES|ONETARY)|NUMERIC|TIME)|O(?:CK_(?:EX|NB|SH|UN)|G_(?:A(?:LERT|UTH(?:PRIV|))|C(?:ONS|R(?:IT|ON))|D(?:AEMON|EBUG)|E(?:MERG|RR)|INFO|KERN|L(?:OCAL(?:0|1|2|3|4|5|6|7)|PR)|MAIL|N(?:DELAY|EWS|O(?:TICE|WAIT))|ODELAY|P(?:ERROR|ID)|SYSLOG|U(?:SER|UCP)|WARNING)))|M(?:ON_(?:1(?:0|1|2|)|2|3|4|5|6|7|8|9|DECIMAL_POINT|GROUPING|THOUSANDS_SEP)|_(?:1_PI|2_(?:PI|SQRTPI)|E|L(?:N(?:10|2)|OG(?:10E|2E))|PI(?:_(?:2|4)|)|SQRT(?:1_2|2)))|N(?:EGATIVE_SIGN|O(?:EXPR|STR)|_(?:CS_PRECEDES|S(?:EP_BY_SPACE|IGN_POSN)))|P(?:ATH(?:INFO_(?:BASENAME|DIRNAME|EXTENSION)|_SEPARATOR)|M_STR|OSITIVE_SIGN|_(?:CS_PRECEDES|S(?:EP_BY_SPACE|IGN_POSN)))|RADIXCHAR|S(?:EEK_(?:CUR|END|SET)|ORT_(?:ASC|DESC|NUMERIC|REGULAR|STRING)|TR_PAD_(?:BOTH|LEFT|RIGHT))|T(?:HOUS(?:ANDS_SEP|EP)|_FMT(?:_AMPM|))|YES(?:EXPR|STR)|STD(?:IN|OUT|ERR))\\\\b\"},{token:function(e){return n.hasOwnProperty(e)?\"keyword\":o.hasOwnProperty(e)?\"constant.language\":u.hasOwnProperty(e)?\"variable.language\":l.hasOwnProperty(e)?\"invalid.illegal\":t.hasOwnProperty(e)?\"support.function\":e==\"debugger\"?\"invalid.deprecated\":e.match(/^(\\$[a-zA-Z][a-zA-Z0-9_]*|self|parent)$/)?\"variable\":\"identifier\"},regex:\"[a-zA-Z_$][a-zA-Z0-9_$]*\\\\b\"},{token:function(e,t,n){e=e.substr(3);if(e[0]==\"'\"||e[0]=='\"')e=e.slice(1,-1);return n.unshift(this.next,e),\"markup.list\"},regex:/<<<(?:\\w+|'\\w+'|\"\\w+\")$/,next:\"heredoc\"},{token:\"keyword.operator\",regex:\"!|\\\\$|%|&|\\\\*|\\\\-\\\\-|\\\\-|\\\\+\\\\+|\\\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\\\|\\\\||\\\\?\\\\:|\\\\*=|%=|\\\\+=|\\\\-=|&=|\\\\^=|\\\\b(?:in|instanceof|new|delete|typeof|void)\"},{token:\"paren.lparen\",regex:\"[[({]\"},{token:\"paren.rparen\",regex:\"[\\\\])}]\"},{token:\"text\",regex:\"\\\\s+\"}],heredoc:[{token:function(e,t,n){return n[1]+\";\"!=e?\"string\":(n.shift(),n.shift(),\"markup.list\")},regex:\"^\\\\w+;$\",next:\"start\"},{token:\"string\",regex:\".*\"}],comment:[{token:\"comment\",regex:\".*?\\\\*\\\\/\",next:\"start\"},{token:\"comment\",regex:\".+\"}],qqstring:[{token:\"constant.language.escape\",regex:'\\\\\\\\(?:[nrtvef\\\\\\\\\"$]|[0-7]{1,3}|x[0-9A-Fa-f]{1,2})'},{token:\"constant.language.escape\",regex:/\\$[\\w]+(?:\\[[\\w\\]+]|=>\\w+)?/},{token:\"constant.language.escape\",regex:/\\$\\{[^\"\\}]+\\}?/},{token:\"string\",regex:'\"',next:\"start\"},{defaultToken:\"string\"}],qstring:[{token:\"constant.language.escape\",regex:/\\\\['\\\\]/},{token:\"string\",regex:\"'\",next:\"start\"},{defaultToken:\"string\"}]},this.embedRules(s,\"doc-\",[s.getEndRule(\"start\")])};r.inherits(a,o);var f=function(){u.call(this);for(var e in this.$rules)this.$rules[e].unshift({token:\"support.php_tag\",regex:\"<\\\\?(?:php|\\\\=)?\",next:\"php-start\"});this.embedRules(a,\"php-\"),this.$rules[\"php-start\"].unshift({token:\"support.php_tag\",regex:\"\\\\?>\",next:\"start\"})};r.inherits(f,u),t.PhpHighlightRules=f,t.PhpLangHighlightRules=a}),ace.define(\"ace/mode/doc_comment_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"],function(e,t,n){var r=e(\"../lib/oop\"),i=e(\"./text_highlight_rules\").TextHighlightRules,s=function(){this.$rules={start:[{token:\"comment.doc.tag\",regex:\"@[\\\\w\\\\d_]+\"},{token:\"comment.doc.tag\",regex:\"\\\\bTODO\\\\b\"},{defaultToken:\"comment.doc\"}]}};r.inherits(s,i),s.getStartRule=function(e){return{token:\"comment.doc\",regex:\"\\\\/\\\\*(?=\\\\*)\",next:e}},s.getEndRule=function(e){return{token:\"comment.doc\",regex:\"\\\\*\\\\/\",next:e}},t.DocCommentHighlightRules=s}),ace.define(\"ace/mode/html_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/mode/css_highlight_rules\",\"ace/mode/javascript_highlight_rules\",\"ace/mode/xml_util\",\"ace/mode/text_highlight_rules\"],function(e,t,n){var r=e(\"../lib/oop\"),i=e(\"../lib/lang\"),s=e(\"./css_highlight_rules\").CssHighlightRules,o=e(\"./javascript_highlight_rules\").JavaScriptHighlightRules,u=e(\"./xml_util\"),a=e(\"./text_highlight_rules\").TextHighlightRules,f=i.createMap({a:\"anchor\",button:\"form\",form:\"form\",img:\"image\",input:\"form\",label:\"form\",script:\"script\",select:\"form\",textarea:\"form\",style:\"style\",table:\"table\",tbody:\"table\",td:\"table\",tfoot:\"table\",th:\"table\",tr:\"table\"}),l=function(){this.$rules={start:[{token:\"text\",regex:\"<\\\\!\\\\[CDATA\\\\[\",next:\"cdata\"},{token:\"xml-pe\",regex:\"<\\\\?.*?\\\\?>\"},{token:\"comment\",regex:\"<\\\\!--\",next:\"comment\"},{token:\"xml-pe\",regex:\"<\\\\!.*?>\"},{token:\"meta.tag\",regex:\"<(?=script\\\\b)\",next:\"script\"},{token:\"meta.tag\",regex:\"<(?=style\\\\b)\",next:\"style\"},{token:\"meta.tag\",regex:\"<\\\\/?\",next:\"tag\"},{token:\"text\",regex:\"\\\\s+\"},{token:\"constant.character.entity\",regex:\"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\\\.-]+;)\"}],cdata:[{token:\"text\",regex:\"\\\\]\\\\]>\",next:\"start\"}],comment:[{token:\"comment\",regex:\".*?-->\",next:\"start\"},{defaultToken:\"comment\"}]},u.tag(this.$rules,\"tag\",\"start\",f),u.tag(this.$rules,\"style\",\"css-start\",f),u.tag(this.$rules,\"script\",\"js-start\",f),this.embedRules(o,\"js-\",[{token:\"comment\",regex:\"\\\\/\\\\/.*(?=<\\\\/script>)\",next:\"tag\"},{token:\"meta.tag\",regex:\"<\\\\/(?=script)\",next:\"tag\"}]),this.embedRules(s,\"css-\",[{token:\"meta.tag\",regex:\"<\\\\/(?=style)\",next:\"tag\"}])};r.inherits(l,a),t.HtmlHighlightRules=l}),ace.define(\"ace/mode/css_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/mode/text_highlight_rules\"],function(e,t,n){var r=e(\"../lib/oop\"),i=e(\"../lib/lang\"),s=e(\"./text_highlight_rules\").TextHighlightRules,o=t.supportType=\"animation-fill-mode|alignment-adjust|alignment-baseline|animation-delay|animation-direction|animation-duration|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|animation|appearance|azimuth|backface-visibility|background-attachment|background-break|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|background|baseline-shift|binding|bleed|bookmark-label|bookmark-level|bookmark-state|bookmark-target|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|border|bottom|box-align|box-decoration-break|box-direction|box-flex-group|box-flex|box-lines|box-ordinal-group|box-orient|box-pack|box-shadow|box-sizing|break-after|break-before|break-inside|caption-side|clear|clip|color-profile|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|crop|cue-after|cue-before|cue|cursor|direction|display|dominant-baseline|drop-initial-after-adjust|drop-initial-after-align|drop-initial-before-adjust|drop-initial-before-align|drop-initial-size|drop-initial-value|elevation|empty-cells|fit|fit-position|float-offset|float|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|font|grid-columns|grid-rows|hanging-punctuation|height|hyphenate-after|hyphenate-before|hyphenate-character|hyphenate-lines|hyphenate-resource|hyphens|icon|image-orientation|image-rendering|image-resolution|inline-box-align|left|letter-spacing|line-height|line-stacking-ruby|line-stacking-shift|line-stacking-strategy|line-stacking|list-style-image|list-style-position|list-style-type|list-style|margin-bottom|margin-left|margin-right|margin-top|margin|mark-after|mark-before|mark|marks|marquee-direction|marquee-play-count|marquee-speed|marquee-style|max-height|max-width|min-height|min-width|move-to|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|orphans|outline-color|outline-offset|outline-style|outline-width|outline|overflow-style|overflow-x|overflow-y|overflow|padding-bottom|padding-left|padding-right|padding-top|padding|page-break-after|page-break-before|page-break-inside|page-policy|page|pause-after|pause-before|pause|perspective-origin|perspective|phonemes|pitch-range|pitch|play-during|position|presentation-level|punctuation-trim|quotes|rendering-intent|resize|rest-after|rest-before|rest|richness|right|rotation-point|rotation|ruby-align|ruby-overhang|ruby-position|ruby-span|size|speak-header|speak-numeral|speak-punctuation|speak|speech-rate|stress|string-set|table-layout|target-name|target-new|target-position|target|text-align-last|text-align|text-decoration|text-emphasis|text-height|text-indent|text-justify|text-outline|text-shadow|text-transform|text-wrap|top|transform-origin|transform-style|transform|transition-delay|transition-duration|transition-property|transition-timing-function|transition|unicode-bidi|vertical-align|visibility|voice-balance|voice-duration|voice-family|voice-pitch-range|voice-pitch|voice-rate|voice-stress|voice-volume|volume|white-space-collapse|white-space|widows|width|word-break|word-spacing|word-wrap|z-index\",u=t.supportFunction=\"rgb|rgba|url|attr|counter|counters\",a=t.supportConstant=\"absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero\",f=t.supportConstantColor=\"aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow\",l=t.supportConstantFonts=\"arial|century|comic|courier|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace\",c=t.numRe=\"\\\\-?(?:(?:[0-9]+)|(?:[0-9]*\\\\.[0-9]+))\",h=t.pseudoElements=\"(\\\\:+)\\\\b(after|before|first-letter|first-line|moz-selection|selection)\\\\b\",p=t.pseudoClasses=\"(:)\\\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\\\b\",d=function(){var e=this.createKeywordMapper({\"support.function\":u,\"support.constant\":a,\"support.type\":o,\"support.constant.color\":f,\"support.constant.fonts\":l},\"text\",!0),t=[{token:\"comment\",regex:\"\\\\/\\\\*\",next:\"ruleset_comment\"},{token:\"string\",regex:'[\"](?:(?:\\\\\\\\.)|(?:[^\"\\\\\\\\]))*?[\"]'},{token:\"string\",regex:\"['](?:(?:\\\\\\\\.)|(?:[^'\\\\\\\\]))*?[']\"},{token:[\"constant.numeric\",\"keyword\"],regex:\"(\"+c+\")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)\"},{token:\"constant.numeric\",regex:c},{token:\"constant.numeric\",regex:\"#[a-f0-9]{6}\"},{token:\"constant.numeric\",regex:\"#[a-f0-9]{3}\"},{token:[\"punctuation\",\"entity.other.attribute-name.pseudo-element.css\"],regex:h},{token:[\"punctuation\",\"entity.other.attribute-name.pseudo-class.css\"],regex:p},{token:e,regex:\"\\\\-?[a-zA-Z_][a-zA-Z0-9_\\\\-]*\"}],n=i.copyArray(t);n.unshift({token:\"paren.rparen\",regex:\"\\\\}\",next:\"start\"});var r=i.copyArray(t);r.unshift({token:\"paren.rparen\",regex:\"\\\\}\",next:\"media\"});var s=[{token:\"comment\",regex:\".+\"}],d=i.copyArray(s);d.unshift({token:\"comment\",regex:\".*?\\\\*\\\\/\",next:\"start\"});var v=i.copyArray(s);v.unshift({token:\"comment\",regex:\".*?\\\\*\\\\/\",next:\"media\"});var m=i.copyArray(s);m.unshift({token:\"comment\",regex:\".*?\\\\*\\\\/\",next:\"ruleset\"}),this.$rules={start:[{token:\"comment\",regex:\"\\\\/\\\\*\",next:\"comment\"},{token:\"paren.lparen\",regex:\"\\\\{\",next:\"ruleset\"},{token:\"string\",regex:\"@.*?{\",next:\"media\"},{token:\"keyword\",regex:\"#[a-z0-9-_]+\"},{token:\"variable\",regex:\"\\\\.[a-z0-9-_]+\"},{token:\"string\",regex:\":[a-z0-9-_]+\"},{token:\"constant\",regex:\"[a-z0-9-_]+\"}],media:[{token:\"comment\",regex:\"\\\\/\\\\*\",next:\"media_comment\"},{token:\"paren.lparen\",regex:\"\\\\{\",next:\"media_ruleset\"},{token:\"string\",regex:\"\\\\}\",next:\"start\"},{token:\"keyword\",regex:\"#[a-z0-9-_]+\"},{token:\"variable\",regex:\"\\\\.[a-z0-9-_]+\"},{token:\"string\",regex:\":[a-z0-9-_]+\"},{token:\"constant\",regex:\"[a-z0-9-_]+\"}],comment:d,ruleset:n,ruleset_comment:m,media_ruleset:r,media_comment:v}};r.inherits(d,s),t.CssHighlightRules=d}),ace.define(\"ace/mode/javascript_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/doc_comment_highlight_rules\",\"ace/mode/text_highlight_rules\"],function(e,t,n){var r=e(\"../lib/oop\"),i=e(\"./doc_comment_highlight_rules\").DocCommentHighlightRules,s=e(\"./text_highlight_rules\").TextHighlightRules,o=function(){var e=this.createKeywordMapper({\"variable.language\":\"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document\",keyword:\"const|yield|import|get|set|break|case|catch|continue|default|delete|do|else|finally|for|function|if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static\",\"storage.type\":\"const|let|var|function\",\"constant.language\":\"null|Infinity|NaN|undefined\",\"support.function\":\"alert\",\"constant.language.boolean\":\"true|false\"},\"identifier\"),t=\"case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void\",n=\"[a-zA-Z\\\\$_¡-￿][a-zA-Z\\\\d\\\\$_¡-￿]*\\\\b\",r=\"\\\\\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.)\";this.$rules={start:[{token:\"comment\",regex:/\\/\\/.*$/},i.getStartRule(\"doc-start\"),{token:\"comment\",regex:/\\/\\*/,next:\"comment\"},{token:\"string\",regex:\"'(?=.)\",next:\"qstring\"},{token:\"string\",regex:'\"(?=.)',next:\"qqstring\"},{token:\"constant.numeric\",regex:/0[xX][0-9a-fA-F]+\\b/},{token:\"constant.numeric\",regex:/[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b/},{token:[\"storage.type\",\"punctuation.operator\",\"support.function\",\"punctuation.operator\",\"entity.name.function\",\"text\",\"keyword.operator\"],regex:\"(\"+n+\")(\\\\.)(prototype)(\\\\.)(\"+n+\")(\\\\s*)(=)\",next:\"function_arguments\"},{token:[\"storage.type\",\"punctuation.operator\",\"entity.name.function\",\"text\",\"keyword.operator\",\"text\",\"storage.type\",\"text\",\"paren.lparen\"],regex:\"(\"+n+\")(\\\\.)(\"+n+\")(\\\\s*)(=)(\\\\s*)(function)(\\\\s*)(\\\\()\",next:\"function_arguments\"},{token:[\"entity.name.function\",\"text\",\"keyword.operator\",\"text\",\"storage.type\",\"text\",\"paren.lparen\"],regex:\"(\"+n+\")(\\\\s*)(=)(\\\\s*)(function)(\\\\s*)(\\\\()\",next:\"function_arguments\"},{token:[\"storage.type\",\"punctuation.operator\",\"entity.name.function\",\"text\",\"keyword.operator\",\"text\",\"storage.type\",\"text\",\"entity.name.function\",\"text\",\"paren.lparen\"],regex:\"(\"+n+\")(\\\\.)(\"+n+\")(\\\\s*)(=)(\\\\s*)(function)(\\\\s+)(\\\\w+)(\\\\s*)(\\\\()\",next:\"function_arguments\"},{token:[\"storage.type\",\"text\",\"entity.name.function\",\"text\",\"paren.lparen\"],regex:\"(function)(\\\\s+)(\"+n+\")(\\\\s*)(\\\\()\",next:\"function_arguments\"},{token:[\"entity.name.function\",\"text\",\"punctuation.operator\",\"text\",\"storage.type\",\"text\",\"paren.lparen\"],regex:\"(\"+n+\")(\\\\s*)(:)(\\\\s*)(function)(\\\\s*)(\\\\()\",next:\"function_arguments\"},{token:[\"text\",\"text\",\"storage.type\",\"text\",\"paren.lparen\"],regex:\"(:)(\\\\s*)(function)(\\\\s*)(\\\\()\",next:\"function_arguments\"},{token:\"keyword\",regex:\"(?:\"+t+\")\\\\b\",next:\"regex_allowed\"},{token:[\"punctuation.operator\",\"support.function\"],regex:/(\\.)(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:opzzzz|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\\b(?=\\()/},{token:[\"punctuation.operator\",\"support.function.dom\"],regex:/(\\.)(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName)|ById)|Attribute(?:Node)?)|blur)\\b(?=\\()/},{token:[\"punctuation.operator\",\"support.constant\"],regex:/(\\.)(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\\b/},{token:[\"storage.type\",\"punctuation.operator\",\"support.function.firebug\"],regex:/(console)(\\.)(warn|info|log|error|time|timeEnd|assert)\\b/},{token:e,regex:n},{token:\"keyword.operator\",regex:/--|\\+\\+|[!$%&*+\\-~]|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=/,next:\"regex_allowed\"},{token:\"punctuation.operator\",regex:/\\?|\\:|\\,|\\;|\\./,next:\"regex_allowed\"},{token:\"paren.lparen\",regex:/[\\[({]/,next:\"regex_allowed\"},{token:\"paren.rparen\",regex:/[\\])}]/},{token:\"keyword.operator\",regex:/\\/=?/,next:\"regex_allowed\"},{token:\"comment\",regex:/^#!.*$/}],regex_allowed:[i.getStartRule(\"doc-start\"),{token:\"comment\",regex:\"\\\\/\\\\*\",next:\"comment_regex_allowed\"},{token:\"comment\",regex:\"\\\\/\\\\/.*$\"},{token:\"string.regexp\",regex:\"\\\\/\",next:\"regex\"},{token:\"text\",regex:\"\\\\s+\"},{token:\"empty\",regex:\"\",next:\"start\"}],regex:[{token:\"regexp.keyword.operator\",regex:\"\\\\\\\\(?:u[\\\\da-fA-F]{4}|x[\\\\da-fA-F]{2}|.)\"},{token:\"string.regexp\",regex:\"/\\\\w*\",next:\"start\"},{token:\"invalid\",regex:/\\{\\d+,?(?:\\d+)?}[+*]|[+*$^?][+*]|[$^][?]|\\?{3,}/},{token:\"constant.language.escape\",regex:/\\(\\?[:=!]|\\)|{\\d+,?(?:\\d+)?}|{,\\d+}|[+*]\\?|[()$^+*?]/},{token:\"constant.language.delimiter\",regex:/\\|/},{token:\"constant.language.escape\",regex:/\\[\\^?/,next:\"regex_character_class\"},{token:\"empty\",regex:\"$\",next:\"start\"},{defaultToken:\"string.regexp\"}],regex_character_class:[{token:\"regexp.keyword.operator\",regex:\"\\\\\\\\(?:u[\\\\da-fA-F]{4}|x[\\\\da-fA-F]{2}|.)\"},{token:\"constant.language.escape\",regex:\"]\",next:\"regex\"},{token:\"constant.language.escape\",regex:\"-\"},{token:\"empty\",regex:\"$\",next:\"start\"},{defaultToken:\"string.regexp.charachterclass\"}],function_arguments:[{token:\"variable.parameter\",regex:n},{token:\"punctuation.operator\",regex:\"[, ]+\"},{token:\"punctuation.operator\",regex:\"$\"},{token:\"empty\",regex:\"\",next:\"start\"}],comment_regex_allowed:[{token:\"comment\",regex:\"\\\\*\\\\/\",next:\"regex_allowed\"},{defaultToken:\"comment\"}],comment:[{token:\"comment\",regex:\"\\\\*\\\\/\",next:\"start\"},{defaultToken:\"comment\"}],qqstring:[{token:\"constant.language.escape\",regex:r},{token:\"string\",regex:\"\\\\\\\\$\",next:\"qqstring\"},{token:\"string\",regex:'\"|$',next:\"start\"},{defaultToken:\"string\"}],qstring:[{token:\"constant.language.escape\",regex:r},{token:\"string\",regex:\"\\\\\\\\$\",next:\"qstring\"},{token:\"string\",regex:\"'|$\",next:\"start\"},{defaultToken:\"string\"}]},this.embedRules(i,\"doc-\",[i.getEndRule(\"start\")])};r.inherits(o,s),t.JavaScriptHighlightRules=o}),ace.define(\"ace/mode/xml_util\",[\"require\",\"exports\",\"module\"],function(e,t,n){function r(e){return[{token:\"string\",regex:'\"',next:e+\"_qqstring\"},{token:\"string\",regex:\"'\",next:e+\"_qstring\"}]}function i(e,t){return[{token:\"string\",regex:e,next:t},{token:\"constant.language.escape\",regex:\"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\\\.-]+;)\"},{defaultToken:\"string\"}]}t.tag=function(e,t,n,s){e[t]=[{token:\"text\",regex:\"\\\\s+\"},{token:s?function(e){return s[e]?\"meta.tag.tag-name.\"+s[e]:\"meta.tag.tag-name\"}:\"meta.tag.tag-name\",regex:\"[-_a-zA-Z0-9:]+\",next:t+\"_embed_attribute_list\"},{token:\"empty\",regex:\"\",next:t+\"_embed_attribute_list\"}],e[t+\"_qstring\"]=i(\"'\",t+\"_embed_attribute_list\"),e[t+\"_qqstring\"]=i('\"',t+\"_embed_attribute_list\"),e[t+\"_embed_attribute_list\"]=[{token:\"meta.tag.r\",regex:\"/?>\",next:n},{token:\"keyword.operator\",regex:\"=\"},{token:\"entity.other.attribute-name\",regex:\"[-_a-zA-Z0-9:]+\"},{token:\"constant.numeric\",regex:\"[+-]?\\\\d+(?:(?:\\\\.\\\\d*)?(?:[eE][+-]?\\\\d+)?)?\\\\b\"},{token:\"text\",regex:\"\\\\s+\"}].concat(r(t))}}),ace.define(\"ace/mode/matching_brace_outdent\",[\"require\",\"exports\",\"module\",\"ace/range\"],function(e,t,n){var r=e(\"../range\").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\\s+$/.test(e)?/^\\s*\\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\\s*\\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){var t=e.match(/^(\\s+)/);return t?t[1]:\"\"}}).call(i.prototype),t.MatchingBraceOutdent=i}),ace.define(\"ace/mode/behaviour/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/behaviour\",\"ace/token_iterator\",\"ace/lib/lang\"],function(e,t,n){var r=e(\"../../lib/oop\"),i=e(\"../behaviour\").Behaviour,s=e(\"../../token_iterator\").TokenIterator,o=e(\"../../lib/lang\"),u=[\"text\",\"paren.rparen\",\"punctuation.operator\"],a=[\"text\",\"paren.rparen\",\"punctuation.operator\",\"comment\"],f=0,l=-1,c=\"\",h=0,p=-1,d=\"\",v=\"\",m=function(){m.isSaneInsertion=function(e,t){var n=e.getCursorPosition(),r=new s(t,n.row,n.column);if(!this.$matchTokenType(r.getCurrentToken()||\"text\",u)){var i=new s(t,n.row,n.column+1);if(!this.$matchTokenType(i.getCurrentToken()||\"text\",u))return!1}return r.stepForward(),r.getCurrentTokenRow()!==n.row||this.$matchTokenType(r.getCurrentToken()||\"text\",a)},m.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},m.recordAutoInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isAutoInsertedClosing(r,i,c[0])||(f=0),l=r.row,c=n+i.substr(r.column),f++},m.recordMaybeInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isMaybeInsertedClosing(r,i)||(h=0),p=r.row,d=i.substr(0,r.column)+n,v=i.substr(r.column),h++},m.isAutoInsertedClosing=function(e,t,n){return f>0&&e.row===l&&n===c[0]&&t.substr(e.column)===c},m.isMaybeInsertedClosing=function(e,t){return h>0&&e.row===p&&t.substr(e.column)===v&&t.substr(0,e.column)==d},m.popAutoInsertedClosing=function(){c=c.substr(1),f--},m.clearMaybeInsertedClosing=function(){h=0,p=-1},this.add(\"braces\",\"insertion\",function(e,t,n,r,i){var s=n.getCursorPosition(),u=r.doc.getLine(s.row);if(i==\"{\"){var a=n.getSelectionRange(),f=r.doc.getTextRange(a);if(f!==\"\"&&f!==\"{\"&&n.getWrapBehavioursEnabled())return{text:\"{\"+f+\"}\",selection:!1};if(m.isSaneInsertion(n,r))return/[\\]\\}\\)]/.test(u[s.column])?(m.recordAutoInsert(n,r,\"}\"),{text:\"{}\",selection:[1,1]}):(m.recordMaybeInsert(n,r,\"{\"),{text:\"{\",selection:[1,1]})}else if(i==\"}\"){var l=u.substring(s.column,s.column+1);if(l==\"}\"){var c=r.$findOpeningBracket(\"}\",{column:s.column+1,row:s.row});if(c!==null&&m.isAutoInsertedClosing(s,u,i))return m.popAutoInsertedClosing(),{text:\"\",selection:[1,1]}}}else if(i==\"\\n\"||i==\"\\r\\n\"){var p=\"\";m.isMaybeInsertedClosing(s,u)&&(p=o.stringRepeat(\"}\",h),m.clearMaybeInsertedClosing());var l=u.substring(s.column,s.column+1);if(l==\"}\"||p!==\"\"){var d=r.findMatchingBracket({row:s.row,column:s.column},\"}\");if(!d)return null;var v=this.getNextLineIndent(e,u.substring(0,s.column),r.getTabString()),g=this.$getIndent(u);return{text:\"\\n\"+v+\"\\n\"+g+p,selection:[1,v.length,1,v.length]}}}}),this.add(\"braces\",\"deletion\",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s==\"{\"){var o=r.doc.getLine(i.start.row),u=o.substring(i.end.column,i.end.column+1);if(u==\"}\")return i.end.column++,i;h--}}),this.add(\"parens\",\"insertion\",function(e,t,n,r,i){if(i==\"(\"){var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==\"\"&&n.getWrapBehavioursEnabled())return{text:\"(\"+o+\")\",selection:!1};if(m.isSaneInsertion(n,r))return m.recordAutoInsert(n,r,\")\"),{text:\"()\",selection:[1,1]}}else if(i==\")\"){var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f==\")\"){var l=r.$findOpeningBracket(\")\",{column:u.column+1,row:u.row});if(l!==null&&m.isAutoInsertedClosing(u,a,i))return m.popAutoInsertedClosing(),{text:\"\",selection:[1,1]}}}}),this.add(\"parens\",\"deletion\",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s==\"(\"){var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==\")\")return i.end.column++,i}}),this.add(\"brackets\",\"insertion\",function(e,t,n,r,i){if(i==\"[\"){var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==\"\"&&n.getWrapBehavioursEnabled())return{text:\"[\"+o+\"]\",selection:!1};if(m.isSaneInsertion(n,r))return m.recordAutoInsert(n,r,\"]\"),{text:\"[]\",selection:[1,1]}}else if(i==\"]\"){var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f==\"]\"){var l=r.$findOpeningBracket(\"]\",{column:u.column+1,row:u.row});if(l!==null&&m.isAutoInsertedClosing(u,a,i))return m.popAutoInsertedClosing(),{text:\"\",selection:[1,1]}}}}),this.add(\"brackets\",\"deletion\",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s==\"[\"){var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==\"]\")return i.end.column++,i}}),this.add(\"string_dquotes\",\"insertion\",function(e,t,n,r,i){if(i=='\"'||i==\"'\"){var s=i,o=n.getSelectionRange(),u=r.doc.getTextRange(o);if(u!==\"\"&&u!==\"'\"&&u!='\"'&&n.getWrapBehavioursEnabled())return{text:s+u+s,selection:!1};var a=n.getCursorPosition(),f=r.doc.getLine(a.row),l=f.substring(a.column-1,a.column);if(l==\"\\\\\")return null;var c=r.getTokens(o.start.row),h=0,p,d=-1;for(var v=0;v<c.length;v++){p=c[v],p.type==\"string\"?d=-1:d<0&&(d=p.value.indexOf(s));if(p.value.length+h>o.start.column)break;h+=c[v].value.length}if(!p||d<0&&p.type!==\"comment\"&&(p.type!==\"string\"||o.start.column!==p.value.length+h-1&&p.value.lastIndexOf(s)===p.value.length-1)){if(!m.isSaneInsertion(n,r))return;return{text:s+s,selection:[1,1]}}if(p&&p.type===\"string\"){var g=f.substring(a.column,a.column+1);if(g==s)return{text:\"\",selection:[1,1]}}}}),this.add(\"string_dquotes\",\"deletion\",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='\"'||s==\"'\")){var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}})};r.inherits(m,i),t.CstyleBehaviour=m}),ace.define(\"ace/mode/folding/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/range\",\"ace/mode/folding/fold_mode\"],function(e,t,n){var r=e(\"../../lib/oop\"),i=e(\"../../range\").Range,s=e(\"./fold_mode\").FoldMode,o=t.FoldMode=function(){};r.inherits(o,s),function(){this.foldingStartMarker=/(\\{|\\[)[^\\}\\]]*$|^\\s*(\\/\\*)/,this.foldingStopMarker=/^[^\\[\\{]*(\\}|\\])|^[\\s\\*]*(\\*\\/)/,this.getFoldWidgetRange=function(e,t,n){var r=e.getLine(n),i=r.match(this.foldingStartMarker);if(i){var s=i.index;return i[1]?this.openingBracketBlock(e,i[1],n,s):e.getCommentFoldRange(n,s+i[0].length,1)}if(t!==\"markbeginend\")return;var i=r.match(this.foldingStopMarker);if(i){var s=i.index+i[0].length;return i[1]?this.closingBracketBlock(e,i[1],n,s):e.getCommentFoldRange(n,s,-1)}}}.call(o.prototype)})"
  },
  {
    "path": "public/js/vendor/ace/mode-xml.js",
    "content": "ace.define(\"ace/mode/xml\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/tokenizer\",\"ace/mode/xml_highlight_rules\",\"ace/mode/behaviour/xml\",\"ace/mode/folding/xml\"],function(e,t,n){var r=e(\"../lib/oop\"),i=e(\"./text\").Mode,s=e(\"../tokenizer\").Tokenizer,o=e(\"./xml_highlight_rules\").XmlHighlightRules,u=e(\"./behaviour/xml\").XmlBehaviour,a=e(\"./folding/xml\").FoldMode,f=function(){this.$tokenizer=new s((new o).getRules()),this.$behaviour=new u,this.foldingRules=new a};r.inherits(f,i),function(){this.getNextLineIndent=function(e,t,n){return this.$getIndent(t)}}.call(f.prototype),t.Mode=f}),ace.define(\"ace/mode/xml_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/xml_util\",\"ace/mode/text_highlight_rules\"],function(e,t,n){var r=e(\"../lib/oop\"),i=e(\"./xml_util\"),s=e(\"./text_highlight_rules\").TextHighlightRules,o=function(){this.$rules={start:[{token:\"text\",regex:\"<\\\\!\\\\[CDATA\\\\[\",next:\"cdata\"},{token:\"xml-pe\",regex:\"<\\\\?.*?\\\\?>\"},{token:\"comment\",regex:\"<\\\\!--\",next:\"comment\"},{token:\"xml-pe\",regex:\"<\\\\!.*?>\"},{token:\"meta.tag\",regex:\"<\\\\/?\",next:\"tag\"},{token:\"text\",regex:\"\\\\s+\"},{token:\"constant.character.entity\",regex:\"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\\\.-]+;)\"}],cdata:[{token:\"text\",regex:\"\\\\]\\\\]>\",next:\"start\"},{token:\"text\",regex:\"\\\\s+\"},{token:\"text\",regex:\"(?:[^\\\\]]|\\\\](?!\\\\]>))+\"}],comment:[{token:\"comment\",regex:\".*?-->\",next:\"start\"},{token:\"comment\",regex:\".+\"}]},i.tag(this.$rules,\"tag\",\"start\")};r.inherits(o,s),t.XmlHighlightRules=o}),ace.define(\"ace/mode/xml_util\",[\"require\",\"exports\",\"module\"],function(e,t,n){function r(e){return[{token:\"string\",regex:'\"',next:e+\"_qqstring\"},{token:\"string\",regex:\"'\",next:e+\"_qstring\"}]}function i(e,t){return[{token:\"string\",regex:e,next:t},{token:\"constant.language.escape\",regex:\"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\\\.-]+;)\"},{defaultToken:\"string\"}]}t.tag=function(e,t,n,s){e[t]=[{token:\"text\",regex:\"\\\\s+\"},{token:s?function(e){return s[e]?\"meta.tag.tag-name.\"+s[e]:\"meta.tag.tag-name\"}:\"meta.tag.tag-name\",regex:\"[-_a-zA-Z0-9:]+\",next:t+\"_embed_attribute_list\"},{token:\"empty\",regex:\"\",next:t+\"_embed_attribute_list\"}],e[t+\"_qstring\"]=i(\"'\",t+\"_embed_attribute_list\"),e[t+\"_qqstring\"]=i('\"',t+\"_embed_attribute_list\"),e[t+\"_embed_attribute_list\"]=[{token:\"meta.tag.r\",regex:\"/?>\",next:n},{token:\"keyword.operator\",regex:\"=\"},{token:\"entity.other.attribute-name\",regex:\"[-_a-zA-Z0-9:]+\"},{token:\"constant.numeric\",regex:\"[+-]?\\\\d+(?:(?:\\\\.\\\\d*)?(?:[eE][+-]?\\\\d+)?)?\\\\b\"},{token:\"text\",regex:\"\\\\s+\"}].concat(r(t))}}),ace.define(\"ace/mode/behaviour/xml\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/behaviour\",\"ace/mode/behaviour/cstyle\",\"ace/token_iterator\"],function(e,t,n){function u(e,t){var n=!0,r=e.type.split(\".\"),i=t.split(\".\");return i.forEach(function(e){if(r.indexOf(e)==-1)return n=!1,!1}),n}var r=e(\"../../lib/oop\"),i=e(\"../behaviour\").Behaviour,s=e(\"./cstyle\").CstyleBehaviour,o=e(\"../../token_iterator\").TokenIterator,a=function(){this.inherit(s,[\"string_dquotes\"]),this.add(\"autoclosing\",\"insertion\",function(e,t,n,r,i){if(i==\">\"){var s=n.getCursorPosition(),a=new o(r,s.row,s.column),f=a.getCurrentToken(),l=!1;if(!f||!u(f,\"meta.tag\")&&(!u(f,\"text\")||!f.value.match(\"/\"))){do f=a.stepBackward();while(f&&(u(f,\"string\")||u(f,\"keyword.operator\")||u(f,\"entity.attribute-name\")||u(f,\"text\")))}else l=!0;if(!f||!u(f,\"meta.tag-name\")||a.stepBackward().value.match(\"/\"))return;var c=f.value;if(l)var c=c.substring(0,s.column-f.start);return{text:\"></\"+c+\">\",selection:[1,1]}}}),this.add(\"autoindent\",\"insertion\",function(e,t,n,r,i){if(i==\"\\n\"){var s=n.getCursorPosition(),o=r.doc.getLine(s.row),u=o.substring(s.column,s.column+2);if(u==\"</\"){var a=this.$getIndent(r.doc.getLine(s.row))+r.getTabString(),f=this.$getIndent(r.doc.getLine(s.row));return{text:\"\\n\"+a+\"\\n\"+f,selection:[1,a.length,1,a.length]}}}})};r.inherits(a,i),t.XmlBehaviour=a}),ace.define(\"ace/mode/behaviour/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/behaviour\",\"ace/token_iterator\",\"ace/lib/lang\"],function(e,t,n){var r=e(\"../../lib/oop\"),i=e(\"../behaviour\").Behaviour,s=e(\"../../token_iterator\").TokenIterator,o=e(\"../../lib/lang\"),u=[\"text\",\"paren.rparen\",\"punctuation.operator\"],a=[\"text\",\"paren.rparen\",\"punctuation.operator\",\"comment\"],f=0,l=-1,c=\"\",h=0,p=-1,d=\"\",v=\"\",m=function(){m.isSaneInsertion=function(e,t){var n=e.getCursorPosition(),r=new s(t,n.row,n.column);if(!this.$matchTokenType(r.getCurrentToken()||\"text\",u)){var i=new s(t,n.row,n.column+1);if(!this.$matchTokenType(i.getCurrentToken()||\"text\",u))return!1}return r.stepForward(),r.getCurrentTokenRow()!==n.row||this.$matchTokenType(r.getCurrentToken()||\"text\",a)},m.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},m.recordAutoInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isAutoInsertedClosing(r,i,c[0])||(f=0),l=r.row,c=n+i.substr(r.column),f++},m.recordMaybeInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isMaybeInsertedClosing(r,i)||(h=0),p=r.row,d=i.substr(0,r.column)+n,v=i.substr(r.column),h++},m.isAutoInsertedClosing=function(e,t,n){return f>0&&e.row===l&&n===c[0]&&t.substr(e.column)===c},m.isMaybeInsertedClosing=function(e,t){return h>0&&e.row===p&&t.substr(e.column)===v&&t.substr(0,e.column)==d},m.popAutoInsertedClosing=function(){c=c.substr(1),f--},m.clearMaybeInsertedClosing=function(){h=0,p=-1},this.add(\"braces\",\"insertion\",function(e,t,n,r,i){var s=n.getCursorPosition(),u=r.doc.getLine(s.row);if(i==\"{\"){var a=n.getSelectionRange(),f=r.doc.getTextRange(a);if(f!==\"\"&&f!==\"{\"&&n.getWrapBehavioursEnabled())return{text:\"{\"+f+\"}\",selection:!1};if(m.isSaneInsertion(n,r))return/[\\]\\}\\)]/.test(u[s.column])?(m.recordAutoInsert(n,r,\"}\"),{text:\"{}\",selection:[1,1]}):(m.recordMaybeInsert(n,r,\"{\"),{text:\"{\",selection:[1,1]})}else if(i==\"}\"){var l=u.substring(s.column,s.column+1);if(l==\"}\"){var c=r.$findOpeningBracket(\"}\",{column:s.column+1,row:s.row});if(c!==null&&m.isAutoInsertedClosing(s,u,i))return m.popAutoInsertedClosing(),{text:\"\",selection:[1,1]}}}else if(i==\"\\n\"||i==\"\\r\\n\"){var p=\"\";m.isMaybeInsertedClosing(s,u)&&(p=o.stringRepeat(\"}\",h),m.clearMaybeInsertedClosing());var l=u.substring(s.column,s.column+1);if(l==\"}\"||p!==\"\"){var d=r.findMatchingBracket({row:s.row,column:s.column},\"}\");if(!d)return null;var v=this.getNextLineIndent(e,u.substring(0,s.column),r.getTabString()),g=this.$getIndent(u);return{text:\"\\n\"+v+\"\\n\"+g+p,selection:[1,v.length,1,v.length]}}}}),this.add(\"braces\",\"deletion\",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s==\"{\"){var o=r.doc.getLine(i.start.row),u=o.substring(i.end.column,i.end.column+1);if(u==\"}\")return i.end.column++,i;h--}}),this.add(\"parens\",\"insertion\",function(e,t,n,r,i){if(i==\"(\"){var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==\"\"&&n.getWrapBehavioursEnabled())return{text:\"(\"+o+\")\",selection:!1};if(m.isSaneInsertion(n,r))return m.recordAutoInsert(n,r,\")\"),{text:\"()\",selection:[1,1]}}else if(i==\")\"){var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f==\")\"){var l=r.$findOpeningBracket(\")\",{column:u.column+1,row:u.row});if(l!==null&&m.isAutoInsertedClosing(u,a,i))return m.popAutoInsertedClosing(),{text:\"\",selection:[1,1]}}}}),this.add(\"parens\",\"deletion\",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s==\"(\"){var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==\")\")return i.end.column++,i}}),this.add(\"brackets\",\"insertion\",function(e,t,n,r,i){if(i==\"[\"){var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==\"\"&&n.getWrapBehavioursEnabled())return{text:\"[\"+o+\"]\",selection:!1};if(m.isSaneInsertion(n,r))return m.recordAutoInsert(n,r,\"]\"),{text:\"[]\",selection:[1,1]}}else if(i==\"]\"){var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f==\"]\"){var l=r.$findOpeningBracket(\"]\",{column:u.column+1,row:u.row});if(l!==null&&m.isAutoInsertedClosing(u,a,i))return m.popAutoInsertedClosing(),{text:\"\",selection:[1,1]}}}}),this.add(\"brackets\",\"deletion\",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s==\"[\"){var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==\"]\")return i.end.column++,i}}),this.add(\"string_dquotes\",\"insertion\",function(e,t,n,r,i){if(i=='\"'||i==\"'\"){var s=i,o=n.getSelectionRange(),u=r.doc.getTextRange(o);if(u!==\"\"&&u!==\"'\"&&u!='\"'&&n.getWrapBehavioursEnabled())return{text:s+u+s,selection:!1};var a=n.getCursorPosition(),f=r.doc.getLine(a.row),l=f.substring(a.column-1,a.column);if(l==\"\\\\\")return null;var c=r.getTokens(o.start.row),h=0,p,d=-1;for(var v=0;v<c.length;v++){p=c[v],p.type==\"string\"?d=-1:d<0&&(d=p.value.indexOf(s));if(p.value.length+h>o.start.column)break;h+=c[v].value.length}if(!p||d<0&&p.type!==\"comment\"&&(p.type!==\"string\"||o.start.column!==p.value.length+h-1&&p.value.lastIndexOf(s)===p.value.length-1)){if(!m.isSaneInsertion(n,r))return;return{text:s+s,selection:[1,1]}}if(p&&p.type===\"string\"){var g=f.substring(a.column,a.column+1);if(g==s)return{text:\"\",selection:[1,1]}}}}),this.add(\"string_dquotes\",\"deletion\",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='\"'||s==\"'\")){var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}})};r.inherits(m,i),t.CstyleBehaviour=m}),ace.define(\"ace/mode/folding/xml\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/range\",\"ace/mode/folding/fold_mode\",\"ace/token_iterator\"],function(e,t,n){var r=e(\"../../lib/oop\"),i=e(\"../../lib/lang\"),s=e(\"../../range\").Range,o=e(\"./fold_mode\").FoldMode,u=e(\"../../token_iterator\").TokenIterator,a=t.FoldMode=function(e){o.call(this),this.voidElements=e||{}};r.inherits(a,o),function(){this.getFoldWidget=function(e,t,n){var r=this._getFirstTagInLine(e,n);return r.closing?t==\"markbeginend\"?\"end\":\"\":!r.tagName||this.voidElements[r.tagName.toLowerCase()]?\"\":r.selfClosing?\"\":r.value.indexOf(\"/\"+r.tagName)!==-1?\"\":\"start\"},this._getFirstTagInLine=function(e,t){var n=e.getTokens(t),r=\"\";for(var s=0;s<n.length;s++){var o=n[s];o.type.indexOf(\"meta.tag\")===0?r+=o.value:r+=i.stringRepeat(\" \",o.value.length)}return this._parseTag(r)},this.tagRe=/^(\\s*)(<?(\\/?)([-_a-zA-Z0-9:!]*)\\s*(\\/?)>?)/,this._parseTag=function(e){var t=this.tagRe.exec(e),n=this.tagRe.lastIndex||0;return this.tagRe.lastIndex=0,{value:e,match:t?t[2]:\"\",closing:t?!!t[3]:!1,selfClosing:t?!!t[5]||t[2]==\"/>\":!1,tagName:t?t[4]:\"\",column:t[1]?n+t[1].length:n}},this._readTagForward=function(e){var t=e.getCurrentToken();if(!t)return null;var n=\"\",r;do if(t.type.indexOf(\"meta.tag\")===0){if(!r)var r={row:e.getCurrentTokenRow(),column:e.getCurrentTokenColumn()};n+=t.value;if(n.indexOf(\">\")!==-1){var i=this._parseTag(n);return i.start=r,i.end={row:e.getCurrentTokenRow(),column:e.getCurrentTokenColumn()+t.value.length},e.stepForward(),i}}while(t=e.stepForward());return null},this._readTagBackward=function(e){var t=e.getCurrentToken();if(!t)return null;var n=\"\",r;do if(t.type.indexOf(\"meta.tag\")===0){r||(r={row:e.getCurrentTokenRow(),column:e.getCurrentTokenColumn()+t.value.length}),n=t.value+n;if(n.indexOf(\"<\")!==-1){var i=this._parseTag(n);return i.end=r,i.start={row:e.getCurrentTokenRow(),column:e.getCurrentTokenColumn()},e.stepBackward(),i}}while(t=e.stepBackward());return null},this._pop=function(e,t){while(e.length){var n=e[e.length-1];if(!t||n.tagName==t.tagName)return e.pop();if(this.voidElements[t.tagName])return;if(this.voidElements[n.tagName]){e.pop();continue}return null}},this.getFoldWidgetRange=function(e,t,n){var r=this._getFirstTagInLine(e,n);if(!r.match)return null;var i=r.closing||r.selfClosing,o=[],a;if(!i){var f=new u(e,n,r.column),l={row:n,column:r.column+r.tagName.length+2};while(a=this._readTagForward(f)){if(a.selfClosing){if(!o.length)return a.start.column+=a.tagName.length+2,a.end.column-=2,s.fromPoints(a.start,a.end);continue}if(a.closing){this._pop(o,a);if(o.length==0)return s.fromPoints(l,a.start)}else o.push(a)}}else{var f=new u(e,n,r.column+r.match.length),c={row:n,column:r.column};while(a=this._readTagBackward(f)){if(a.selfClosing){if(!o.length)return a.start.column+=a.tagName.length+2,a.end.column-=2,s.fromPoints(a.start,a.end);continue}if(!a.closing){this._pop(o,a);if(o.length==0)return a.start.column+=a.tagName.length+2,s.fromPoints(a.start,c)}else o.push(a)}}}}.call(a.prototype)})"
  },
  {
    "path": "public/js/vendor/ace/theme-chaos.js",
    "content": "ace.define(\"ace/theme/chaos\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\"],function(e,t,n){t.isDark=!0,t.cssClass=\"ace-chaos\",t.cssText=\".ace-chaos .ace_gutter {background: #141414;color: #595959;border-right: 1px solid #282828;}.ace-chaos .ace_gutter-cell.ace_warning {background-image: none;background: #FC0;border-left: none;padding-left: 0;color: #000;}.ace-chaos .ace_gutter-cell.ace_error {background-position: -6px center;background-image: none;background: #F10;border-left: none;padding-left: 0;color: #000;}.ace-chaos .ace_print-margin {border-left: 1px solid #555;right: 0;background: #1D1D1D;}.ace-chaos .ace_scroller {background-color: #161616;}.ace-chaos .ace_text-layer {cursor: text;color: #E6E1DC;}.ace-chaos .ace_cursor {border-left: 2px solid #FFFFFF;}.ace-chaos .ace_cursor.ace_overwrite {border-left: 0px;border-bottom: 1px solid #FFFFFF;}.ace-chaos .ace_marker-layer .ace_selection {background: #494836;}.ace-chaos .ace_marker-layer .ace_step {background: rgb(198, 219, 174);}.ace-chaos .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid #FCE94F;}.ace-chaos .ace_marker-layer .ace_active-line {background: #333;}.ace-chaos .ace_gutter-active-line {background-color: #222;}.ace-chaos .ace_invisible {color: #404040;}.ace-chaos .ace_keyword {color:#00698F;}.ace-chaos .ace_keyword.ace_operator {color:#FF308F;}.ace-chaos .ace_constant {color:#1EDAFB;}.ace-chaos .ace_constant.ace_language {color:#FDC251;}.ace-chaos .ace_constant.ace_library {color:#8DFF0A;}.ace-chaos .ace_constant.ace_numeric {color:#58C554;}.ace-chaos .ace_invalid {color:#FFFFFF;background-color:#990000;}.ace-chaos .ace_invalid.ace_deprecated {color:#FFFFFF;background-color:#990000;}.ace-chaos .ace_support {color: #999;}.ace-chaos .ace_support.ace_function {color:#00AEEF;}.ace-chaos .ace_function {color:#00AEEF;}.ace-chaos .ace_string {color:#58C554;}.ace-chaos .ace_comment {color:#555;font-style:italic;padding-bottom: 0px;}.ace-chaos .ace_variable {color:#997744;}.ace-chaos .ace_meta.ace_tag {color:#BE53E6;}.ace-chaos .ace_entity.ace_other.ace_attribute-name {color:#FFFF89;}.ace-chaos .ace_markup.ace_underline {text-decoration: underline;}.ace-chaos .ace_fold-widget {text-align: center;}.ace-chaos .ace_fold-widget:hover {color: #777;}.ace-chaos .ace_fold-widget.ace_start,.ace-chaos .ace_fold-widget.ace_end,.ace-chaos .ace_fold-widget.ace_closed{background: none;border: none;box-shadow: none;}.ace-chaos .ace_fold-widget.ace_start:after {content: '▾'}.ace-chaos .ace_fold-widget.ace_end:after {content: '▴'}.ace-chaos .ace_fold-widget.ace_closed:after {content: '‣'}\";var r=e(\"../lib/dom\");r.importCssString(t.cssText,t.cssClass)})"
  },
  {
    "path": "public/js/vendor/ace/theme-chrome.js",
    "content": "ace.define(\"ace/theme/chrome\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\"],function(e,t,n){t.isDark=!1,t.cssClass=\"ace-chrome\",t.cssText='.ace-chrome .ace_gutter {background: #ebebeb;color: #333;overflow : hidden;}.ace-chrome .ace_print-margin {width: 1px;background: #e8e8e8;}.ace-chrome .ace_scroller {background-color: #FFFFFF;}.ace-chrome .ace_cursor {border-left: 2px solid black;}.ace-chrome .ace_overwrite-cursors .ace_cursor {border-left: 0px;border-bottom: 1px solid black;}.ace-chrome .ace_invisible {color: rgb(191, 191, 191);}.ace-chrome .ace_constant.ace_buildin {color: rgb(88, 72, 246);}.ace-chrome .ace_constant.ace_language {color: rgb(88, 92, 246);}.ace-chrome .ace_constant.ace_library {color: rgb(6, 150, 14);}.ace-chrome .ace_invalid {background-color: rgb(153, 0, 0);color: white;}.ace-chrome .ace_fold {}.ace-chrome .ace_support.ace_function {color: rgb(60, 76, 114);}.ace-chrome .ace_support.ace_constant {color: rgb(6, 150, 14);}.ace-chrome .ace_support.ace_type,.ace-chrome .ace_support.ace_class.ace-chrome .ace_support.ace_other {color: rgb(109, 121, 222);}.ace-chrome .ace_variable.ace_parameter {font-style:italic;color:#FD971F;}.ace-chrome .ace_keyword.ace_operator {color: rgb(104, 118, 135);}.ace-chrome .ace_comment {color: #236e24;}.ace-chrome .ace_comment.ace_doc {color: #236e24;}.ace-chrome .ace_comment.ace_doc.ace_tag {color: #236e24;}.ace-chrome .ace_constant.ace_numeric {color: rgb(0, 0, 205);}.ace-chrome .ace_variable {color: rgb(49, 132, 149);}.ace-chrome .ace_xml-pe {color: rgb(104, 104, 91);}.ace-chrome .ace_entity.ace_name.ace_function {color: #0000A2;}.ace-chrome .ace_markup.ace_heading {color: rgb(12, 7, 255);}.ace-chrome .ace_markup.ace_list {color:rgb(185, 6, 144);}.ace-chrome .ace_marker-layer .ace_selection {background: rgb(181, 213, 255);}.ace-chrome .ace_marker-layer .ace_step {background: rgb(252, 255, 0);}.ace-chrome .ace_marker-layer .ace_stack {background: rgb(164, 229, 101);}.ace-chrome .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid rgb(192, 192, 192);}.ace-chrome .ace_marker-layer .ace_active-line {background: rgba(0, 0, 0, 0.07);}.ace-chrome .ace_gutter-active-line {background-color : #dcdcdc;}.ace-chrome .ace_marker-layer .ace_selected-word {background: rgb(250, 250, 255);border: 1px solid rgb(200, 200, 250);}.ace-chrome .ace_storage,.ace-chrome .ace_keyword,.ace-chrome .ace_meta.ace_tag {color: rgb(147, 15, 128);}.ace-chrome .ace_string.ace_regex {color: rgb(255, 0, 0)}.ace-chrome .ace_string {color: #1A1AA6;}.ace-chrome .ace_entity.ace_other.ace_attribute-name {color: #994409;}.ace-chrome .ace_indent-guide {background: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==\") right repeat-y;}';var r=e(\"../lib/dom\");r.importCssString(t.cssText,t.cssClass)})"
  },
  {
    "path": "public/js/vendor/ace/theme-clouds.js",
    "content": "ace.define(\"ace/theme/clouds\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\"],function(e,t,n){t.isDark=!1,t.cssClass=\"ace-clouds\",t.cssText='.ace-clouds .ace_gutter {background: #ebebeb;color: #333}.ace-clouds .ace_print-margin {width: 1px;background: #e8e8e8}.ace-clouds .ace_scroller {background-color: #FFFFFF}.ace-clouds .ace_text-layer {color: #000000}.ace-clouds .ace_cursor {border-left: 2px solid #000000}.ace-clouds .ace_overwrite-cursors .ace_cursor {border-left: 0px;border-bottom: 1px solid #000000}.ace-clouds .ace_marker-layer .ace_selection {background: #BDD5FC}.ace-clouds.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px #FFFFFF;border-radius: 2px}.ace-clouds .ace_marker-layer .ace_step {background: rgb(255, 255, 0)}.ace-clouds .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid #BFBFBF}.ace-clouds .ace_marker-layer .ace_active-line {background: #FFFBD1}.ace-clouds .ace_gutter-active-line {background-color : #dcdcdc}.ace-clouds .ace_marker-layer .ace_selected-word {border: 1px solid #BDD5FC}.ace-clouds .ace_invisible {color: #BFBFBF}.ace-clouds .ace_keyword,.ace-clouds .ace_meta,.ace-clouds .ace_support.ace_constant.ace_property-value {color: #AF956F}.ace-clouds .ace_keyword.ace_operator {color: #484848}.ace-clouds .ace_keyword.ace_other.ace_unit {color: #96DC5F}.ace-clouds .ace_constant.ace_language {color: #39946A}.ace-clouds .ace_constant.ace_numeric {color: #46A609}.ace-clouds .ace_constant.ace_character.ace_entity {color: #BF78CC}.ace-clouds .ace_invalid {background-color: #FF002A}.ace-clouds .ace_fold {background-color: #AF956F;border-color: #000000}.ace-clouds .ace_storage,.ace-clouds .ace_support.ace_class,.ace-clouds .ace_support.ace_function,.ace-clouds .ace_support.ace_other,.ace-clouds .ace_support.ace_type {color: #C52727}.ace-clouds .ace_string {color: #5D90CD}.ace-clouds .ace_comment {color: #BCC8BA}.ace-clouds .ace_entity.ace_name.ace_tag,.ace-clouds .ace_entity.ace_other.ace_attribute-name {color: #606060}.ace-clouds .ace_markup.ace_underline {text-decoration: underline}.ace-clouds .ace_indent-guide {background: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==\") right repeat-y}';var r=e(\"../lib/dom\");r.importCssString(t.cssText,t.cssClass)})"
  },
  {
    "path": "public/js/vendor/ace/theme-clouds_midnight.js",
    "content": "ace.define(\"ace/theme/clouds_midnight\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\"],function(e,t,n){t.isDark=!0,t.cssClass=\"ace-clouds-midnight\",t.cssText=\".ace-clouds-midnight .ace_gutter {background: #232323;color: #929292}.ace-clouds-midnight .ace_print-margin {width: 1px;background: #232323}.ace-clouds-midnight .ace_scroller {background-color: #191919}.ace-clouds-midnight .ace_text-layer {color: #929292}.ace-clouds-midnight .ace_cursor {border-left: 2px solid #7DA5DC}.ace-clouds-midnight .ace_overwrite-cursors .ace_cursor {border-left: 0px;border-bottom: 1px solid #7DA5DC}.ace-clouds-midnight .ace_marker-layer .ace_selection {background: #000000}.ace-clouds-midnight.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px #191919;border-radius: 2px}.ace-clouds-midnight .ace_marker-layer .ace_step {background: rgb(102, 82, 0)}.ace-clouds-midnight .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid #BFBFBF}.ace-clouds-midnight .ace_marker-layer .ace_active-line {background: rgba(215, 215, 215, 0.031)}.ace-clouds-midnight .ace_gutter-active-line {background-color: rgba(215, 215, 215, 0.031)}.ace-clouds-midnight .ace_marker-layer .ace_selected-word {border: 1px solid #000000}.ace-clouds-midnight .ace_invisible {color: #BFBFBF}.ace-clouds-midnight .ace_keyword,.ace-clouds-midnight .ace_meta,.ace-clouds-midnight .ace_support.ace_constant.ace_property-value {color: #927C5D}.ace-clouds-midnight .ace_keyword.ace_operator {color: #4B4B4B}.ace-clouds-midnight .ace_keyword.ace_other.ace_unit {color: #366F1A}.ace-clouds-midnight .ace_constant.ace_language {color: #39946A}.ace-clouds-midnight .ace_constant.ace_numeric {color: #46A609}.ace-clouds-midnight .ace_constant.ace_character.ace_entity {color: #A165AC}.ace-clouds-midnight .ace_invalid {color: #FFFFFF;background-color: #E92E2E}.ace-clouds-midnight .ace_fold {background-color: #927C5D;border-color: #929292}.ace-clouds-midnight .ace_storage,.ace-clouds-midnight .ace_support.ace_class,.ace-clouds-midnight .ace_support.ace_function,.ace-clouds-midnight .ace_support.ace_other,.ace-clouds-midnight .ace_support.ace_type {color: #E92E2E}.ace-clouds-midnight .ace_string {color: #5D90CD}.ace-clouds-midnight .ace_comment {color: #3C403B}.ace-clouds-midnight .ace_entity.ace_name.ace_tag,.ace-clouds-midnight .ace_entity.ace_other.ace_attribute-name {color: #606060}.ace-clouds-midnight .ace_markup.ace_underline {text-decoration: underline}.ace-clouds-midnight .ace_indent-guide {background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWOQlJT8z1BeXv4fAA2KA6+h9Z+2AAAAAElFTkSuQmCC) right repeat-y}\";var r=e(\"../lib/dom\");r.importCssString(t.cssText,t.cssClass)})"
  },
  {
    "path": "public/js/vendor/ace/theme-cobalt.js",
    "content": "ace.define(\"ace/theme/cobalt\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\"],function(e,t,n){t.isDark=!0,t.cssClass=\"ace-cobalt\",t.cssText=\".ace-cobalt .ace_gutter {background: #011e3a;color: #fff}.ace-cobalt .ace_print-margin {width: 1px;background: #011e3a}.ace-cobalt .ace_scroller {background-color: #002240}.ace-cobalt .ace_text-layer {color: #FFFFFF}.ace-cobalt .ace_cursor {border-left: 2px solid #FFFFFF}.ace-cobalt .ace_overwrite-cursors .ace_cursor {border-left: 0px;border-bottom: 1px solid #FFFFFF}.ace-cobalt .ace_marker-layer .ace_selection {background: rgba(179, 101, 57, 0.75)}.ace-cobalt.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px #002240;border-radius: 2px}.ace-cobalt .ace_marker-layer .ace_step {background: rgb(127, 111, 19)}.ace-cobalt .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid rgba(255, 255, 255, 0.15)}.ace-cobalt .ace_marker-layer .ace_active-line {background: rgba(0, 0, 0, 0.35)}.ace-cobalt .ace_gutter-active-line {background-color: rgba(0, 0, 0, 0.35)}.ace-cobalt .ace_marker-layer .ace_selected-word {border: 1px solid rgba(179, 101, 57, 0.75)}.ace-cobalt .ace_invisible {color: rgba(255, 255, 255, 0.15)}.ace-cobalt .ace_keyword,.ace-cobalt .ace_meta {color: #FF9D00}.ace-cobalt .ace_constant,.ace-cobalt .ace_constant.ace_character,.ace-cobalt .ace_constant.ace_character.ace_escape,.ace-cobalt .ace_constant.ace_other {color: #FF628C}.ace-cobalt .ace_invalid {color: #F8F8F8;background-color: #800F00}.ace-cobalt .ace_support {color: #80FFBB}.ace-cobalt .ace_support.ace_constant {color: #EB939A}.ace-cobalt .ace_fold {background-color: #FF9D00;border-color: #FFFFFF}.ace-cobalt .ace_support.ace_function {color: #FFB054}.ace-cobalt .ace_storage {color: #FFEE80}.ace-cobalt .ace_entity {color: #FFDD00}.ace-cobalt .ace_string {color: #3AD900}.ace-cobalt .ace_string.ace_regexp {color: #80FFC2}.ace-cobalt .ace_comment {font-style: italic;color: #0088FF}.ace-cobalt .ace_variable {color: #CCCCCC}.ace-cobalt .ace_variable.ace_language {color: #FF80E1}.ace-cobalt .ace_meta.ace_tag {color: #9EFFFF}.ace-cobalt .ace_markup.ace_underline {text-decoration: underline}.ace-cobalt .ace_markup.ace_heading {color: #C8E4FD;background-color: #001221}.ace-cobalt .ace_markup.ace_list {background-color: #130D26}.ace-cobalt .ace_indent-guide {background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNgUHL4zzBz5sz/AA80BCzv+WXhAAAAAElFTkSuQmCC) right repeat-y}\";var r=e(\"../lib/dom\");r.importCssString(t.cssText,t.cssClass)})"
  },
  {
    "path": "public/js/vendor/ace/theme-crimson_editor.js",
    "content": "ace.define(\"ace/theme/crimson_editor\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\"],function(e,t,n){t.isDark=!1,t.cssText='.ace-crimson-editor .ace_gutter {background: #ebebeb;color: #333;overflow : hidden;}.ace-crimson-editor .ace_gutter-layer {width: 100%;text-align: right;}.ace-crimson-editor .ace_print-margin {width: 1px;background: #e8e8e8;}.ace-crimson-editor .ace_scroller {background-color: #FFFFFF;}.ace-crimson-editor .ace_text-layer {color: rgb(64, 64, 64);}.ace-crimson-editor .ace_cursor {border-left: 2px solid black;}.ace-crimson-editor .ace_overwrite-cursors .ace_cursor {border-left: 0px;border-bottom: 1px solid black;}.ace-crimson-editor .ace_invisible {color: rgb(191, 191, 191);}.ace-crimson-editor .ace_identifier {color: black;}.ace-crimson-editor .ace_keyword {color: blue;}.ace-crimson-editor .ace_constant.ace_buildin {color: rgb(88, 72, 246);}.ace-crimson-editor .ace_constant.ace_language {color: rgb(255, 156, 0);}.ace-crimson-editor .ace_constant.ace_library {color: rgb(6, 150, 14);}.ace-crimson-editor .ace_invalid {text-decoration: line-through;color: rgb(224, 0, 0);}.ace-crimson-editor .ace_fold {}.ace-crimson-editor .ace_support.ace_function {color: rgb(192, 0, 0);}.ace-crimson-editor .ace_support.ace_constant {color: rgb(6, 150, 14);}.ace-crimson-editor .ace_support.ace_type,.ace-crimson-editor .ace_support.ace_class {color: rgb(109, 121, 222);}.ace-crimson-editor .ace_keyword.ace_operator {color: rgb(49, 132, 149);}.ace-crimson-editor .ace_string {color: rgb(128, 0, 128);}.ace-crimson-editor .ace_comment {color: rgb(76, 136, 107);}.ace-crimson-editor .ace_comment.ace_doc {color: rgb(0, 102, 255);}.ace-crimson-editor .ace_comment.ace_doc.ace_tag {color: rgb(128, 159, 191);}.ace-crimson-editor .ace_constant.ace_numeric {color: rgb(0, 0, 64);}.ace-crimson-editor .ace_variable {color: rgb(0, 64, 128);}.ace-crimson-editor .ace_xml-pe {color: rgb(104, 104, 91);}.ace-crimson-editor .ace_marker-layer .ace_selection {background: rgb(181, 213, 255);}.ace-crimson-editor .ace_marker-layer .ace_step {background: rgb(252, 255, 0);}.ace-crimson-editor .ace_marker-layer .ace_stack {background: rgb(164, 229, 101);}.ace-crimson-editor .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid rgb(192, 192, 192);}.ace-crimson-editor .ace_marker-layer .ace_active-line {background: rgb(232, 242, 254);}.ace-crimson-editor .ace_gutter-active-line {background-color : #dcdcdc;}.ace-crimson-editor .ace_meta.ace_tag {color:rgb(28, 2, 255);}.ace-crimson-editor .ace_marker-layer .ace_selected-word {background: rgb(250, 250, 255);border: 1px solid rgb(200, 200, 250);}.ace-crimson-editor .ace_string.ace_regex {color: rgb(192, 0, 192);}.ace-crimson-editor .ace_indent-guide {background: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==\") right repeat-y;}',t.cssClass=\"ace-crimson-editor\";var r=e(\"../lib/dom\");r.importCssString(t.cssText,t.cssClass)})"
  },
  {
    "path": "public/js/vendor/ace/theme-dawn.js",
    "content": "ace.define(\"ace/theme/dawn\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\"],function(e,t,n){t.isDark=!1,t.cssClass=\"ace-dawn\",t.cssText=\".ace-dawn .ace_gutter {background: #ebebeb;color: #333}.ace-dawn .ace_print-margin {width: 1px;background: #e8e8e8}.ace-dawn .ace_scroller {background-color: #F9F9F9}.ace-dawn .ace_text-layer {color: #080808}.ace-dawn .ace_cursor {border-left: 2px solid #000000}.ace-dawn .ace_overwrite-cursors .ace_cursor {border-left: 0px;border-bottom: 1px solid #000000}.ace-dawn .ace_marker-layer .ace_selection {background: rgba(39, 95, 255, 0.30)}.ace-dawn.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px #F9F9F9;border-radius: 2px}.ace-dawn .ace_marker-layer .ace_step {background: rgb(255, 255, 0)}.ace-dawn .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid rgba(75, 75, 126, 0.50)}.ace-dawn .ace_marker-layer .ace_active-line {background: rgba(36, 99, 180, 0.12)}.ace-dawn .ace_gutter-active-line {background-color : #dcdcdc}.ace-dawn .ace_marker-layer .ace_selected-word {border: 1px solid rgba(39, 95, 255, 0.30)}.ace-dawn .ace_invisible {color: rgba(75, 75, 126, 0.50)}.ace-dawn .ace_keyword,.ace-dawn .ace_meta {color: #794938}.ace-dawn .ace_constant,.ace-dawn .ace_constant.ace_character,.ace-dawn .ace_constant.ace_character.ace_escape,.ace-dawn .ace_constant.ace_other {color: #811F24}.ace-dawn .ace_invalid.ace_illegal {text-decoration: underline;font-style: italic;color: #F8F8F8;background-color: #B52A1D}.ace-dawn .ace_invalid.ace_deprecated {text-decoration: underline;font-style: italic;color: #B52A1D}.ace-dawn .ace_support {color: #691C97}.ace-dawn .ace_support.ace_constant {color: #B4371F}.ace-dawn .ace_fold {background-color: #794938;border-color: #080808}.ace-dawn .ace_markup.ace_list,.ace-dawn .ace_support.ace_function {color: #693A17}.ace-dawn .ace_storage {font-style: italic;color: #A71D5D}.ace-dawn .ace_string {color: #0B6125}.ace-dawn .ace_string.ace_regexp {color: #CF5628}.ace-dawn .ace_comment {font-style: italic;color: #5A525F}.ace-dawn .ace_variable {color: #234A97}.ace-dawn .ace_markup.ace_underline {text-decoration: underline}.ace-dawn .ace_markup.ace_heading {color: #19356D}.ace-dawn .ace_indent-guide {background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4+fPnf4ZVq1b9BwAkVQboFQv98gAAAABJRU5ErkJggg==) right repeat-y}\";var r=e(\"../lib/dom\");r.importCssString(t.cssText,t.cssClass)})"
  },
  {
    "path": "public/js/vendor/ace/theme-dreamweaver.js",
    "content": "ace.define(\"ace/theme/dreamweaver\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\"],function(e,t,n){t.isDark=!1,t.cssClass=\"ace-dreamweaver\",t.cssText='.ace-dreamweaver .ace_gutter {background: #e8e8e8;color: #333;}.ace-dreamweaver .ace_print-margin {width: 1px;background: #e8e8e8;}.ace-dreamweaver .ace_scroller {background-color: #FFFFFF;}.ace-dreamweaver .ace_fold {background-color: #757AD8;}.ace-dreamweaver .ace_text-layer {}.ace-dreamweaver .ace_cursor {border-left: 2px solid black;}.ace-dreamweaver .ace_overwrite-cursors .ace_cursor {border-left: 0px;border-bottom: 1px solid black;}.ace-dreamweaver .ace_invisible {color: rgb(191, 191, 191);}.ace-dreamweaver .ace_storage,.ace-dreamweaver .ace_keyword {color: blue;}.ace-dreamweaver .ace_constant.ace_buildin {color: rgb(88, 72, 246);}.ace-dreamweaver .ace_constant.ace_language {color: rgb(88, 92, 246);}.ace-dreamweaver .ace_constant.ace_library {color: rgb(6, 150, 14);}.ace-dreamweaver .ace_invalid {background-color: rgb(153, 0, 0);color: white;}.ace-dreamweaver .ace_support.ace_function {color: rgb(60, 76, 114);}.ace-dreamweaver .ace_support.ace_constant {color: rgb(6, 150, 14);}.ace-dreamweaver .ace_support.ace_type,.ace-dreamweaver .ace_support.ace_class {color: #009;}.ace-dreamweaver .ace_support.ace_php_tag {color: #f00;}.ace-dreamweaver .ace_keyword.ace_operator {color: rgb(104, 118, 135);}.ace-dreamweaver .ace_string {color: #00F;}.ace-dreamweaver .ace_comment {color: rgb(76, 136, 107);}.ace-dreamweaver .ace_comment.ace_doc {color: rgb(0, 102, 255);}.ace-dreamweaver .ace_comment.ace_doc.ace_tag {color: rgb(128, 159, 191);}.ace-dreamweaver .ace_constant.ace_numeric {color: rgb(0, 0, 205);}.ace-dreamweaver .ace_variable {color: #06F}.ace-dreamweaver .ace_xml-pe {color: rgb(104, 104, 91);}.ace-dreamweaver .ace_entity.ace_name.ace_function {color: #00F;}.ace-dreamweaver .ace_markup.ace_heading {color: rgb(12, 7, 255);}.ace-dreamweaver .ace_markup.ace_list {color:rgb(185, 6, 144);}.ace-dreamweaver .ace_marker-layer .ace_selection {background: rgb(181, 213, 255);}.ace-dreamweaver .ace_marker-layer .ace_step {background: rgb(252, 255, 0);}.ace-dreamweaver .ace_marker-layer .ace_stack {background: rgb(164, 229, 101);}.ace-dreamweaver .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid rgb(192, 192, 192);}.ace-dreamweaver .ace_marker-layer .ace_active-line {background: rgba(0, 0, 0, 0.07);}.ace-dreamweaver .ace_marker-layer .ace_selected-word {background: rgb(250, 250, 255);border: 1px solid rgb(200, 200, 250);}.ace-dreamweaver .ace_meta.ace_tag {color:#009;}.ace-dreamweaver .ace_meta.ace_tag.ace_anchor {color:#060;}.ace-dreamweaver .ace_meta.ace_tag.ace_form {color:#F90;}.ace-dreamweaver .ace_meta.ace_tag.ace_image {color:#909;}.ace-dreamweaver .ace_meta.ace_tag.ace_script {color:#900;}.ace-dreamweaver .ace_meta.ace_tag.ace_style {color:#909;}.ace-dreamweaver .ace_meta.ace_tag.ace_table {color:#099;}.ace-dreamweaver .ace_string.ace_regex {color: rgb(255, 0, 0)}.ace-dreamweaver .ace_indent-guide {background: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==\") right repeat-y;}';var r=e(\"../lib/dom\");r.importCssString(t.cssText,t.cssClass)})"
  },
  {
    "path": "public/js/vendor/ace/theme-eclipse.js",
    "content": "ace.define(\"ace/theme/eclipse\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\"],function(e,t,n){t.isDark=!1,t.cssText='.ace-eclipse .ace_gutter {background: #ebebeb;border-right: 1px solid rgb(159, 159, 159);color: rgb(136, 136, 136);}.ace-eclipse .ace_print-margin {width: 1px;background: #ebebeb;}.ace-eclipse .ace_scroller {background-color: #FFFFFF;}.ace-eclipse .ace_fold {background-color: rgb(60, 76, 114);}.ace-eclipse .ace_text-layer {}.ace-eclipse .ace_cursor {border-left: 2px solid black;}.ace-eclipse .ace_storage,.ace-eclipse .ace_keyword,.ace-eclipse .ace_variable {color: rgb(127, 0, 85);}.ace-eclipse .ace_constant.ace_buildin {color: rgb(88, 72, 246);}.ace-eclipse .ace_constant.ace_library {color: rgb(6, 150, 14);}.ace-eclipse .ace_function {color: rgb(60, 76, 114);}.ace-eclipse .ace_string {color: rgb(42, 0, 255);}.ace-eclipse .ace_comment {color: rgb(63, 127, 95);}.ace-eclipse .ace_comment.ace_doc {color: rgb(63, 95, 191);}.ace-eclipse .ace_comment.ace_doc.ace_tag {color: rgb(127, 159, 191);}.ace-eclipse .ace_constant.ace_numeric {}.ace-eclipse .ace_tag {color: rgb(63, 127, 127);}.ace-eclipse .ace_type {color: rgb(127, 0, 127);}.ace-eclipse .ace_xml-pe {color: rgb(104, 104, 91);}.ace-eclipse .ace_marker-layer .ace_selection {background: rgb(181, 213, 255);}.ace-eclipse .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid rgb(192, 192, 192);}.ace-eclipse .ace_meta.ace_tag {color:rgb(63, 127, 127);}.ace-eclipse .ace_entity.ace_other.ace_attribute-name {color:rgb(127, 0, 127);}.ace-eclipse .ace_marker-layer .ace_step {background: rgb(255, 255, 0);}.ace-eclipse .ace_marker-layer .ace_active-line {background: rgb(232, 242, 254);}.ace-eclipse .ace_marker-layer .ace_selected-word {border: 1px solid rgb(181, 213, 255);}.ace-eclipse .ace_indent-guide {background: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==\") right repeat-y;}',t.cssClass=\"ace-eclipse\";var r=e(\"../lib/dom\");r.importCssString(t.cssText,t.cssClass)})"
  },
  {
    "path": "public/js/vendor/ace/theme-github.js",
    "content": "ace.define(\"ace/theme/github\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\"],function(e,t,n){t.isDark=!1,t.cssClass=\"ace-github\",t.cssText='/* CSS style content from github\\'s default pygments highlighter template.Cursor and selection styles from textmate.css. */.ace-github .ace_gutter {background: #e8e8e8;color: #AAA;}.ace-github .ace_scroller {background: #fff;}.ace-github .ace_keyword {font-weight: bold;}.ace-github .ace_string {color: #D14;}.ace-github .ace_variable.ace_class {color: teal;}.ace-github .ace_constant.ace_numeric {color: #099;}.ace-github .ace_constant.ace_buildin {color: #0086B3;}.ace-github .ace_support.ace_function {color: #0086B3;}.ace-github .ace_comment {color: #998;font-style: italic;}.ace-github .ace_variable.ace_language  {color: #0086B3;}.ace-github .ace_paren {font-weight: bold;}.ace-github .ace_boolean {font-weight: bold;}.ace-github .ace_string.ace_regexp {color: #009926;font-weight: normal;}.ace-github .ace_variable.ace_instance {color: teal;}.ace-github .ace_constant.ace_language {font-weight: bold;}.ace-github .ace_text-layer {}.ace-github .ace_cursor {border-left: 2px solid black;}.ace-github .ace_overwrite-cursors .ace_cursor {border-left: 0px;border-bottom: 1px solid black;}.ace-github .ace_marker-layer .ace_active-line {background: rgb(255, 255, 204);}.ace-github .ace_marker-layer .ace_selection {background: rgb(181, 213, 255);}.ace-github.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px white;border-radius: 2px;}/* bold keywords cause cursor issues for some fonts *//* this disables bold style for editor and keeps for static highlighter */.ace-github.ace_nobold .ace_line > span {font-weight: normal !important;}.ace-github .ace_marker-layer .ace_step {background: rgb(252, 255, 0);}.ace-github .ace_marker-layer .ace_stack {background: rgb(164, 229, 101);}.ace-github .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid rgb(192, 192, 192);}.ace-github .ace_gutter-active-line {background-color : rgba(0, 0, 0, 0.07);}.ace-github .ace_marker-layer .ace_selected-word {background: rgb(250, 250, 255);border: 1px solid rgb(200, 200, 250);}.ace-github .ace_print-margin {width: 1px;background: #e8e8e8;}.ace-github .ace_indent-guide {background: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==\") right repeat-y;}';var r=e(\"../lib/dom\");r.importCssString(t.cssText,t.cssClass)})"
  },
  {
    "path": "public/js/vendor/ace/theme-mono_industrial.js",
    "content": "ace.define(\"ace/theme/mono_industrial\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\"],function(e,t,n){t.isDark=!0,t.cssClass=\"ace-mono-industrial\",t.cssText=\".ace-mono-industrial .ace_gutter {background: #1d2521;color: #C5C9C9}.ace-mono-industrial .ace_print-margin {width: 1px;background: #555651}.ace-mono-industrial .ace_scroller {background-color: #222C28}.ace-mono-industrial .ace_text-layer {color: #FFFFFF}.ace-mono-industrial .ace_cursor {border-left: 2px solid #FFFFFF}.ace-mono-industrial .ace_overwrite-cursors .ace_cursor {border-left: 0px;border-bottom: 1px solid #FFFFFF}.ace-mono-industrial .ace_marker-layer .ace_selection {background: rgba(145, 153, 148, 0.40)}.ace-mono-industrial.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px #222C28;border-radius: 2px}.ace-mono-industrial .ace_marker-layer .ace_step {background: rgb(102, 82, 0)}.ace-mono-industrial .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid rgba(102, 108, 104, 0.50)}.ace-mono-industrial .ace_marker-layer .ace_active-line {background: rgba(12, 13, 12, 0.25)}.ace-mono-industrial .ace_gutter-active-line {background-color: rgba(12, 13, 12, 0.25)}.ace-mono-industrial .ace_marker-layer .ace_selected-word {border: 1px solid rgba(145, 153, 148, 0.40)}.ace-mono-industrial .ace_invisible {color: rgba(102, 108, 104, 0.50)}.ace-mono-industrial .ace_string {background-color: #151C19;color: #FFFFFF}.ace-mono-industrial .ace_keyword,.ace-mono-industrial .ace_meta {color: #A39E64}.ace-mono-industrial .ace_constant,.ace-mono-industrial .ace_constant.ace_character,.ace-mono-industrial .ace_constant.ace_character.ace_escape,.ace-mono-industrial .ace_constant.ace_numeric,.ace-mono-industrial .ace_constant.ace_other {color: #E98800}.ace-mono-industrial .ace_entity.ace_name.ace_function,.ace-mono-industrial .ace_keyword.ace_operator,.ace-mono-industrial .ace_variable {color: #A8B3AB}.ace-mono-industrial .ace_invalid {color: #FFFFFF;background-color: rgba(153, 0, 0, 0.68)}.ace-mono-industrial .ace_support.ace_constant {color: #C87500}.ace-mono-industrial .ace_fold {background-color: #A8B3AB;border-color: #FFFFFF}.ace-mono-industrial .ace_support.ace_function {color: #588E60}.ace-mono-industrial .ace_entity.ace_name,.ace-mono-industrial .ace_support.ace_class,.ace-mono-industrial .ace_support.ace_type {color: #5778B6}.ace-mono-industrial .ace_storage {color: #C23B00}.ace-mono-industrial .ace_variable.ace_language,.ace-mono-industrial .ace_variable.ace_parameter {color: #648BD2}.ace-mono-industrial .ace_comment {color: #666C68;background-color: #151C19}.ace-mono-industrial .ace_entity.ace_other.ace_attribute-name {color: #909993}.ace-mono-industrial .ace_markup.ace_underline {text-decoration: underline}.ace-mono-industrial .ace_entity.ace_name.ace_tag {color: #A65EFF}.ace-mono-industrial .ace_indent-guide {background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNQ0tH4zzBz5sz/ABAOBECKH+evAAAAAElFTkSuQmCC) right repeat-y}\";var r=e(\"../lib/dom\");r.importCssString(t.cssText,t.cssClass)})"
  },
  {
    "path": "public/js/vendor/ace/theme-monokai.js",
    "content": "ace.define(\"ace/theme/monokai\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\"],function(e,t,n){t.isDark=!0,t.cssClass=\"ace-monokai\",t.cssText=\".ace-monokai .ace_gutter {background: #2F3129;color: #8F908A}.ace-monokai .ace_print-margin {width: 1px;background: #555651}.ace-monokai .ace_scroller {background-color: #272822}.ace-monokai .ace_text-layer {color: #F8F8F2}.ace-monokai .ace_cursor {border-left: 2px solid #F8F8F0}.ace-monokai .ace_overwrite-cursors .ace_cursor {border-left: 0px;border-bottom: 1px solid #F8F8F0}.ace-monokai .ace_marker-layer .ace_selection {background: #49483E}.ace-monokai.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px #272822;border-radius: 2px}.ace-monokai .ace_marker-layer .ace_step {background: rgb(102, 82, 0)}.ace-monokai .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid #49483E}.ace-monokai .ace_marker-layer .ace_active-line {background: #202020}.ace-monokai .ace_gutter-active-line {background-color: #272727}.ace-monokai .ace_marker-layer .ace_selected-word {border: 1px solid #49483E}.ace-monokai .ace_invisible {color: #52524d}.ace-monokai .ace_entity.ace_name.ace_tag,.ace-monokai .ace_keyword,.ace-monokai .ace_meta,.ace-monokai .ace_storage {color: #F92672}.ace-monokai .ace_constant.ace_character,.ace-monokai .ace_constant.ace_language,.ace-monokai .ace_constant.ace_numeric,.ace-monokai .ace_constant.ace_other {color: #AE81FF}.ace-monokai .ace_invalid {color: #F8F8F0;background-color: #F92672}.ace-monokai .ace_invalid.ace_deprecated {color: #F8F8F0;background-color: #AE81FF}.ace-monokai .ace_support.ace_constant,.ace-monokai .ace_support.ace_function {color: #66D9EF}.ace-monokai .ace_fold {background-color: #A6E22E;border-color: #F8F8F2}.ace-monokai .ace_storage.ace_type,.ace-monokai .ace_support.ace_class,.ace-monokai .ace_support.ace_type {font-style: italic;color: #66D9EF}.ace-monokai .ace_entity.ace_name.ace_function,.ace-monokai .ace_entity.ace_other,.ace-monokai .ace_variable {color: #A6E22E}.ace-monokai .ace_variable.ace_parameter {font-style: italic;color: #FD971F}.ace-monokai .ace_string {color: #E6DB74}.ace-monokai .ace_comment {color: #75715E}.ace-monokai .ace_markup.ace_underline {text-decoration: underline}.ace-monokai .ace_indent-guide {background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNQ11D6z7Bq1ar/ABCKBG6g04U2AAAAAElFTkSuQmCC) right repeat-y}\";var r=e(\"../lib/dom\");r.importCssString(t.cssText,t.cssClass)})"
  },
  {
    "path": "public/js/vendor/ace/theme-solarized_dark.js",
    "content": "ace.define(\"ace/theme/solarized_dark\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\"],function(e,t,n){t.isDark=!0,t.cssClass=\"ace-solarized-dark\",t.cssText=\".ace-solarized-dark .ace_gutter {background: #01313f;color: #d0edf7}.ace-solarized-dark .ace_print-margin {width: 1px;background: #33555E}.ace-solarized-dark .ace_scroller {background-color: #002B36}.ace-solarized-dark .ace_entity.ace_other.ace_attribute-name,.ace-solarized-dark .ace_storage,.ace-solarized-dark .ace_text-layer {color: #93A1A1}.ace-solarized-dark .ace_cursor {border-left: 2px solid #D30102}.ace-solarized-dark .ace_overwrite-cursors .ace_cursor {border-left: 0px;border-bottom: 1px solid #D30102}.ace-solarized-dark .ace_marker-layer .ace_active-line,.ace-solarized-dark .ace_marker-layer .ace_selection {background: rgba(255, 255, 255, 0.1)}.ace-solarized-dark.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px #002B36;border-radius: 2px}.ace-solarized-dark .ace_marker-layer .ace_step {background: rgb(102, 82, 0)}.ace-solarized-dark .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid rgba(147, 161, 161, 0.50)}.ace-solarized-dark .ace_gutter-active-line {background-color: #0d3440}.ace-solarized-dark .ace_marker-layer .ace_selected-word {border: 1px solid #073642}.ace-solarized-dark .ace_invisible {color: rgba(147, 161, 161, 0.50)}.ace-solarized-dark .ace_keyword,.ace-solarized-dark .ace_meta,.ace-solarized-dark .ace_support.ace_class,.ace-solarized-dark .ace_support.ace_type {color: #859900}.ace-solarized-dark .ace_constant.ace_character,.ace-solarized-dark .ace_constant.ace_other {color: #CB4B16}.ace-solarized-dark .ace_constant.ace_language {color: #B58900}.ace-solarized-dark .ace_constant.ace_numeric {color: #D33682}.ace-solarized-dark .ace_fold {background-color: #268BD2;border-color: #93A1A1}.ace-solarized-dark .ace_entity.ace_name.ace_function,.ace-solarized-dark .ace_entity.ace_name.ace_tag,.ace-solarized-dark .ace_support.ace_function,.ace-solarized-dark .ace_variable,.ace-solarized-dark .ace_variable.ace_language {color: #268BD2}.ace-solarized-dark .ace_string {color: #2AA198}.ace-solarized-dark .ace_string.ace_regexp {color: #D30102}.ace-solarized-dark .ace_comment {font-style: italic;color: #657B83}.ace-solarized-dark .ace_markup.ace_underline {text-decoration: underline}.ace-solarized-dark .ace_indent-guide {background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNg0Db7zzBz5sz/AA82BCv7wOIDAAAAAElFTkSuQmCC) right repeat-y}\";var r=e(\"../lib/dom\");r.importCssString(t.cssText,t.cssClass)})"
  },
  {
    "path": "public/js/vendor/ace/theme-solarized_light.js",
    "content": "ace.define(\"ace/theme/solarized_light\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\"],function(e,t,n){t.isDark=!1,t.cssClass=\"ace-solarized-light\",t.cssText=\".ace-solarized-light .ace_gutter {background: #fbf1d3;color: #333}.ace-solarized-light .ace_print-margin {width: 1px;background: #e8e8e8}.ace-solarized-light .ace_scroller {background-color: #FDF6E3}.ace-solarized-light .ace_text-layer {color: #586E75}.ace-solarized-light .ace_cursor {border-left: 2px solid #000000}.ace-solarized-light .ace_overwrite-cursors .ace_cursor {border-left: 0px;border-bottom: 1px solid #000000}.ace-solarized-light .ace_marker-layer .ace_selection {background: #073642}.ace-solarized-light.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px #FDF6E3;border-radius: 2px}.ace-solarized-light .ace_marker-layer .ace_step {background: rgb(255, 255, 0)}.ace-solarized-light .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid rgba(147, 161, 161, 0.50)}.ace-solarized-light .ace_marker-layer .ace_active-line {background: #EEE8D5}.ace-solarized-light .ace_gutter-active-line {background-color : #dcdcdc}.ace-solarized-light .ace_marker-layer .ace_selected-word {border: 1px solid #073642}.ace-solarized-light .ace_invisible {color: rgba(147, 161, 161, 0.50)}.ace-solarized-light .ace_keyword,.ace-solarized-light .ace_meta,.ace-solarized-light .ace_support.ace_class,.ace-solarized-light .ace_support.ace_type {color: #859900}.ace-solarized-light .ace_constant.ace_character,.ace-solarized-light .ace_constant.ace_other {color: #CB4B16}.ace-solarized-light .ace_constant.ace_language {color: #B58900}.ace-solarized-light .ace_constant.ace_numeric {color: #D33682}.ace-solarized-light .ace_fold {background-color: #268BD2;border-color: #586E75}.ace-solarized-light .ace_entity.ace_name.ace_function,.ace-solarized-light .ace_entity.ace_name.ace_tag,.ace-solarized-light .ace_support.ace_function,.ace-solarized-light .ace_variable,.ace-solarized-light .ace_variable.ace_language {color: #268BD2}.ace-solarized-light .ace_storage {color: #073642}.ace-solarized-light .ace_string {color: #2AA198}.ace-solarized-light .ace_string.ace_regexp {color: #D30102}.ace-solarized-light .ace_comment,.ace-solarized-light .ace_entity.ace_other.ace_attribute-name {color: #93A1A1}.ace-solarized-light .ace_markup.ace_underline {text-decoration: underline}.ace-solarized-light .ace_indent-guide {background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4++3xf4ZVq1b9BwAjxwbT1g3hiwAAAABJRU5ErkJggg==) right repeat-y}\";var r=e(\"../lib/dom\");r.importCssString(t.cssText,t.cssClass)})"
  },
  {
    "path": "public/js/vendor/ace/theme-textmate.js",
    "content": "ace.define(\"ace/theme/textmate\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\"],function(e,t,n){t.isDark=!1,t.cssClass=\"ace-tm\",t.cssText='.ace-tm .ace_gutter {background: #f0f0f0;color: #333;}.ace-tm .ace_print-margin {width: 1px;background: #e8e8e8;}.ace-tm .ace_fold {background-color: #6B72E6;}.ace-tm .ace_scroller {background-color: #FFFFFF;}.ace-tm .ace_cursor {border-left: 2px solid black;}.ace-tm .ace_overwrite-cursors .ace_cursor {border-left: 0px;border-bottom: 1px solid black;}.ace-tm .ace_invisible {color: rgb(191, 191, 191);}.ace-tm .ace_storage,.ace-tm .ace_keyword {color: blue;}.ace-tm .ace_constant {color: rgb(197, 6, 11);}.ace-tm .ace_constant.ace_buildin {color: rgb(88, 72, 246);}.ace-tm .ace_constant.ace_language {color: rgb(88, 92, 246);}.ace-tm .ace_constant.ace_library {color: rgb(6, 150, 14);}.ace-tm .ace_invalid {background-color: rgba(255, 0, 0, 0.1);color: red;}.ace-tm .ace_support.ace_function {color: rgb(60, 76, 114);}.ace-tm .ace_support.ace_constant {color: rgb(6, 150, 14);}.ace-tm .ace_support.ace_type,.ace-tm .ace_support.ace_class {color: rgb(109, 121, 222);}.ace-tm .ace_keyword.ace_operator {color: rgb(104, 118, 135);}.ace-tm .ace_string {color: rgb(3, 106, 7);}.ace-tm .ace_comment {color: rgb(76, 136, 107);}.ace-tm .ace_comment.ace_doc {color: rgb(0, 102, 255);}.ace-tm .ace_comment.ace_doc.ace_tag {color: rgb(128, 159, 191);}.ace-tm .ace_constant.ace_numeric {color: rgb(0, 0, 205);}.ace-tm .ace_variable {color: rgb(49, 132, 149);}.ace-tm .ace_xml-pe {color: rgb(104, 104, 91);}.ace-tm .ace_entity.ace_name.ace_function {color: #0000A2;}.ace-tm .ace_markup.ace_heading {color: rgb(12, 7, 255);}.ace-tm .ace_markup.ace_list {color:rgb(185, 6, 144);}.ace-tm .ace_meta.ace_tag {color:rgb(0, 22, 142);}.ace-tm .ace_string.ace_regex {color: rgb(255, 0, 0)}.ace-tm .ace_marker-layer .ace_selection {background: rgb(181, 213, 255);}.ace-tm.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px white;border-radius: 2px;}.ace-tm .ace_marker-layer .ace_step {background: rgb(252, 255, 0);}.ace-tm .ace_marker-layer .ace_stack {background: rgb(164, 229, 101);}.ace-tm .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid rgb(192, 192, 192);}.ace-tm .ace_marker-layer .ace_active-line {background: rgba(0, 0, 0, 0.07);}.ace-tm .ace_gutter-active-line {background-color : #dcdcdc;}.ace-tm .ace_marker-layer .ace_selected-word {background: rgb(250, 250, 255);border: 1px solid rgb(200, 200, 250);}.ace-tm .ace_indent-guide {background: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==\") right repeat-y;}';var r=e(\"../lib/dom\");r.importCssString(t.cssText,t.cssClass)})"
  },
  {
    "path": "public/js/vendor/ace/theme-twilight.js",
    "content": "ace.define(\"ace/theme/twilight\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\"],function(e,t,n){t.isDark=!0,t.cssClass=\"ace-twilight\",t.cssText=\".ace-twilight .ace_gutter {background: #232323;color: #E2E2E2}.ace-twilight .ace_print-margin {width: 1px;background: #232323}.ace-twilight .ace_scroller {background-color: #141414}.ace-twilight .ace_text-layer {color: #F8F8F8}.ace-twilight .ace_cursor {border-left: 2px solid #A7A7A7}.ace-twilight .ace_overwrite-cursors .ace_cursor {border-left: 0px;border-bottom: 1px solid #A7A7A7}.ace-twilight .ace_marker-layer .ace_selection {background: rgba(221, 240, 255, 0.20)}.ace-twilight.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px #141414;border-radius: 2px}.ace-twilight .ace_marker-layer .ace_step {background: rgb(102, 82, 0)}.ace-twilight .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid rgba(255, 255, 255, 0.25)}.ace-twilight .ace_marker-layer .ace_active-line {background: rgba(255, 255, 255, 0.031)}.ace-twilight .ace_gutter-active-line {background-color: rgba(255, 255, 255, 0.031)}.ace-twilight .ace_marker-layer .ace_selected-word {border: 1px solid rgba(221, 240, 255, 0.20)}.ace-twilight .ace_invisible {color: rgba(255, 255, 255, 0.25)}.ace-twilight .ace_keyword,.ace-twilight .ace_meta {color: #CDA869}.ace-twilight .ace_constant,.ace-twilight .ace_constant.ace_character,.ace-twilight .ace_constant.ace_character.ace_escape,.ace-twilight .ace_constant.ace_other,.ace-twilight .ace_markup.ace_heading,.ace-twilight .ace_support.ace_constant {color: #CF6A4C}.ace-twilight .ace_invalid.ace_illegal {color: #F8F8F8;background-color: rgba(86, 45, 86, 0.75)}.ace-twilight .ace_invalid.ace_deprecated {text-decoration: underline;font-style: italic;color: #D2A8A1}.ace-twilight .ace_support {color: #9B859D}.ace-twilight .ace_fold {background-color: #AC885B;border-color: #F8F8F8}.ace-twilight .ace_support.ace_function {color: #DAD085}.ace-twilight .ace_markup.ace_list,.ace-twilight .ace_storage {color: #F9EE98}.ace-twilight .ace_entity.ace_name.ace_function,.ace-twilight .ace_meta.ace_tag,.ace-twilight .ace_variable {color: #AC885B}.ace-twilight .ace_string {color: #8F9D6A}.ace-twilight .ace_string.ace_regexp {color: #E9C062}.ace-twilight .ace_comment {font-style: italic;color: #5F5A60}.ace-twilight .ace_variable {color: #7587A6}.ace-twilight .ace_xml-pe {color: #494949}.ace-twilight .ace_markup.ace_underline {text-decoration: underline}.ace-twilight .ace_indent-guide {background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWMQERH5zzBz5sz/AA5EBAYqeZXWAAAAAElFTkSuQmCC) right repeat-y}\";var r=e(\"../lib/dom\");r.importCssString(t.cssText,t.cssClass)})"
  },
  {
    "path": "public/js/vendor/ace/worker-css.js",
    "content": "\"no use strict\";function initBaseUrls(e){require.tlns=e}function initSender(){var e=require(null,\"ace/lib/event_emitter\").EventEmitter,t=require(null,\"ace/lib/oop\"),n=function(){};return function(){t.implement(this,e),this.callback=function(e,t){postMessage({type:\"call\",id:t,data:e})},this.emit=function(e,t){postMessage({type:\"event\",name:e,data:t})}}.call(n.prototype),new n}if(typeof window!=\"undefined\"&&window.document)throw\"atempt to load ace worker into main window instead of webWorker\";var console={log:function(){var e=Array.prototype.slice.call(arguments,0);postMessage({type:\"log\",data:e})},error:function(){var e=Array.prototype.slice.call(arguments,0);postMessage({type:\"log\",data:e})}},window={console:console},normalizeModule=function(e,t){if(t.indexOf(\"!\")!==-1){var n=t.split(\"!\");return normalizeModule(e,n[0])+\"!\"+normalizeModule(e,n[1])}if(t.charAt(0)==\".\"){var r=e.split(\"/\").slice(0,-1).join(\"/\");t=r+\"/\"+t;while(t.indexOf(\".\")!==-1&&i!=t){var i=t;t=t.replace(/\\/\\.\\//,\"/\").replace(/[^\\/]+\\/\\.\\.\\//,\"\")}}return t},require=function(e,t){if(!t.charAt)throw new Error(\"worker.js require() accepts only (parentId, id) as arguments\");t=normalizeModule(e,t);var n=require.modules[t];if(n)return n.initialized||(n.initialized=!0,n.exports=n.factory().exports),n.exports;var r=t.split(\"/\");r[0]=require.tlns[r[0]]||r[0];var i=r.join(\"/\")+\".js\";return require.id=t,importScripts(i),require(e,t)};require.modules={},require.tlns={};var define=function(e,t,n){arguments.length==2?(n=t,typeof e!=\"string\"&&(t=e,e=require.id)):arguments.length==1&&(n=e,e=require.id);if(e.indexOf(\"text!\")===0)return;var r=function(t,n){return require(e,t,n)};require.modules[e]={factory:function(){var e={exports:{}},t=n(r,e.exports,e);return t&&(e.exports=t),e}}},main,sender;onmessage=function(e){var t=e.data;if(t.command){if(!main[t.command])throw new Error(\"Unknown command:\"+t.command);main[t.command].apply(main,t.args)}else if(t.init){initBaseUrls(t.tlns),require(null,\"ace/lib/fixoldbrowsers\"),sender=initSender();var n=require(null,t.module)[t.classname];main=new n(sender)}else t.event&&sender&&sender._emit(t.event,t.data)},define(\"ace/lib/fixoldbrowsers\",[\"require\",\"exports\",\"module\",\"ace/lib/regexp\",\"ace/lib/es5-shim\"],function(e,t,n){e(\"./regexp\"),e(\"./es5-shim\")}),define(\"ace/lib/regexp\",[\"require\",\"exports\",\"module\"],function(e,t,n){function o(e){return(e.global?\"g\":\"\")+(e.ignoreCase?\"i\":\"\")+(e.multiline?\"m\":\"\")+(e.extended?\"x\":\"\")+(e.sticky?\"y\":\"\")}function u(e,t,n){if(Array.prototype.indexOf)return e.indexOf(t,n);for(var r=n||0;r<e.length;r++)if(e[r]===t)return r;return-1}var r={exec:RegExp.prototype.exec,test:RegExp.prototype.test,match:String.prototype.match,replace:String.prototype.replace,split:String.prototype.split},i=r.exec.call(/()??/,\"\")[1]===undefined,s=function(){var e=/^/g;return r.test.call(e,\"\"),!e.lastIndex}();if(s&&i)return;RegExp.prototype.exec=function(e){var t=r.exec.apply(this,arguments),n,a;if(typeof e==\"string\"&&t){!i&&t.length>1&&u(t,\"\")>-1&&(a=RegExp(this.source,r.replace.call(o(this),\"g\",\"\")),r.replace.call(e.slice(t.index),a,function(){for(var e=1;e<arguments.length-2;e++)arguments[e]===undefined&&(t[e]=undefined)}));if(this._xregexp&&this._xregexp.captureNames)for(var f=1;f<t.length;f++)n=this._xregexp.captureNames[f-1],n&&(t[n]=t[f]);!s&&this.global&&!t[0].length&&this.lastIndex>t.index&&this.lastIndex--}return t},s||(RegExp.prototype.test=function(e){var t=r.exec.call(this,e);return t&&this.global&&!t[0].length&&this.lastIndex>t.index&&this.lastIndex--,!!t})}),define(\"ace/lib/es5-shim\",[\"require\",\"exports\",\"module\"],function(e,t,n){function r(){}function w(e){try{return Object.defineProperty(e,\"sentinel\",{}),\"sentinel\"in e}catch(t){}}function j(e){return e=+e,e!==e?e=0:e!==0&&e!==1/0&&e!==-1/0&&(e=(e>0||-1)*Math.floor(Math.abs(e))),e}function F(e){var t=typeof e;return e===null||t===\"undefined\"||t===\"boolean\"||t===\"number\"||t===\"string\"}function I(e){var t,n,r;if(F(e))return e;n=e.valueOf;if(typeof n==\"function\"){t=n.call(e);if(F(t))return t}r=e.toString;if(typeof r==\"function\"){t=r.call(e);if(F(t))return t}throw new TypeError}Function.prototype.bind||(Function.prototype.bind=function(t){var n=this;if(typeof n!=\"function\")throw new TypeError(\"Function.prototype.bind called on incompatible \"+n);var i=u.call(arguments,1),s=function(){if(this instanceof s){var e=n.apply(this,i.concat(u.call(arguments)));return Object(e)===e?e:this}return n.apply(t,i.concat(u.call(arguments)))};return n.prototype&&(r.prototype=n.prototype,s.prototype=new r,r.prototype=null),s});var i=Function.prototype.call,s=Array.prototype,o=Object.prototype,u=s.slice,a=i.bind(o.toString),f=i.bind(o.hasOwnProperty),l,c,h,p,d;if(d=f(o,\"__defineGetter__\"))l=i.bind(o.__defineGetter__),c=i.bind(o.__defineSetter__),h=i.bind(o.__lookupGetter__),p=i.bind(o.__lookupSetter__);if([1,2].splice(0).length!=2)if(!function(){function e(e){var t=new Array(e+2);return t[0]=t[1]=0,t}var t=[],n;t.splice.apply(t,e(20)),t.splice.apply(t,e(26)),n=t.length,t.splice(5,0,\"XXX\"),n+1==t.length;if(n+1==t.length)return!0}())Array.prototype.splice=function(e,t){var n=this.length;e>0?e>n&&(e=n):e==void 0?e=0:e<0&&(e=Math.max(n+e,0)),e+t<n||(t=n-e);var r=this.slice(e,e+t),i=u.call(arguments,2),s=i.length;if(e===n)s&&this.push.apply(this,i);else{var o=Math.min(t,n-e),a=e+o,f=a+s-o,l=n-a,c=n-o;if(f<a)for(var h=0;h<l;++h)this[f+h]=this[a+h];else if(f>a)for(h=l;h--;)this[f+h]=this[a+h];if(s&&e===c)this.length=c,this.push.apply(this,i);else{this.length=c+s;for(h=0;h<s;++h)this[e+h]=i[h]}}return r};else{var v=Array.prototype.splice;Array.prototype.splice=function(e,t){return arguments.length?v.apply(this,[e===void 0?0:e,t===void 0?this.length-e:t].concat(u.call(arguments,2))):[]}}Array.isArray||(Array.isArray=function(t){return a(t)==\"[object Array]\"});var m=Object(\"a\"),g=m[0]!=\"a\"||!(0 in m);Array.prototype.forEach||(Array.prototype.forEach=function(t){var n=q(this),r=g&&a(this)==\"[object String]\"?this.split(\"\"):n,i=arguments[1],s=-1,o=r.length>>>0;if(a(t)!=\"[object Function]\")throw new TypeError;while(++s<o)s in r&&t.call(i,r[s],s,n)}),Array.prototype.map||(Array.prototype.map=function(t){var n=q(this),r=g&&a(this)==\"[object String]\"?this.split(\"\"):n,i=r.length>>>0,s=Array(i),o=arguments[1];if(a(t)!=\"[object Function]\")throw new TypeError(t+\" is not a function\");for(var u=0;u<i;u++)u in r&&(s[u]=t.call(o,r[u],u,n));return s}),Array.prototype.filter||(Array.prototype.filter=function(t){var n=q(this),r=g&&a(this)==\"[object String]\"?this.split(\"\"):n,i=r.length>>>0,s=[],o,u=arguments[1];if(a(t)!=\"[object Function]\")throw new TypeError(t+\" is not a function\");for(var f=0;f<i;f++)f in r&&(o=r[f],t.call(u,o,f,n)&&s.push(o));return s}),Array.prototype.every||(Array.prototype.every=function(t){var n=q(this),r=g&&a(this)==\"[object String]\"?this.split(\"\"):n,i=r.length>>>0,s=arguments[1];if(a(t)!=\"[object Function]\")throw new TypeError(t+\" is not a function\");for(var o=0;o<i;o++)if(o in r&&!t.call(s,r[o],o,n))return!1;return!0}),Array.prototype.some||(Array.prototype.some=function(t){var n=q(this),r=g&&a(this)==\"[object String]\"?this.split(\"\"):n,i=r.length>>>0,s=arguments[1];if(a(t)!=\"[object Function]\")throw new TypeError(t+\" is not a function\");for(var o=0;o<i;o++)if(o in r&&t.call(s,r[o],o,n))return!0;return!1}),Array.prototype.reduce||(Array.prototype.reduce=function(t){var n=q(this),r=g&&a(this)==\"[object String]\"?this.split(\"\"):n,i=r.length>>>0;if(a(t)!=\"[object Function]\")throw new TypeError(t+\" is not a function\");if(!i&&arguments.length==1)throw new TypeError(\"reduce of empty array with no initial value\");var s=0,o;if(arguments.length>=2)o=arguments[1];else do{if(s in r){o=r[s++];break}if(++s>=i)throw new TypeError(\"reduce of empty array with no initial value\")}while(!0);for(;s<i;s++)s in r&&(o=t.call(void 0,o,r[s],s,n));return o}),Array.prototype.reduceRight||(Array.prototype.reduceRight=function(t){var n=q(this),r=g&&a(this)==\"[object String]\"?this.split(\"\"):n,i=r.length>>>0;if(a(t)!=\"[object Function]\")throw new TypeError(t+\" is not a function\");if(!i&&arguments.length==1)throw new TypeError(\"reduceRight of empty array with no initial value\");var s,o=i-1;if(arguments.length>=2)s=arguments[1];else do{if(o in r){s=r[o--];break}if(--o<0)throw new TypeError(\"reduceRight of empty array with no initial value\")}while(!0);do o in this&&(s=t.call(void 0,s,r[o],o,n));while(o--);return s});if(!Array.prototype.indexOf||[0,1].indexOf(1,2)!=-1)Array.prototype.indexOf=function(t){var n=g&&a(this)==\"[object String]\"?this.split(\"\"):q(this),r=n.length>>>0;if(!r)return-1;var i=0;arguments.length>1&&(i=j(arguments[1])),i=i>=0?i:Math.max(0,r+i);for(;i<r;i++)if(i in n&&n[i]===t)return i;return-1};if(!Array.prototype.lastIndexOf||[0,1].lastIndexOf(0,-3)!=-1)Array.prototype.lastIndexOf=function(t){var n=g&&a(this)==\"[object String]\"?this.split(\"\"):q(this),r=n.length>>>0;if(!r)return-1;var i=r-1;arguments.length>1&&(i=Math.min(i,j(arguments[1]))),i=i>=0?i:r-Math.abs(i);for(;i>=0;i--)if(i in n&&t===n[i])return i;return-1};Object.getPrototypeOf||(Object.getPrototypeOf=function(t){return t.__proto__||(t.constructor?t.constructor.prototype:o)});if(!Object.getOwnPropertyDescriptor){var y=\"Object.getOwnPropertyDescriptor called on a non-object: \";Object.getOwnPropertyDescriptor=function(t,n){if(typeof t!=\"object\"&&typeof t!=\"function\"||t===null)throw new TypeError(y+t);if(!f(t,n))return;var r,i,s;r={enumerable:!0,configurable:!0};if(d){var u=t.__proto__;t.__proto__=o;var i=h(t,n),s=p(t,n);t.__proto__=u;if(i||s)return i&&(r.get=i),s&&(r.set=s),r}return r.value=t[n],r}}Object.getOwnPropertyNames||(Object.getOwnPropertyNames=function(t){return Object.keys(t)});if(!Object.create){var b;Object.prototype.__proto__===null?b=function(){return{__proto__:null}}:b=function(){var e={};for(var t in e)e[t]=null;return e.constructor=e.hasOwnProperty=e.propertyIsEnumerable=e.isPrototypeOf=e.toLocaleString=e.toString=e.valueOf=e.__proto__=null,e},Object.create=function(t,n){var r;if(t===null)r=b();else{if(typeof t!=\"object\")throw new TypeError(\"typeof prototype[\"+typeof t+\"] != 'object'\");var i=function(){};i.prototype=t,r=new i,r.__proto__=t}return n!==void 0&&Object.defineProperties(r,n),r}}if(Object.defineProperty){var E=w({}),S=typeof document==\"undefined\"||w(document.createElement(\"div\"));if(!E||!S)var x=Object.defineProperty}if(!Object.defineProperty||x){var T=\"Property description must be an object: \",N=\"Object.defineProperty called on non-object: \",C=\"getters & setters can not be defined on this javascript engine\";Object.defineProperty=function(t,n,r){if(typeof t!=\"object\"&&typeof t!=\"function\"||t===null)throw new TypeError(N+t);if(typeof r!=\"object\"&&typeof r!=\"function\"||r===null)throw new TypeError(T+r);if(x)try{return x.call(Object,t,n,r)}catch(i){}if(f(r,\"value\"))if(d&&(h(t,n)||p(t,n))){var s=t.__proto__;t.__proto__=o,delete t[n],t[n]=r.value,t.__proto__=s}else t[n]=r.value;else{if(!d)throw new TypeError(C);f(r,\"get\")&&l(t,n,r.get),f(r,\"set\")&&c(t,n,r.set)}return t}}Object.defineProperties||(Object.defineProperties=function(t,n){for(var r in n)f(n,r)&&Object.defineProperty(t,r,n[r]);return t}),Object.seal||(Object.seal=function(t){return t}),Object.freeze||(Object.freeze=function(t){return t});try{Object.freeze(function(){})}catch(k){Object.freeze=function(t){return function(n){return typeof n==\"function\"?n:t(n)}}(Object.freeze)}Object.preventExtensions||(Object.preventExtensions=function(t){return t}),Object.isSealed||(Object.isSealed=function(t){return!1}),Object.isFrozen||(Object.isFrozen=function(t){return!1}),Object.isExtensible||(Object.isExtensible=function(t){if(Object(t)===t)throw new TypeError;var n=\"\";while(f(t,n))n+=\"?\";t[n]=!0;var r=f(t,n);return delete t[n],r});if(!Object.keys){var L=!0,A=[\"toString\",\"toLocaleString\",\"valueOf\",\"hasOwnProperty\",\"isPrototypeOf\",\"propertyIsEnumerable\",\"constructor\"],O=A.length;for(var M in{toString:null})L=!1;Object.keys=function R(e){if(typeof e!=\"object\"&&typeof e!=\"function\"||e===null)throw new TypeError(\"Object.keys called on a non-object\");var R=[];for(var t in e)f(e,t)&&R.push(t);if(L)for(var n=0,r=O;n<r;n++){var i=A[n];f(e,i)&&R.push(i)}return R}}Date.now||(Date.now=function(){return(new Date).getTime()});if(\"0\".split(void 0,0).length){var _=String.prototype.split;String.prototype.split=function(e,t){return e===void 0&&t===0?[]:_.apply(this,arguments)}}if(\"\".substr&&\"0b\".substr(-1)!==\"b\"){var D=String.prototype.substr;String.prototype.substr=function(e,t){return D.call(this,e<0?(e=this.length+e)<0?0:e:e,t)}}var P=\"\t\\n\u000b\\f\\r   ᠎             　\\u2028\\u2029﻿\";if(!String.prototype.trim||P.trim()){P=\"[\"+P+\"]\";var H=new RegExp(\"^\"+P+P+\"*\"),B=new RegExp(P+P+\"*$\");String.prototype.trim=function(){if(this===undefined||this===null)throw new TypeError(\"can't convert \"+this+\" to object\");return String(this).replace(H,\"\").replace(B,\"\")}}var q=function(e){if(e==null)throw new TypeError(\"can't convert \"+e+\" to object\");return Object(e)}}),define(\"ace/lib/event_emitter\",[\"require\",\"exports\",\"module\"],function(e,t,n){var r={};r._emit=r._dispatchEvent=function(e,t){this._eventRegistry=this._eventRegistry||{},this._defaultHandlers=this._defaultHandlers||{};var n=this._eventRegistry[e]||[],r=this._defaultHandlers[e];if(!n.length&&!r)return;if(typeof t!=\"object\"||!t)t={};t.type||(t.type=e),t.stopPropagation||(t.stopPropagation=function(){this.propagationStopped=!0}),t.preventDefault||(t.preventDefault=function(){this.defaultPrevented=!0});for(var i=0;i<n.length;i++){n[i](t);if(t.propagationStopped)break}if(r&&!t.defaultPrevented)return r(t)},r.setDefaultHandler=function(e,t){this._defaultHandlers=this._defaultHandlers||{};if(this._defaultHandlers[e])throw new Error(\"The default handler for '\"+e+\"' is already set\");this._defaultHandlers[e]=t},r.on=r.addEventListener=function(e,t){this._eventRegistry=this._eventRegistry||{};var n=this._eventRegistry[e];n||(n=this._eventRegistry[e]=[]),n.indexOf(t)==-1&&n.push(t)},r.removeListener=r.removeEventListener=function(e,t){this._eventRegistry=this._eventRegistry||{};var n=this._eventRegistry[e];if(!n)return;var r=n.indexOf(t);r!==-1&&n.splice(r,1)},r.removeAllListeners=function(e){this._eventRegistry&&(this._eventRegistry[e]=[])},t.EventEmitter=r}),define(\"ace/lib/oop\",[\"require\",\"exports\",\"module\"],function(e,t,n){t.inherits=function(){var e=function(){};return function(t,n){e.prototype=n.prototype,t.super_=n.prototype,t.prototype=new e,t.prototype.constructor=t}}(),t.mixin=function(e,t){for(var n in t)e[n]=t[n]},t.implement=function(e,n){t.mixin(e,n)}}),define(\"ace/mode/css_worker\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/worker/mirror\",\"ace/mode/css/csslint\"],function(e,t,n){var r=e(\"../lib/oop\"),i=e(\"../lib/lang\"),s=e(\"../worker/mirror\").Mirror,o=e(\"./css/csslint\").CSSLint,u=t.Worker=function(e){s.call(this,e),this.setTimeout(400),this.ruleset=null,this.setDisabledRules(\"ids\"),this.setInfoRules(\"adjoining-classes|qualified-headings|zero-units|gradients|import|outline-none\")};r.inherits(u,s),function(){this.setInfoRules=function(e){typeof e==\"string\"&&(e=e.split(\"|\")),this.infoRules=i.arrayToMap(e),this.doc.getValue()&&this.deferredUpdate.schedule(100)},this.setDisabledRules=function(e){if(!e)this.ruleset=null;else{typeof e==\"string\"&&(e=e.split(\"|\"));var t={};o.getRules().forEach(function(e){t[e.id]=!0}),e.forEach(function(e){delete t[e]}),this.ruleset=t}this.doc.getValue()&&this.deferredUpdate.schedule(100)},this.onUpdate=function(){var e=this.doc.getValue(),t=this.infoRules,n=o.verify(e,this.ruleset);this.sender.emit(\"csslint\",n.messages.map(function(e){return{row:e.line-1,column:e.col-1,text:e.message,type:t[e.rule.id]?\"info\":e.type}}))}}.call(u.prototype)}),define(\"ace/lib/lang\",[\"require\",\"exports\",\"module\"],function(e,t,n){t.stringReverse=function(e){return e.split(\"\").reverse().join(\"\")},t.stringRepeat=function(e,t){var n=\"\";while(t>0){t&1&&(n+=e);if(t>>=1)e+=e}return n};var r=/^\\s\\s*/,i=/\\s\\s*$/;t.stringTrimLeft=function(e){return e.replace(r,\"\")},t.stringTrimRight=function(e){return e.replace(i,\"\")},t.copyObject=function(e){var t={};for(var n in e)t[n]=e[n];return t},t.copyArray=function(e){var t=[];for(var n=0,r=e.length;n<r;n++)e[n]&&typeof e[n]==\"object\"?t[n]=this.copyObject(e[n]):t[n]=e[n];return t},t.deepCopy=function(e){if(typeof e!=\"object\")return e;var t=e.constructor();for(var n in e)typeof e[n]==\"object\"?t[n]=this.deepCopy(e[n]):t[n]=e[n];return t},t.arrayToMap=function(e){var t={};for(var n=0;n<e.length;n++)t[e[n]]=1;return t},t.createMap=function(e){var t=Object.create(null);for(var n in e)t[n]=e[n];return t},t.arrayRemove=function(e,t){for(var n=0;n<=e.length;n++)t===e[n]&&e.splice(n,1)},t.escapeRegExp=function(e){return e.replace(/([.*+?^${}()|[\\]\\/\\\\])/g,\"\\\\$1\")},t.escapeHTML=function(e){return e.replace(/&/g,\"&#38;\").replace(/\"/g,\"&#34;\").replace(/'/g,\"&#39;\").replace(/</g,\"&#60;\")},t.getMatchOffsets=function(e,t){var n=[];return e.replace(t,function(e){n.push({offset:arguments[arguments.length-2],length:e.length})}),n},t.deferredCall=function(e){var t=null,n=function(){t=null,e()},r=function(e){return r.cancel(),t=setTimeout(n,e||0),r};return r.schedule=r,r.call=function(){return this.cancel(),e(),r},r.cancel=function(){return clearTimeout(t),t=null,r},r},t.delayedCall=function(e,t){var n=null,r=function(){n=null,e()},i=function(e){n&&clearTimeout(n),n=setTimeout(r,e||t)};return i.delay=i,i.schedule=function(e){n==null&&(n=setTimeout(r,e||0))},i.call=function(){this.cancel(),e()},i.cancel=function(){n&&clearTimeout(n),n=null},i.isPending=function(){return n},i}}),define(\"ace/worker/mirror\",[\"require\",\"exports\",\"module\",\"ace/document\",\"ace/lib/lang\"],function(e,t,n){var r=e(\"../document\").Document,i=e(\"../lib/lang\"),s=t.Mirror=function(e){this.sender=e;var t=this.doc=new r(\"\"),n=this.deferredUpdate=i.deferredCall(this.onUpdate.bind(this)),s=this;e.on(\"change\",function(e){t.applyDeltas([e.data]),n.schedule(s.$timeout)})};(function(){this.$timeout=500,this.setTimeout=function(e){this.$timeout=e},this.setValue=function(e){this.doc.setValue(e),this.deferredUpdate.schedule(this.$timeout)},this.getValue=function(e){this.sender.callback(this.doc.getValue(),e)},this.onUpdate=function(){}}).call(s.prototype)}),define(\"ace/document\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/event_emitter\",\"ace/range\",\"ace/anchor\"],function(e,t,n){var r=e(\"./lib/oop\"),i=e(\"./lib/event_emitter\").EventEmitter,s=e(\"./range\").Range,o=e(\"./anchor\").Anchor,u=function(e){this.$lines=[],e.length==0?this.$lines=[\"\"]:Array.isArray(e)?this.insertLines(0,e):this.insert({row:0,column:0},e)};(function(){r.implement(this,i),this.setValue=function(e){var t=this.getLength();this.remove(new s(0,0,t,this.getLine(t-1).length)),this.insert({row:0,column:0},e)},this.getValue=function(){return this.getAllLines().join(this.getNewLineCharacter())},this.createAnchor=function(e,t){return new o(this,e,t)},\"aaa\".split(/a/).length==0?this.$split=function(e){return e.replace(/\\r\\n|\\r/g,\"\\n\").split(\"\\n\")}:this.$split=function(e){return e.split(/\\r\\n|\\r|\\n/)},this.$detectNewLine=function(e){var t=e.match(/^.*?(\\r\\n|\\r|\\n)/m);t?this.$autoNewLine=t[1]:this.$autoNewLine=\"\\n\"},this.getNewLineCharacter=function(){switch(this.$newLineMode){case\"windows\":return\"\\r\\n\";case\"unix\":return\"\\n\";default:return this.$autoNewLine}},this.$autoNewLine=\"\\n\",this.$newLineMode=\"auto\",this.setNewLineMode=function(e){if(this.$newLineMode===e)return;this.$newLineMode=e},this.getNewLineMode=function(){return this.$newLineMode},this.isNewLine=function(e){return e==\"\\r\\n\"||e==\"\\r\"||e==\"\\n\"},this.getLine=function(e){return this.$lines[e]||\"\"},this.getLines=function(e,t){return this.$lines.slice(e,t+1)},this.getAllLines=function(){return this.getLines(0,this.getLength())},this.getLength=function(){return this.$lines.length},this.getTextRange=function(e){if(e.start.row==e.end.row)return this.$lines[e.start.row].substring(e.start.column,e.end.column);var t=this.getLines(e.start.row+1,e.end.row-1);return t.unshift((this.$lines[e.start.row]||\"\").substring(e.start.column)),t.push((this.$lines[e.end.row]||\"\").substring(0,e.end.column)),t.join(this.getNewLineCharacter())},this.$clipPosition=function(e){var t=this.getLength();return e.row>=t&&(e.row=Math.max(0,t-1),e.column=this.getLine(t-1).length),e},this.insert=function(e,t){if(!t||t.length===0)return e;e=this.$clipPosition(e),this.getLength()<=1&&this.$detectNewLine(t);var n=this.$split(t),r=n.splice(0,1)[0],i=n.length==0?null:n.splice(n.length-1,1)[0];return e=this.insertInLine(e,r),i!==null&&(e=this.insertNewLine(e),e=this.insertLines(e.row,n),e=this.insertInLine(e,i||\"\")),e},this.insertLines=function(e,t){if(t.length==0)return{row:e,column:0};if(t.length>65535){var n=this.insertLines(e,t.slice(65535));t=t.slice(0,65535)}var r=[e,0];r.push.apply(r,t),this.$lines.splice.apply(this.$lines,r);var i=new s(e,0,e+t.length,0),o={action:\"insertLines\",range:i,lines:t};return this._emit(\"change\",{data:o}),n||i.end},this.insertNewLine=function(e){e=this.$clipPosition(e);var t=this.$lines[e.row]||\"\";this.$lines[e.row]=t.substring(0,e.column),this.$lines.splice(e.row+1,0,t.substring(e.column,t.length));var n={row:e.row+1,column:0},r={action:\"insertText\",range:s.fromPoints(e,n),text:this.getNewLineCharacter()};return this._emit(\"change\",{data:r}),n},this.insertInLine=function(e,t){if(t.length==0)return e;var n=this.$lines[e.row]||\"\";this.$lines[e.row]=n.substring(0,e.column)+t+n.substring(e.column);var r={row:e.row,column:e.column+t.length},i={action:\"insertText\",range:s.fromPoints(e,r),text:t};return this._emit(\"change\",{data:i}),r},this.remove=function(e){e.start=this.$clipPosition(e.start),e.end=this.$clipPosition(e.end);if(e.isEmpty())return e.start;var t=e.start.row,n=e.end.row;if(e.isMultiLine()){var r=e.start.column==0?t:t+1,i=n-1;e.end.column>0&&this.removeInLine(n,0,e.end.column),i>=r&&this.removeLines(r,i),r!=t&&(this.removeInLine(t,e.start.column,this.getLine(t).length),this.removeNewLine(e.start.row))}else this.removeInLine(t,e.start.column,e.end.column);return e.start},this.removeInLine=function(e,t,n){if(t==n)return;var r=new s(e,t,e,n),i=this.getLine(e),o=i.substring(t,n),u=i.substring(0,t)+i.substring(n,i.length);this.$lines.splice(e,1,u);var a={action:\"removeText\",range:r,text:o};return this._emit(\"change\",{data:a}),r.start},this.removeLines=function(e,t){var n=new s(e,0,t+1,0),r=this.$lines.splice(e,t-e+1),i={action:\"removeLines\",range:n,nl:this.getNewLineCharacter(),lines:r};return this._emit(\"change\",{data:i}),r},this.removeNewLine=function(e){var t=this.getLine(e),n=this.getLine(e+1),r=new s(e,t.length,e+1,0),i=t+n;this.$lines.splice(e,2,i);var o={action:\"removeText\",range:r,text:this.getNewLineCharacter()};this._emit(\"change\",{data:o})},this.replace=function(e,t){if(t.length==0&&e.isEmpty())return e.start;if(t==this.getTextRange(e))return e.end;this.remove(e);if(t)var n=this.insert(e.start,t);else n=e.start;return n},this.applyDeltas=function(e){for(var t=0;t<e.length;t++){var n=e[t],r=s.fromPoints(n.range.start,n.range.end);n.action==\"insertLines\"?this.insertLines(r.start.row,n.lines):n.action==\"insertText\"?this.insert(r.start,n.text):n.action==\"removeLines\"?this.removeLines(r.start.row,r.end.row-1):n.action==\"removeText\"&&this.remove(r)}},this.revertDeltas=function(e){for(var t=e.length-1;t>=0;t--){var n=e[t],r=s.fromPoints(n.range.start,n.range.end);n.action==\"insertLines\"?this.removeLines(r.start.row,r.end.row-1):n.action==\"insertText\"?this.remove(r):n.action==\"removeLines\"?this.insertLines(r.start.row,n.lines):n.action==\"removeText\"&&this.insert(r.start,n.text)}},this.indexToPosition=function(e,t){var n=this.$lines||this.getAllLines(),r=this.getNewLineCharacter().length;for(var i=t||0,s=n.length;i<s;i++){e-=n[i].length+r;if(e<0)return{row:i,column:e+n[i].length+r}}return{row:s-1,column:n[s-1].length}},this.positionToIndex=function(e,t){var n=this.$lines||this.getAllLines(),r=this.getNewLineCharacter().length,i=0,s=Math.min(e.row,n.length);for(var o=t||0;o<s;++o)i+=n[o].length;return i+r*o+e.column}}).call(u.prototype),t.Document=u}),define(\"ace/range\",[\"require\",\"exports\",\"module\"],function(e,t,n){var r=function(e,t,n,r){this.start={row:e,column:t},this.end={row:n,column:r}};(function(){this.isEqual=function(e){return this.start.row==e.start.row&&this.end.row==e.end.row&&this.start.column==e.start.column&&this.end.column==e.end.column},this.toString=function(){return\"Range: [\"+this.start.row+\"/\"+this.start.column+\"] -> [\"+this.end.row+\"/\"+this.end.column+\"]\"},this.contains=function(e,t){return this.compare(e,t)==0},this.compareRange=function(e){var t,n=e.end,r=e.start;return t=this.compare(n.row,n.column),t==1?(t=this.compare(r.row,r.column),t==1?2:t==0?1:0):t==-1?-2:(t=this.compare(r.row,r.column),t==-1?-1:t==1?42:0)},this.comparePoint=function(e){return this.compare(e.row,e.column)},this.containsRange=function(e){return this.comparePoint(e.start)==0&&this.comparePoint(e.end)==0},this.intersects=function(e){var t=this.compareRange(e);return t==-1||t==0||t==1},this.isEnd=function(e,t){return this.end.row==e&&this.end.column==t},this.isStart=function(e,t){return this.start.row==e&&this.start.column==t},this.setStart=function(e,t){typeof e==\"object\"?(this.start.column=e.column,this.start.row=e.row):(this.start.row=e,this.start.column=t)},this.setEnd=function(e,t){typeof e==\"object\"?(this.end.column=e.column,this.end.row=e.row):(this.end.row=e,this.end.column=t)},this.inside=function(e,t){return this.compare(e,t)==0?this.isEnd(e,t)||this.isStart(e,t)?!1:!0:!1},this.insideStart=function(e,t){return this.compare(e,t)==0?this.isEnd(e,t)?!1:!0:!1},this.insideEnd=function(e,t){return this.compare(e,t)==0?this.isStart(e,t)?!1:!0:!1},this.compare=function(e,t){return!this.isMultiLine()&&e===this.start.row?t<this.start.column?-1:t>this.end.column?1:0:e<this.start.row?-1:e>this.end.row?1:this.start.row===e?t>=this.start.column?0:-1:this.end.row===e?t<=this.end.column?0:1:0},this.compareStart=function(e,t){return this.start.row==e&&this.start.column==t?-1:this.compare(e,t)},this.compareEnd=function(e,t){return this.end.row==e&&this.end.column==t?1:this.compare(e,t)},this.compareInside=function(e,t){return this.end.row==e&&this.end.column==t?1:this.start.row==e&&this.start.column==t?-1:this.compare(e,t)},this.clipRows=function(e,t){if(this.end.row>t)var n={row:t+1,column:0};if(this.start.row>t)var i={row:t+1,column:0};if(this.start.row<e)var i={row:e,column:0};if(this.end.row<e)var n={row:e,column:0};return r.fromPoints(i||this.start,n||this.end)},this.extend=function(e,t){var n=this.compare(e,t);if(n==0)return this;if(n==-1)var i={row:e,column:t};else var s={row:e,column:t};return r.fromPoints(i||this.start,s||this.end)},this.isEmpty=function(){return this.start.row==this.end.row&&this.start.column==this.end.column},this.isMultiLine=function(){return this.start.row!==this.end.row},this.clone=function(){return r.fromPoints(this.start,this.end)},this.collapseRows=function(){return this.end.column==0?new r(this.start.row,0,Math.max(this.start.row,this.end.row-1),0):new r(this.start.row,0,this.end.row,0)},this.toScreenRange=function(e){var t=e.documentToScreenPosition(this.start),n=e.documentToScreenPosition(this.end);return new r(t.row,t.column,n.row,n.column)}}).call(r.prototype),r.fromPoints=function(e,t){return new r(e.row,e.column,t.row,t.column)},t.Range=r}),define(\"ace/anchor\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/event_emitter\"],function(e,t,n){var r=e(\"./lib/oop\"),i=e(\"./lib/event_emitter\").EventEmitter,s=t.Anchor=function(e,t,n){this.document=e,typeof n==\"undefined\"?this.setPosition(t.row,t.column):this.setPosition(t,n),this.$onChange=this.onChange.bind(this),e.on(\"change\",this.$onChange)};(function(){r.implement(this,i),this.getPosition=function(){return this.$clipPositionToDocument(this.row,this.column)},this.getDocument=function(){return this.document},this.onChange=function(e){var t=e.data,n=t.range;if(n.start.row==n.end.row&&n.start.row!=this.row)return;if(n.start.row>this.row)return;if(n.start.row==this.row&&n.start.column>this.column)return;var r=this.row,i=this.column;t.action===\"insertText\"?n.start.row===r&&n.start.column<=i?n.start.row===n.end.row?i+=n.end.column-n.start.column:(i-=n.start.column,r+=n.end.row-n.start.row):n.start.row!==n.end.row&&n.start.row<r&&(r+=n.end.row-n.start.row):t.action===\"insertLines\"?n.start.row<=r&&(r+=n.end.row-n.start.row):t.action==\"removeText\"?n.start.row==r&&n.start.column<i?n.end.column>=i?i=n.start.column:i=Math.max(0,i-(n.end.column-n.start.column)):n.start.row!==n.end.row&&n.start.row<r?(n.end.row==r&&(i=Math.max(0,i-n.end.column)+n.start.column),r-=n.end.row-n.start.row):n.end.row==r&&(r-=n.end.row-n.start.row,i=Math.max(0,i-n.end.column)+n.start.column):t.action==\"removeLines\"&&n.start.row<=r&&(n.end.row<=r?r-=n.end.row-n.start.row:(r=n.start.row,i=0)),this.setPosition(r,i,!0)},this.setPosition=function(e,t,n){var r;n?r={row:e,column:t}:r=this.$clipPositionToDocument(e,t);if(this.row==r.row&&this.column==r.column)return;var i={row:this.row,column:this.column};this.row=r.row,this.column=r.column,this._emit(\"change\",{old:i,value:r})},this.detach=function(){this.document.removeEventListener(\"change\",this.$onChange)},this.$clipPositionToDocument=function(e,t){var n={};return e>=this.document.getLength()?(n.row=Math.max(0,this.document.getLength()-1),n.column=this.document.getLine(n.row).length):e<0?(n.row=0,n.column=0):(n.row=e,n.column=Math.min(this.document.getLine(n.row).length,Math.max(0,t))),t<0&&(n.column=0),n}}).call(s.prototype)}),define(\"ace/mode/css/csslint\",[\"require\",\"exports\",\"module\"],function(require,exports,module){function Reporter(e,t){this.messages=[],this.stats=[],this.lines=e,this.ruleset=t}var parserlib={};(function(){function e(){this._listeners={}}function t(e){this._input=e.replace(/\\n\\r?/g,\"\\n\"),this._line=1,this._col=1,this._cursor=0}function n(e,t,n){this.col=n,this.line=t,this.message=e}function r(e,t,n,r){this.col=n,this.line=t,this.text=e,this.type=r}function i(e,n){this._reader=e?new t(e.toString()):null,this._token=null,this._tokenData=n,this._lt=[],this._ltIndex=0,this._ltIndexCache=[]}e.prototype={constructor:e,addListener:function(e,t){this._listeners[e]||(this._listeners[e]=[]),this._listeners[e].push(t)},fire:function(e){typeof e==\"string\"&&(e={type:e}),typeof e.target!=\"undefined\"&&(e.target=this);if(typeof e.type==\"undefined\")throw new Error(\"Event object missing 'type' property.\");if(this._listeners[e.type]){var t=this._listeners[e.type].concat();for(var n=0,r=t.length;n<r;n++)t[n].call(this,e)}},removeListener:function(e,t){if(this._listeners[e]){var n=this._listeners[e];for(var r=0,i=n.length;r<i;r++)if(n[r]===t){n.splice(r,1);break}}}},t.prototype={constructor:t,getCol:function(){return this._col},getLine:function(){return this._line},eof:function(){return this._cursor==this._input.length},peek:function(e){var t=null;return e=typeof e==\"undefined\"?1:e,this._cursor<this._input.length&&(t=this._input.charAt(this._cursor+e-1)),t},read:function(){var e=null;return this._cursor<this._input.length&&(this._input.charAt(this._cursor)==\"\\n\"?(this._line++,this._col=1):this._col++,e=this._input.charAt(this._cursor++)),e},mark:function(){this._bookmark={cursor:this._cursor,line:this._line,col:this._col}},reset:function(){this._bookmark&&(this._cursor=this._bookmark.cursor,this._line=this._bookmark.line,this._col=this._bookmark.col,delete this._bookmark)},readTo:function(e){var t=\"\",n;while(t.length<e.length||t.lastIndexOf(e)!=t.length-e.length){n=this.read();if(!n)throw new Error('Expected \"'+e+'\" at line '+this._line+\", col \"+this._col+\".\");t+=n}return t},readWhile:function(e){var t=\"\",n=this.read();while(n!==null&&e(n))t+=n,n=this.read();return t},readMatch:function(e){var t=this._input.substring(this._cursor),n=null;return typeof e==\"string\"?t.indexOf(e)===0&&(n=this.readCount(e.length)):e instanceof RegExp&&e.test(t)&&(n=this.readCount(RegExp.lastMatch.length)),n},readCount:function(e){var t=\"\";while(e--)t+=this.read();return t}},n.prototype=new Error,r.fromToken=function(e){return new r(e.value,e.startLine,e.startCol)},r.prototype={constructor:r,valueOf:function(){return this.toString()},toString:function(){return this.text}},i.createTokenData=function(e){var t=[],n={},r=e.concat([]),i=0,s=r.length+1;r.UNKNOWN=-1,r.unshift({name:\"EOF\"});for(;i<s;i++)t.push(r[i].name),r[r[i].name]=i,r[i].text&&(n[r[i].text]=i);return r.name=function(e){return t[e]},r.type=function(e){return n[e]},r},i.prototype={constructor:i,match:function(e,t){e instanceof Array||(e=[e]);var n=this.get(t),r=0,i=e.length;while(r<i)if(n==e[r++])return!0;return this.unget(),!1},mustMatch:function(e,t){var r;e instanceof Array||(e=[e]);if(!this.match.apply(this,arguments))throw r=this.LT(1),new n(\"Expected \"+this._tokenData[e[0]].name+\" at line \"+r.startLine+\", col \"+r.startCol+\".\",r.startLine,r.startCol)},advance:function(e,t){while(this.LA(0)!==0&&!this.match(e,t))this.get();return this.LA(0)},get:function(e){var t=this._tokenData,n=this._reader,r,i=0,s=t.length,o=!1,u,a;if(this._lt.length&&this._ltIndex>=0&&this._ltIndex<this._lt.length){i++,this._token=this._lt[this._ltIndex++],a=t[this._token.type];while(a.channel!==undefined&&e!==a.channel&&this._ltIndex<this._lt.length)this._token=this._lt[this._ltIndex++],a=t[this._token.type],i++;if((a.channel===undefined||e===a.channel)&&this._ltIndex<=this._lt.length)return this._ltIndexCache.push(i),this._token.type}return u=this._getToken(),u.type>-1&&!t[u.type].hide&&(u.channel=t[u.type].channel,this._token=u,this._lt.push(u),this._ltIndexCache.push(this._lt.length-this._ltIndex+i),this._lt.length>5&&this._lt.shift(),this._ltIndexCache.length>5&&this._ltIndexCache.shift(),this._ltIndex=this._lt.length),a=t[u.type],a&&(a.hide||a.channel!==undefined&&e!==a.channel)?this.get(e):u.type},LA:function(e){var t=e,n;if(e>0){if(e>5)throw new Error(\"Too much lookahead.\");while(t)n=this.get(),t--;while(t<e)this.unget(),t++}else if(e<0){if(!this._lt[this._ltIndex+e])throw new Error(\"Too much lookbehind.\");n=this._lt[this._ltIndex+e].type}else n=this._token.type;return n},LT:function(e){return this.LA(e),this._lt[this._ltIndex+e-1]},peek:function(){return this.LA(1)},token:function(){return this._token},tokenName:function(e){return e<0||e>this._tokenData.length?\"UNKNOWN_TOKEN\":this._tokenData[e].name},tokenType:function(e){return this._tokenData[e]||-1},unget:function(){if(!this._ltIndexCache.length)throw new Error(\"Too much lookahead.\");this._ltIndex-=this._ltIndexCache.pop(),this._token=this._lt[this._ltIndex-1]}},parserlib.util={StringReader:t,SyntaxError:n,SyntaxUnit:r,EventTarget:e,TokenStreamBase:i}})(),function(){function Combinator(e,t,n){SyntaxUnit.call(this,e,t,n,Parser.COMBINATOR_TYPE),this.type=\"unknown\",/^\\s+$/.test(e)?this.type=\"descendant\":e==\">\"?this.type=\"child\":e==\"+\"?this.type=\"adjacent-sibling\":e==\"~\"&&(this.type=\"sibling\")}function MediaFeature(e,t){SyntaxUnit.call(this,\"(\"+e+(t!==null?\":\"+t:\"\")+\")\",e.startLine,e.startCol,Parser.MEDIA_FEATURE_TYPE),this.name=e,this.value=t}function MediaQuery(e,t,n,r,i){SyntaxUnit.call(this,(e?e+\" \":\"\")+(t?t+\" \":\"\")+n.join(\" and \"),r,i,Parser.MEDIA_QUERY_TYPE),this.modifier=e,this.mediaType=t,this.features=n}function Parser(e){EventTarget.call(this),this.options=e||{},this._tokenStream=null}function PropertyName(e,t,n,r){SyntaxUnit.call(this,e,n,r,Parser.PROPERTY_NAME_TYPE),this.hack=t}function PropertyValue(e,t,n){SyntaxUnit.call(this,e.join(\" \"),t,n,Parser.PROPERTY_VALUE_TYPE),this.parts=e}function PropertyValueIterator(e){this._i=0,this._parts=e.parts,this._marks=[],this.value=e}function PropertyValuePart(text,line,col){SyntaxUnit.call(this,text,line,col,Parser.PROPERTY_VALUE_PART_TYPE),this.type=\"unknown\";var temp;if(/^([+\\-]?[\\d\\.]+)([a-z]+)$/i.test(text)){this.type=\"dimension\",this.value=+RegExp.$1,this.units=RegExp.$2;switch(this.units.toLowerCase()){case\"em\":case\"rem\":case\"ex\":case\"px\":case\"cm\":case\"mm\":case\"in\":case\"pt\":case\"pc\":case\"ch\":this.type=\"length\";break;case\"deg\":case\"rad\":case\"grad\":this.type=\"angle\";break;case\"ms\":case\"s\":this.type=\"time\";break;case\"hz\":case\"khz\":this.type=\"frequency\";break;case\"dpi\":case\"dpcm\":this.type=\"resolution\"}}else/^([+\\-]?[\\d\\.]+)%$/i.test(text)?(this.type=\"percentage\",this.value=+RegExp.$1):/^([+\\-]?[\\d\\.]+)%$/i.test(text)?(this.type=\"percentage\",this.value=+RegExp.$1):/^([+\\-]?\\d+)$/i.test(text)?(this.type=\"integer\",this.value=+RegExp.$1):/^([+\\-]?[\\d\\.]+)$/i.test(text)?(this.type=\"number\",this.value=+RegExp.$1):/^#([a-f0-9]{3,6})/i.test(text)?(this.type=\"color\",temp=RegExp.$1,temp.length==3?(this.red=parseInt(temp.charAt(0)+temp.charAt(0),16),this.green=parseInt(temp.charAt(1)+temp.charAt(1),16),this.blue=parseInt(temp.charAt(2)+temp.charAt(2),16)):(this.red=parseInt(temp.substring(0,2),16),this.green=parseInt(temp.substring(2,4),16),this.blue=parseInt(temp.substring(4,6),16))):/^rgb\\(\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*\\)/i.test(text)?(this.type=\"color\",this.red=+RegExp.$1,this.green=+RegExp.$2,this.blue=+RegExp.$3):/^rgb\\(\\s*(\\d+)%\\s*,\\s*(\\d+)%\\s*,\\s*(\\d+)%\\s*\\)/i.test(text)?(this.type=\"color\",this.red=+RegExp.$1*255/100,this.green=+RegExp.$2*255/100,this.blue=+RegExp.$3*255/100):/^rgba\\(\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*([\\d\\.]+)\\s*\\)/i.test(text)?(this.type=\"color\",this.red=+RegExp.$1,this.green=+RegExp.$2,this.blue=+RegExp.$3,this.alpha=+RegExp.$4):/^rgba\\(\\s*(\\d+)%\\s*,\\s*(\\d+)%\\s*,\\s*(\\d+)%\\s*,\\s*([\\d\\.]+)\\s*\\)/i.test(text)?(this.type=\"color\",this.red=+RegExp.$1*255/100,this.green=+RegExp.$2*255/100,this.blue=+RegExp.$3*255/100,this.alpha=+RegExp.$4):/^hsl\\(\\s*(\\d+)\\s*,\\s*(\\d+)%\\s*,\\s*(\\d+)%\\s*\\)/i.test(text)?(this.type=\"color\",this.hue=+RegExp.$1,this.saturation=+RegExp.$2/100,this.lightness=+RegExp.$3/100):/^hsla\\(\\s*(\\d+)\\s*,\\s*(\\d+)%\\s*,\\s*(\\d+)%\\s*,\\s*([\\d\\.]+)\\s*\\)/i.test(text)?(this.type=\"color\",this.hue=+RegExp.$1,this.saturation=+RegExp.$2/100,this.lightness=+RegExp.$3/100,this.alpha=+RegExp.$4):/^url\\([\"']?([^\\)\"']+)[\"']?\\)/i.test(text)?(this.type=\"uri\",this.uri=RegExp.$1):/^([^\\(]+)\\(/i.test(text)?(this.type=\"function\",this.name=RegExp.$1,this.value=text):/^[\"'][^\"']*[\"']/.test(text)?(this.type=\"string\",this.value=eval(text)):Colors[text.toLowerCase()]?(this.type=\"color\",temp=Colors[text.toLowerCase()].substring(1),this.red=parseInt(temp.substring(0,2),16),this.green=parseInt(temp.substring(2,4),16),this.blue=parseInt(temp.substring(4,6),16)):/^[\\,\\/]$/.test(text)?(this.type=\"operator\",this.value=text):/^[a-z\\-\\u0080-\\uFFFF][a-z0-9\\-\\u0080-\\uFFFF]*$/i.test(text)&&(this.type=\"identifier\",this.value=text)}function Selector(e,t,n){SyntaxUnit.call(this,e.join(\" \"),t,n,Parser.SELECTOR_TYPE),this.parts=e,this.specificity=Specificity.calculate(this)}function SelectorPart(e,t,n,r,i){SyntaxUnit.call(this,n,r,i,Parser.SELECTOR_PART_TYPE),this.elementName=e,this.modifiers=t}function SelectorSubPart(e,t,n,r){SyntaxUnit.call(this,e,n,r,Parser.SELECTOR_SUB_PART_TYPE),this.type=t,this.args=[]}function Specificity(e,t,n,r){this.a=e,this.b=t,this.c=n,this.d=r}function isHexDigit(e){return e!==null&&h.test(e)}function isDigit(e){return e!==null&&/\\d/.test(e)}function isWhitespace(e){return e!==null&&/\\s/.test(e)}function isNewLine(e){return e!==null&&nl.test(e)}function isNameStart(e){return e!==null&&/[a-z_\\u0080-\\uFFFF\\\\]/i.test(e)}function isNameChar(e){return e!==null&&(isNameStart(e)||/[0-9\\-\\\\]/.test(e))}function isIdentStart(e){return e!==null&&(isNameStart(e)||/\\-\\\\/.test(e))}function mix(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);return e}function TokenStream(e){TokenStreamBase.call(this,e,Tokens)}function ValidationError(e,t,n){this.col=n,this.line=t,this.message=e}var EventTarget=parserlib.util.EventTarget,TokenStreamBase=parserlib.util.TokenStreamBase,StringReader=parserlib.util.StringReader,SyntaxError=parserlib.util.SyntaxError,SyntaxUnit=parserlib.util.SyntaxUnit,Colors={aliceblue:\"#f0f8ff\",antiquewhite:\"#faebd7\",aqua:\"#00ffff\",aquamarine:\"#7fffd4\",azure:\"#f0ffff\",beige:\"#f5f5dc\",bisque:\"#ffe4c4\",black:\"#000000\",blanchedalmond:\"#ffebcd\",blue:\"#0000ff\",blueviolet:\"#8a2be2\",brown:\"#a52a2a\",burlywood:\"#deb887\",cadetblue:\"#5f9ea0\",chartreuse:\"#7fff00\",chocolate:\"#d2691e\",coral:\"#ff7f50\",cornflowerblue:\"#6495ed\",cornsilk:\"#fff8dc\",crimson:\"#dc143c\",cyan:\"#00ffff\",darkblue:\"#00008b\",darkcyan:\"#008b8b\",darkgoldenrod:\"#b8860b\",darkgray:\"#a9a9a9\",darkgreen:\"#006400\",darkkhaki:\"#bdb76b\",darkmagenta:\"#8b008b\",darkolivegreen:\"#556b2f\",darkorange:\"#ff8c00\",darkorchid:\"#9932cc\",darkred:\"#8b0000\",darksalmon:\"#e9967a\",darkseagreen:\"#8fbc8f\",darkslateblue:\"#483d8b\",darkslategray:\"#2f4f4f\",darkturquoise:\"#00ced1\",darkviolet:\"#9400d3\",deeppink:\"#ff1493\",deepskyblue:\"#00bfff\",dimgray:\"#696969\",dodgerblue:\"#1e90ff\",firebrick:\"#b22222\",floralwhite:\"#fffaf0\",forestgreen:\"#228b22\",fuchsia:\"#ff00ff\",gainsboro:\"#dcdcdc\",ghostwhite:\"#f8f8ff\",gold:\"#ffd700\",goldenrod:\"#daa520\",gray:\"#808080\",green:\"#008000\",greenyellow:\"#adff2f\",honeydew:\"#f0fff0\",hotpink:\"#ff69b4\",indianred:\"#cd5c5c\",indigo:\"#4b0082\",ivory:\"#fffff0\",khaki:\"#f0e68c\",lavender:\"#e6e6fa\",lavenderblush:\"#fff0f5\",lawngreen:\"#7cfc00\",lemonchiffon:\"#fffacd\",lightblue:\"#add8e6\",lightcoral:\"#f08080\",lightcyan:\"#e0ffff\",lightgoldenrodyellow:\"#fafad2\",lightgray:\"#d3d3d3\",lightgreen:\"#90ee90\",lightpink:\"#ffb6c1\",lightsalmon:\"#ffa07a\",lightseagreen:\"#20b2aa\",lightskyblue:\"#87cefa\",lightslategray:\"#778899\",lightsteelblue:\"#b0c4de\",lightyellow:\"#ffffe0\",lime:\"#00ff00\",limegreen:\"#32cd32\",linen:\"#faf0e6\",magenta:\"#ff00ff\",maroon:\"#800000\",mediumaquamarine:\"#66cdaa\",mediumblue:\"#0000cd\",mediumorchid:\"#ba55d3\",mediumpurple:\"#9370d8\",mediumseagreen:\"#3cb371\",mediumslateblue:\"#7b68ee\",mediumspringgreen:\"#00fa9a\",mediumturquoise:\"#48d1cc\",mediumvioletred:\"#c71585\",midnightblue:\"#191970\",mintcream:\"#f5fffa\",mistyrose:\"#ffe4e1\",moccasin:\"#ffe4b5\",navajowhite:\"#ffdead\",navy:\"#000080\",oldlace:\"#fdf5e6\",olive:\"#808000\",olivedrab:\"#6b8e23\",orange:\"#ffa500\",orangered:\"#ff4500\",orchid:\"#da70d6\",palegoldenrod:\"#eee8aa\",palegreen:\"#98fb98\",paleturquoise:\"#afeeee\",palevioletred:\"#d87093\",papayawhip:\"#ffefd5\",peachpuff:\"#ffdab9\",peru:\"#cd853f\",pink:\"#ffc0cb\",plum:\"#dda0dd\",powderblue:\"#b0e0e6\",purple:\"#800080\",red:\"#ff0000\",rosybrown:\"#bc8f8f\",royalblue:\"#4169e1\",saddlebrown:\"#8b4513\",salmon:\"#fa8072\",sandybrown:\"#f4a460\",seagreen:\"#2e8b57\",seashell:\"#fff5ee\",sienna:\"#a0522d\",silver:\"#c0c0c0\",skyblue:\"#87ceeb\",slateblue:\"#6a5acd\",slategray:\"#708090\",snow:\"#fffafa\",springgreen:\"#00ff7f\",steelblue:\"#4682b4\",tan:\"#d2b48c\",teal:\"#008080\",thistle:\"#d8bfd8\",tomato:\"#ff6347\",turquoise:\"#40e0d0\",violet:\"#ee82ee\",wheat:\"#f5deb3\",white:\"#ffffff\",whitesmoke:\"#f5f5f5\",yellow:\"#ffff00\",yellowgreen:\"#9acd32\"};Combinator.prototype=new SyntaxUnit,Combinator.prototype.constructor=Combinator,MediaFeature.prototype=new SyntaxUnit,MediaFeature.prototype.constructor=MediaFeature,MediaQuery.prototype=new SyntaxUnit,MediaQuery.prototype.constructor=MediaQuery,Parser.DEFAULT_TYPE=0,Parser.COMBINATOR_TYPE=1,Parser.MEDIA_FEATURE_TYPE=2,Parser.MEDIA_QUERY_TYPE=3,Parser.PROPERTY_NAME_TYPE=4,Parser.PROPERTY_VALUE_TYPE=5,Parser.PROPERTY_VALUE_PART_TYPE=6,Parser.SELECTOR_TYPE=7,Parser.SELECTOR_PART_TYPE=8,Parser.SELECTOR_SUB_PART_TYPE=9,Parser.prototype=function(){var e=new EventTarget,t,n={constructor:Parser,DEFAULT_TYPE:0,COMBINATOR_TYPE:1,MEDIA_FEATURE_TYPE:2,MEDIA_QUERY_TYPE:3,PROPERTY_NAME_TYPE:4,PROPERTY_VALUE_TYPE:5,PROPERTY_VALUE_PART_TYPE:6,SELECTOR_TYPE:7,SELECTOR_PART_TYPE:8,SELECTOR_SUB_PART_TYPE:9,_stylesheet:function(){var e=this._tokenStream,t=null,n,r,i;this.fire(\"startstylesheet\"),this._charset(),this._skipCruft();while(e.peek()==Tokens.IMPORT_SYM)this._import(),this._skipCruft();while(e.peek()==Tokens.NAMESPACE_SYM)this._namespace(),this._skipCruft();i=e.peek();while(i>Tokens.EOF){try{switch(i){case Tokens.MEDIA_SYM:this._media(),this._skipCruft();break;case Tokens.PAGE_SYM:this._page(),this._skipCruft();break;case Tokens.FONT_FACE_SYM:this._font_face(),this._skipCruft();break;case Tokens.KEYFRAMES_SYM:this._keyframes(),this._skipCruft();break;case Tokens.UNKNOWN_SYM:e.get();if(!!this.options.strict)throw new SyntaxError(\"Unknown @ rule.\",e.LT(0).startLine,e.LT(0).startCol);this.fire({type:\"error\",error:null,message:\"Unknown @ rule: \"+e.LT(0).value+\".\",line:e.LT(0).startLine,col:e.LT(0).startCol}),n=0;while(e.advance([Tokens.LBRACE,Tokens.RBRACE])==Tokens.LBRACE)n++;while(n)e.advance([Tokens.RBRACE]),n--;break;case Tokens.S:this._readWhitespace();break;default:if(!this._ruleset())switch(i){case Tokens.CHARSET_SYM:throw r=e.LT(1),this._charset(!1),new SyntaxError(\"@charset not allowed here.\",r.startLine,r.startCol);case Tokens.IMPORT_SYM:throw r=e.LT(1),this._import(!1),new SyntaxError(\"@import not allowed here.\",r.startLine,r.startCol);case Tokens.NAMESPACE_SYM:throw r=e.LT(1),this._namespace(!1),new SyntaxError(\"@namespace not allowed here.\",r.startLine,r.startCol);default:e.get(),this._unexpectedToken(e.token())}}}catch(s){if(!(s instanceof SyntaxError&&!this.options.strict))throw s;this.fire({type:\"error\",error:s,message:s.message,line:s.line,col:s.col})}i=e.peek()}i!=Tokens.EOF&&this._unexpectedToken(e.token()),this.fire(\"endstylesheet\")},_charset:function(e){var t=this._tokenStream,n,r,i,s;t.match(Tokens.CHARSET_SYM)&&(i=t.token().startLine,s=t.token().startCol,this._readWhitespace(),t.mustMatch(Tokens.STRING),r=t.token(),n=r.value,this._readWhitespace(),t.mustMatch(Tokens.SEMICOLON),e!==!1&&this.fire({type:\"charset\",charset:n,line:i,col:s}))},_import:function(e){var t=this._tokenStream,n,r,i,s=[];t.mustMatch(Tokens.IMPORT_SYM),i=t.token(),this._readWhitespace(),t.mustMatch([Tokens.STRING,Tokens.URI]),r=t.token().value.replace(/(?:url\\()?[\"']([^\"']+)[\"']\\)?/,\"$1\"),this._readWhitespace(),s=this._media_query_list(),t.mustMatch(Tokens.SEMICOLON),this._readWhitespace(),e!==!1&&this.fire({type:\"import\",uri:r,media:s,line:i.startLine,col:i.startCol})},_namespace:function(e){var t=this._tokenStream,n,r,i,s;t.mustMatch(Tokens.NAMESPACE_SYM),n=t.token().startLine,r=t.token().startCol,this._readWhitespace(),t.match(Tokens.IDENT)&&(i=t.token().value,this._readWhitespace()),t.mustMatch([Tokens.STRING,Tokens.URI]),s=t.token().value.replace(/(?:url\\()?[\"']([^\"']+)[\"']\\)?/,\"$1\"),this._readWhitespace(),t.mustMatch(Tokens.SEMICOLON),this._readWhitespace(),e!==!1&&this.fire({type:\"namespace\",prefix:i,uri:s,line:n,col:r})},_media:function(){var e=this._tokenStream,t,n,r;e.mustMatch(Tokens.MEDIA_SYM),t=e.token().startLine,n=e.token().startCol,this._readWhitespace(),r=this._media_query_list(),e.mustMatch(Tokens.LBRACE),this._readWhitespace(),this.fire({type:\"startmedia\",media:r,line:t,col:n});for(;;)if(e.peek()==Tokens.PAGE_SYM)this._page();else if(!this._ruleset())break;e.mustMatch(Tokens.RBRACE),this._readWhitespace(),this.fire({type:\"endmedia\",media:r,line:t,col:n})},_media_query_list:function(){var e=this._tokenStream,t=[];this._readWhitespace(),(e.peek()==Tokens.IDENT||e.peek()==Tokens.LPAREN)&&t.push(this._media_query());while(e.match(Tokens.COMMA))this._readWhitespace(),t.push(this._media_query());return t},_media_query:function(){var e=this._tokenStream,t=null,n=null,r=null,i=[];e.match(Tokens.IDENT)&&(n=e.token().value.toLowerCase(),n!=\"only\"&&n!=\"not\"?(e.unget(),n=null):r=e.token()),this._readWhitespace(),e.peek()==Tokens.IDENT?(t=this._media_type(),r===null&&(r=e.token())):e.peek()==Tokens.LPAREN&&(r===null&&(r=e.LT(1)),i.push(this._media_expression()));if(t===null&&i.length===0)return null;this._readWhitespace();while(e.match(Tokens.IDENT))e.token().value.toLowerCase()!=\"and\"&&this._unexpectedToken(e.token()),this._readWhitespace(),i.push(this._media_expression());return new MediaQuery(n,t,i,r.startLine,r.startCol)},_media_type:function(){return this._media_feature()},_media_expression:function(){var e=this._tokenStream,t=null,n,r=null;return e.mustMatch(Tokens.LPAREN),t=this._media_feature(),this._readWhitespace(),e.match(Tokens.COLON)&&(this._readWhitespace(),n=e.LT(1),r=this._expression()),e.mustMatch(Tokens.RPAREN),this._readWhitespace(),new MediaFeature(t,r?new SyntaxUnit(r,n.startLine,n.startCol):null)},_media_feature:function(){var e=this._tokenStream;return e.mustMatch(Tokens.IDENT),SyntaxUnit.fromToken(e.token())},_page:function(){var e=this._tokenStream,t,n,r=null,i=null;e.mustMatch(Tokens.PAGE_SYM),t=e.token().startLine,n=e.token().startCol,this._readWhitespace(),e.match(Tokens.IDENT)&&(r=e.token().value,r.toLowerCase()===\"auto\"&&this._unexpectedToken(e.token())),e.peek()==Tokens.COLON&&(i=this._pseudo_page()),this._readWhitespace(),this.fire({type:\"startpage\",id:r,pseudo:i,line:t,col:n}),this._readDeclarations(!0,!0),this.fire({type:\"endpage\",id:r,pseudo:i,line:t,col:n})},_margin:function(){var e=this._tokenStream,t,n,r=this._margin_sym();return r?(t=e.token().startLine,n=e.token().startCol,this.fire({type:\"startpagemargin\",margin:r,line:t,col:n}),this._readDeclarations(!0),this.fire({type:\"endpagemargin\",margin:r,line:t,col:n}),!0):!1},_margin_sym:function(){var e=this._tokenStream;return e.match([Tokens.TOPLEFTCORNER_SYM,Tokens.TOPLEFT_SYM,Tokens.TOPCENTER_SYM,Tokens.TOPRIGHT_SYM,Tokens.TOPRIGHTCORNER_SYM,Tokens.BOTTOMLEFTCORNER_SYM,Tokens.BOTTOMLEFT_SYM,Tokens.BOTTOMCENTER_SYM,Tokens.BOTTOMRIGHT_SYM,Tokens.BOTTOMRIGHTCORNER_SYM,Tokens.LEFTTOP_SYM,Tokens.LEFTMIDDLE_SYM,Tokens.LEFTBOTTOM_SYM,Tokens.RIGHTTOP_SYM,Tokens.RIGHTMIDDLE_SYM,Tokens.RIGHTBOTTOM_SYM])?SyntaxUnit.fromToken(e.token()):null},_pseudo_page:function(){var e=this._tokenStream;return e.mustMatch(Tokens.COLON),e.mustMatch(Tokens.IDENT),e.token().value},_font_face:function(){var e=this._tokenStream,t,n;e.mustMatch(Tokens.FONT_FACE_SYM),t=e.token().startLine,n=e.token().startCol,this._readWhitespace(),this.fire({type:\"startfontface\",line:t,col:n}),this._readDeclarations(!0),this.fire({type:\"endfontface\",line:t,col:n})},_operator:function(){var e=this._tokenStream,t=null;return e.match([Tokens.SLASH,Tokens.COMMA])&&(t=e.token(),this._readWhitespace()),t?PropertyValuePart.fromToken(t):null},_combinator:function(){var e=this._tokenStream,t=null,n;return e.match([Tokens.PLUS,Tokens.GREATER,Tokens.TILDE])&&(n=e.token(),t=new Combinator(n.value,n.startLine,n.startCol),this._readWhitespace()),t},_unary_operator:function(){var e=this._tokenStream;return e.match([Tokens.MINUS,Tokens.PLUS])?e.token().value:null},_property:function(){var e=this._tokenStream,t=null,n=null,r,i,s,o;return e.peek()==Tokens.STAR&&this.options.starHack&&(e.get(),i=e.token(),n=i.value,s=i.startLine,o=i.startCol),e.match(Tokens.IDENT)&&(i=e.token(),r=i.value,r.charAt(0)==\"_\"&&this.options.underscoreHack&&(n=\"_\",r=r.substring(1)),t=new PropertyName(r,n,s||i.startLine,o||i.startCol),this._readWhitespace()),t},_ruleset:function(){var e=this._tokenStream,t,n;try{n=this._selectors_group()}catch(r){if(r instanceof SyntaxError&&!this.options.strict){this.fire({type:\"error\",error:r,message:r.message,line:r.line,col:r.col}),t=e.advance([Tokens.RBRACE]);if(t!=Tokens.RBRACE)throw r;return!0}throw r}return n&&(this.fire({type:\"startrule\",selectors:n,line:n[0].line,col:n[0].col}),this._readDeclarations(!0),this.fire({type:\"endrule\",selectors:n,line:n[0].line,col:n[0].col})),n},_selectors_group:function(){var e=this._tokenStream,t=[],n;n=this._selector();if(n!==null){t.push(n);while(e.match(Tokens.COMMA))this._readWhitespace(),n=this._selector(),n!==null?t.push(n):this._unexpectedToken(e.LT(1))}return t.length?t:null},_selector:function(){var e=this._tokenStream,t=[],n=null,r=null,i=null;n=this._simple_selector_sequence();if(n===null)return null;t.push(n);do{r=this._combinator();if(r!==null)t.push(r),n=this._simple_selector_sequence(),n===null?this._unexpectedToken(e.LT(1)):t.push(n);else{if(!this._readWhitespace())break;i=new Combinator(e.token().value,e.token().startLine,e.token().startCol),r=this._combinator(),n=this._simple_selector_sequence(),n===null?r!==null&&this._unexpectedToken(e.LT(1)):(r!==null?t.push(r):t.push(i),t.push(n))}}while(!0);return new Selector(t,t[0].line,t[0].col)},_simple_selector_sequence:function(){var e=this._tokenStream,t=null,n=[],r=\"\",i=[function(){return e.match(Tokens.HASH)?new SelectorSubPart(e.token().value,\"id\",e.token().startLine,e.token().startCol):null},this._class,this._attrib,this._pseudo,this._negation],s=0,o=i.length,u=null,a=!1,f,l;f=e.LT(1).startLine,l=e.LT(1).startCol,t=this._type_selector(),t||(t=this._universal()),t!==null&&(r+=t);for(;;){if(e.peek()===Tokens.S)break;while(s<o&&u===null)u=i[s++].call(this);if(u===null){if(r===\"\")return null;break}s=0,n.push(u),r+=u.toString(),u=null}return r!==\"\"?new SelectorPart(t,n,r,f,l):null},_type_selector:function(){var e=this._tokenStream,t=this._namespace_prefix(),n=this._element_name();return n?(t&&(n.text=t+n.text,n.col-=t.length),n):(t&&(e.unget(),t.length>1&&e.unget()),null)},_class:function(){var e=this._tokenStream,t;return e.match(Tokens.DOT)?(e.mustMatch(Tokens.IDENT),t=e.token(),new SelectorSubPart(\".\"+t.value,\"class\",t.startLine,t.startCol-1)):null},_element_name:function(){var e=this._tokenStream,t;return e.match(Tokens.IDENT)?(t=e.token(),new SelectorSubPart(t.value,\"elementName\",t.startLine,t.startCol)):null},_namespace_prefix:function(){var e=this._tokenStream,t=\"\";if(e.LA(1)===Tokens.PIPE||e.LA(2)===Tokens.PIPE)e.match([Tokens.IDENT,Tokens.STAR])&&(t+=e.token().value),e.mustMatch(Tokens.PIPE),t+=\"|\";return t.length?t:null},_universal:function(){var e=this._tokenStream,t=\"\",n;return n=this._namespace_prefix(),n&&(t+=n),e.match(Tokens.STAR)&&(t+=\"*\"),t.length?t:null},_attrib:function(){var e=this._tokenStream,t=null,n,r;return e.match(Tokens.LBRACKET)?(r=e.token(),t=r.value,t+=this._readWhitespace(),n=this._namespace_prefix(),n&&(t+=n),e.mustMatch(Tokens.IDENT),t+=e.token().value,t+=this._readWhitespace(),e.match([Tokens.PREFIXMATCH,Tokens.SUFFIXMATCH,Tokens.SUBSTRINGMATCH,Tokens.EQUALS,Tokens.INCLUDES,Tokens.DASHMATCH])&&(t+=e.token().value,t+=this._readWhitespace(),e.mustMatch([Tokens.IDENT,Tokens.STRING]),t+=e.token().value,t+=this._readWhitespace()),e.mustMatch(Tokens.RBRACKET),new SelectorSubPart(t+\"]\",\"attribute\",r.startLine,r.startCol)):null},_pseudo:function(){var e=this._tokenStream,t=null,n=\":\",r,i;return e.match(Tokens.COLON)&&(e.match(Tokens.COLON)&&(n+=\":\"),e.match(Tokens.IDENT)?(t=e.token().value,r=e.token().startLine,i=e.token().startCol-n.length):e.peek()==Tokens.FUNCTION&&(r=e.LT(1).startLine,i=e.LT(1).startCol-n.length,t=this._functional_pseudo()),t&&(t=new SelectorSubPart(n+t,\"pseudo\",r,i))),t},_functional_pseudo:function(){var e=this._tokenStream,t=null;return e.match(Tokens.FUNCTION)&&(t=e.token().value,t+=this._readWhitespace(),t+=this._expression(),e.mustMatch(Tokens.RPAREN),t+=\")\"),t},_expression:function(){var e=this._tokenStream,t=\"\";while(e.match([Tokens.PLUS,Tokens.MINUS,Tokens.DIMENSION,Tokens.NUMBER,Tokens.STRING,Tokens.IDENT,Tokens.LENGTH,Tokens.FREQ,Tokens.ANGLE,Tokens.TIME,Tokens.RESOLUTION]))t+=e.token().value,t+=this._readWhitespace();return t.length?t:null},_negation:function(){var e=this._tokenStream,t,n,r=\"\",i,s=null;return e.match(Tokens.NOT)&&(r=e.token().value,t=e.token().startLine,n=e.token().startCol,r+=this._readWhitespace(),i=this._negation_arg(),r+=i,r+=this._readWhitespace(),e.match(Tokens.RPAREN),r+=e.token().value,s=new SelectorSubPart(r,\"not\",t,n),s.args.push(i)),s},_negation_arg:function(){var e=this._tokenStream,t=[this._type_selector,this._universal,function(){return e.match(Tokens.HASH)?new SelectorSubPart(e.token().value,\"id\",e.token().startLine,e.token().startCol):null},this._class,this._attrib,this._pseudo],n=null,r=0,i=t.length,s,o,u,a;o=e.LT(1).startLine,u=e.LT(1).startCol;while(r<i&&n===null)n=t[r].call(this),r++;return n===null&&this._unexpectedToken(e.LT(1)),n.type==\"elementName\"?a=new SelectorPart(n,[],n.toString(),o,u):a=new SelectorPart(null,[n],n.toString(),o,u),a},_declaration:function(){var e=this._tokenStream,t=null,n=null,r=null,i=null,s=null,o=\"\";t=this._property();if(t!==null){e.mustMatch(Tokens.COLON),this._readWhitespace(),n=this._expr(),(!n||n.length===0)&&this._unexpectedToken(e.LT(1)),r=this._prio(),o=t.toString();if(this.options.starHack&&t.hack==\"*\"||this.options.underscoreHack&&t.hack==\"_\")o=t.text;try{this._validateProperty(o,n)}catch(u){s=u}return this.fire({type:\"property\",property:t,value:n,important:r,line:t.line,col:t.col,invalid:s}),!0}return!1},_prio:function(){var e=this._tokenStream,t=e.match(Tokens.IMPORTANT_SYM);return this._readWhitespace(),t},_expr:function(){var e=this._tokenStream,t=[],n=null,r=null;n=this._term();if(n!==null){t.push(n);do{r=this._operator(),r&&t.push(r),n=this._term();if(n===null)break;t.push(n)}while(!0)}return t.length>0?new PropertyValue(t,t[0].line,t[0].col):null},_term:function(){var e=this._tokenStream,t=null,n=null,r,i,s;return t=this._unary_operator(),t!==null&&(i=e.token().startLine,s=e.token().startCol),e.peek()==Tokens.IE_FUNCTION&&this.options.ieFilters?(n=this._ie_function(),t===null&&(i=e.token().startLine,s=e.token().startCol)):e.match([Tokens.NUMBER,Tokens.PERCENTAGE,Tokens.LENGTH,Tokens.ANGLE,Tokens.TIME,Tokens.FREQ,Tokens.STRING,Tokens.IDENT,Tokens.URI,Tokens.UNICODE_RANGE])?(n=e.token().value,t===null&&(i=e.token().startLine,s=e.token().startCol),this._readWhitespace()):(r=this._hexcolor(),r===null?(t===null&&(i=e.LT(1).startLine,s=e.LT(1).startCol),n===null&&(e.LA(3)==Tokens.EQUALS&&this.options.ieFilters?n=this._ie_function():n=this._function())):(n=r.value,t===null&&(i=r.startLine,s=r.startCol))),n!==null?new PropertyValuePart(t!==null?t+n:n,i,s):null},_function:function(){var e=this._tokenStream,t=null,n=null,r;if(e.match(Tokens.FUNCTION)){t=e.token().value,this._readWhitespace(),n=this._expr(),t+=n;if(this.options.ieFilters&&e.peek()==Tokens.EQUALS)do{this._readWhitespace()&&(t+=e.token().value),e.LA(0)==Tokens.COMMA&&(t+=e.token().value),e.match(Tokens.IDENT),t+=e.token().value,e.match(Tokens.EQUALS),t+=e.token().value,r=e.peek();while(r!=Tokens.COMMA&&r!=Tokens.S&&r!=Tokens.RPAREN)e.get(),t+=e.token().value,r=e.peek()}while(e.match([Tokens.COMMA,Tokens.S]));e.match(Tokens.RPAREN),t+=\")\",this._readWhitespace()}return t},_ie_function:function(){var e=this._tokenStream,t=null,n=null,r;if(e.match([Tokens.IE_FUNCTION,Tokens.FUNCTION])){t=e.token().value;do{this._readWhitespace()&&(t+=e.token().value),e.LA(0)==Tokens.COMMA&&(t+=e.token().value),e.match(Tokens.IDENT),t+=e.token().value,e.match(Tokens.EQUALS),t+=e.token().value,r=e.peek();while(r!=Tokens.COMMA&&r!=Tokens.S&&r!=Tokens.RPAREN)e.get(),t+=e.token().value,r=e.peek()}while(e.match([Tokens.COMMA,Tokens.S]));e.match(Tokens.RPAREN),t+=\")\",this._readWhitespace()}return t},_hexcolor:function(){var e=this._tokenStream,t=null,n;if(e.match(Tokens.HASH)){t=e.token(),n=t.value;if(!/#[a-f0-9]{3,6}/i.test(n))throw new SyntaxError(\"Expected a hex color but found '\"+n+\"' at line \"+t.startLine+\", col \"+t.startCol+\".\",t.startLine,t.startCol);this._readWhitespace()}return t},_keyframes:function(){var e=this._tokenStream,t,n,r,i=\"\";e.mustMatch(Tokens.KEYFRAMES_SYM),t=e.token(),/^@\\-([^\\-]+)\\-/.test(t.value)&&(i=RegExp.$1),this._readWhitespace(),r=this._keyframe_name(),this._readWhitespace(),e.mustMatch(Tokens.LBRACE),this.fire({type:\"startkeyframes\",name:r,prefix:i,line:t.startLine,col:t.startCol}),this._readWhitespace(),n=e.peek();while(n==Tokens.IDENT||n==Tokens.PERCENTAGE)this._keyframe_rule(),this._readWhitespace(),n=e.peek();this.fire({type:\"endkeyframes\",name:r,prefix:i,line:t.startLine,col:t.startCol}),this._readWhitespace(),e.mustMatch(Tokens.RBRACE)},_keyframe_name:function(){var e=this._tokenStream,t;return e.mustMatch([Tokens.IDENT,Tokens.STRING]),SyntaxUnit.fromToken(e.token())},_keyframe_rule:function(){var e=this._tokenStream,t,n=this._key_list();this.fire({type:\"startkeyframerule\",keys:n,line:n[0].line,col:n[0].col}),this._readDeclarations(!0),this.fire({type:\"endkeyframerule\",keys:n,line:n[0].line,col:n[0].col})},_key_list:function(){var e=this._tokenStream,t,n,r=[];r.push(this._key()),this._readWhitespace();while(e.match(Tokens.COMMA))this._readWhitespace(),r.push(this._key()),this._readWhitespace();return r},_key:function(){var e=this._tokenStream,t;if(e.match(Tokens.PERCENTAGE))return SyntaxUnit.fromToken(e.token());if(e.match(Tokens.IDENT)){t=e.token();if(/from|to/i.test(t.value))return SyntaxUnit.fromToken(t);e.unget()}this._unexpectedToken(e.LT(1))},_skipCruft:function(){while(this._tokenStream.match([Tokens.S,Tokens.CDO,Tokens.CDC]));},_readDeclarations:function(e,t){var n=this._tokenStream,r;this._readWhitespace(),e&&n.mustMatch(Tokens.LBRACE),this._readWhitespace();try{for(;;){if(!(n.match(Tokens.SEMICOLON)||t&&this._margin())){if(!this._declaration())break;if(!n.match(Tokens.SEMICOLON))break}this._readWhitespace()}n.mustMatch(Tokens.RBRACE),this._readWhitespace()}catch(i){if(!(i instanceof SyntaxError&&!this.options.strict))throw i;this.fire({type:\"error\",error:i,message:i.message,line:i.line,col:i.col}),r=n.advance([Tokens.SEMICOLON,Tokens.RBRACE]);if(r==Tokens.SEMICOLON)this._readDeclarations(!1,t);else if(r!=Tokens.RBRACE)throw i}},_readWhitespace:function(){var e=this._tokenStream,t=\"\";while(e.match(Tokens.S))t+=e.token().value;return t},_unexpectedToken:function(e){throw new SyntaxError(\"Unexpected token '\"+e.value+\"' at line \"+e.startLine+\", col \"+e.startCol+\".\",e.startLine,e.startCol)},_verifyEnd:function(){this._tokenStream.LA(1)!=Tokens.EOF&&this._unexpectedToken(this._tokenStream.LT(1))},_validateProperty:function(e,t){Validation.validate(e,t)},parse:function(e){this._tokenStream=new TokenStream(e,Tokens),this._stylesheet()},parseStyleSheet:function(e){return this.parse(e)},parseMediaQuery:function(e){this._tokenStream=new TokenStream(e,Tokens);var t=this._media_query();return this._verifyEnd(),t},parsePropertyValue:function(e){this._tokenStream=new TokenStream(e,Tokens),this._readWhitespace();var t=this._expr();return this._readWhitespace(),this._verifyEnd(),t},parseRule:function(e){this._tokenStream=new TokenStream(e,Tokens),this._readWhitespace();var t=this._ruleset();return this._readWhitespace(),this._verifyEnd(),t},parseSelector:function(e){this._tokenStream=new TokenStream(e,Tokens),this._readWhitespace();var t=this._selector();return this._readWhitespace(),this._verifyEnd(),t},parseStyleAttribute:function(e){e+=\"}\",this._tokenStream=new TokenStream(e,Tokens),this._readDeclarations()}};for(t in n)n.hasOwnProperty(t)&&(e[t]=n[t]);return e}();var Properties={\"alignment-adjust\":\"auto | baseline | before-edge | text-before-edge | middle | central | after-edge | text-after-edge | ideographic | alphabetic | hanging | mathematical | <percentage> | <length>\",\"alignment-baseline\":\"baseline | use-script | before-edge | text-before-edge | after-edge | text-after-edge | central | middle | ideographic | alphabetic | hanging | mathematical\",animation:1,\"animation-delay\":{multi:\"<time>\",comma:!0},\"animation-direction\":{multi:\"normal | alternate\",comma:!0},\"animation-duration\":{multi:\"<time>\",comma:!0},\"animation-iteration-count\":{multi:\"<number> | infinite\",comma:!0},\"animation-name\":{multi:\"none | <ident>\",comma:!0},\"animation-play-state\":{multi:\"running | paused\",comma:!0},\"animation-timing-function\":1,\"-moz-animation-delay\":{multi:\"<time>\",comma:!0},\"-moz-animation-direction\":{multi:\"normal | alternate\",comma:!0},\"-moz-animation-duration\":{multi:\"<time>\",comma:!0},\"-moz-animation-iteration-count\":{multi:\"<number> | infinite\",comma:!0},\"-moz-animation-name\":{multi:\"none | <ident>\",comma:!0},\"-moz-animation-play-state\":{multi:\"running | paused\",comma:!0},\"-ms-animation-delay\":{multi:\"<time>\",comma:!0},\"-ms-animation-direction\":{multi:\"normal | alternate\",comma:!0},\"-ms-animation-duration\":{multi:\"<time>\",comma:!0},\"-ms-animation-iteration-count\":{multi:\"<number> | infinite\",comma:!0},\"-ms-animation-name\":{multi:\"none | <ident>\",comma:!0},\"-ms-animation-play-state\":{multi:\"running | paused\",comma:!0},\"-webkit-animation-delay\":{multi:\"<time>\",comma:!0},\"-webkit-animation-direction\":{multi:\"normal | alternate\",comma:!0},\"-webkit-animation-duration\":{multi:\"<time>\",comma:!0},\"-webkit-animation-iteration-count\":{multi:\"<number> | infinite\",comma:!0},\"-webkit-animation-name\":{multi:\"none | <ident>\",comma:!0},\"-webkit-animation-play-state\":{multi:\"running | paused\",comma:!0},\"-o-animation-delay\":{multi:\"<time>\",comma:!0},\"-o-animation-direction\":{multi:\"normal | alternate\",comma:!0},\"-o-animation-duration\":{multi:\"<time>\",comma:!0},\"-o-animation-iteration-count\":{multi:\"<number> | infinite\",comma:!0},\"-o-animation-name\":{multi:\"none | <ident>\",comma:!0},\"-o-animation-play-state\":{multi:\"running | paused\",comma:!0},appearance:\"icon | window | desktop | workspace | document | tooltip | dialog | button | push-button | hyperlink | radio-button | checkbox | menu-item | tab | menu | menubar | pull-down-menu | pop-up-menu | list-menu | radio-group | checkbox-group | outline-tree | range | field | combo-box | signature | password | normal | inherit\",azimuth:function(e){var t=\"<angle> | leftwards | rightwards | inherit\",n=\"left-side | far-left | left | center-left | center | center-right | right | far-right | right-side\",r=!1,i=!1,s;ValidationTypes.isAny(e,t)||(ValidationTypes.isAny(e,\"behind\")&&(r=!0,i=!0),ValidationTypes.isAny(e,n)&&(i=!0,r||ValidationTypes.isAny(e,\"behind\")));if(e.hasNext())throw s=e.next(),i?new ValidationError(\"Expected end of value but found '\"+s+\"'.\",s.line,s.col):new ValidationError(\"Expected (<'azimuth'>) but found '\"+s+\"'.\",s.line,s.col)},\"backface-visibility\":\"visible | hidden\",background:1,\"background-attachment\":{multi:\"<attachment>\",comma:!0},\"background-clip\":{multi:\"<box>\",comma:!0},\"background-color\":\"<color> | inherit\",\"background-image\":{multi:\"<bg-image>\",comma:!0},\"background-origin\":{multi:\"<box>\",comma:!0},\"background-position\":{multi:\"<bg-position>\",comma:!0},\"background-repeat\":{multi:\"<repeat-style>\"},\"background-size\":{multi:\"<bg-size>\",comma:!0},\"baseline-shift\":\"baseline | sub | super | <percentage> | <length>\",behavior:1,binding:1,bleed:\"<length>\",\"bookmark-label\":\"<content> | <attr> | <string>\",\"bookmark-level\":\"none | <integer>\",\"bookmark-state\":\"open | closed\",\"bookmark-target\":\"none | <uri> | <attr>\",border:\"<border-width> || <border-style> || <color>\",\"border-bottom\":\"<border-width> || <border-style> || <color>\",\"border-bottom-color\":\"<color>\",\"border-bottom-left-radius\":\"<x-one-radius>\",\"border-bottom-right-radius\":\"<x-one-radius>\",\"border-bottom-style\":\"<border-style>\",\"border-bottom-width\":\"<border-width>\",\"border-collapse\":\"collapse | separate | inherit\",\"border-color\":{multi:\"<color> | inherit\",max:4},\"border-image\":1,\"border-image-outset\":{multi:\"<length> | <number>\",max:4},\"border-image-repeat\":{multi:\"stretch | repeat | round\",max:2},\"border-image-slice\":function(e){var t=!1,n=\"<number> | <percentage>\",r=!1,i=0,s=4,o;ValidationTypes.isAny(e,\"fill\")&&(r=!0,t=!0);while(e.hasNext()&&i<s){t=ValidationTypes.isAny(e,n);if(!t)break;i++}r?t=!0:ValidationTypes.isAny(e,\"fill\");if(e.hasNext())throw o=e.next(),t?new ValidationError(\"Expected end of value but found '\"+o+\"'.\",o.line,o.col):new ValidationError(\"Expected ([<number> | <percentage>]{1,4} && fill?) but found '\"+o+\"'.\",o.line,o.col)},\"border-image-source\":\"<image> | none\",\"border-image-width\":{multi:\"<length> | <percentage> | <number> | auto\",max:4},\"border-left\":\"<border-width> || <border-style> || <color>\",\"border-left-color\":\"<color> | inherit\",\"border-left-style\":\"<border-style>\",\"border-left-width\":\"<border-width>\",\"border-radius\":function(e){var t=!1,n=\"<length> | <percentage>\",r=!1,i=!1,s=0,o=8,u;while(e.hasNext()&&s<o){t=ValidationTypes.isAny(e,n);if(!t){if(!(e.peek()==\"/\"&&s>1&&!r))break;r=!0,o=s+5,e.next()}s++}if(e.hasNext())throw u=e.next(),t?new ValidationError(\"Expected end of value but found '\"+u+\"'.\",u.line,u.col):new ValidationError(\"Expected (<'border-radius'>) but found '\"+u+\"'.\",u.line,u.col)},\"border-right\":\"<border-width> || <border-style> || <color>\",\"border-right-color\":\"<color> | inherit\",\"border-right-style\":\"<border-style>\",\"border-right-width\":\"<border-width>\",\"border-spacing\":{multi:\"<length> | inherit\",max:2},\"border-style\":{multi:\"<border-style>\",max:4},\"border-top\":\"<border-width> || <border-style> || <color>\",\"border-top-color\":\"<color> | inherit\",\"border-top-left-radius\":\"<x-one-radius>\",\"border-top-right-radius\":\"<x-one-radius>\",\"border-top-style\":\"<border-style>\",\"border-top-width\":\"<border-width>\",\"border-width\":{multi:\"<border-width>\",max:4},bottom:\"<margin-width> | inherit\",\"box-align\":\"start | end | center | baseline | stretch\",\"box-decoration-break\":\"slice |clone\",\"box-direction\":\"normal | reverse | inherit\",\"box-flex\":\"<number>\",\"box-flex-group\":\"<integer>\",\"box-lines\":\"single | multiple\",\"box-ordinal-group\":\"<integer>\",\"box-orient\":\"horizontal | vertical | inline-axis | block-axis | inherit\",\"box-pack\":\"start | end | center | justify\",\"box-shadow\":function(e){var t=!1,n;if(!ValidationTypes.isAny(e,\"none\"))Validation.multiProperty(\"<shadow>\",e,!0,Infinity);else if(e.hasNext())throw n=e.next(),new ValidationError(\"Expected end of value but found '\"+n+\"'.\",n.line,n.col)},\"box-sizing\":\"content-box | border-box | inherit\",\"break-after\":\"auto | always | avoid | left | right | page | column | avoid-page | avoid-column\",\"break-before\":\"auto | always | avoid | left | right | page | column | avoid-page | avoid-column\",\"break-inside\":\"auto | avoid | avoid-page | avoid-column\",\"caption-side\":\"top | bottom | inherit\",clear:\"none | right | left | both | inherit\",clip:1,color:\"<color> | inherit\",\"color-profile\":1,\"column-count\":\"<integer> | auto\",\"column-fill\":\"auto | balance\",\"column-gap\":\"<length> | normal\",\"column-rule\":\"<border-width> || <border-style> || <color>\",\"column-rule-color\":\"<color>\",\"column-rule-style\":\"<border-style>\",\"column-rule-width\":\"<border-width>\",\"column-span\":\"none | all\",\"column-width\":\"<length> | auto\",columns:1,content:1,\"counter-increment\":1,\"counter-reset\":1,crop:\"<shape> | auto\",cue:\"cue-after | cue-before | inherit\",\"cue-after\":1,\"cue-before\":1,cursor:1,direction:\"ltr | rtl | inherit\",display:\"inline | block | list-item | inline-block | table | inline-table | table-row-group | table-header-group | table-footer-group | table-row | table-column-group | table-column | table-cell | table-caption | box | inline-box | grid | inline-grid | none | inherit\",\"dominant-baseline\":1,\"drop-initial-after-adjust\":\"central | middle | after-edge | text-after-edge | ideographic | alphabetic | mathematical | <percentage> | <length>\",\"drop-initial-after-align\":\"baseline | use-script | before-edge | text-before-edge | after-edge | text-after-edge | central | middle | ideographic | alphabetic | hanging | mathematical\",\"drop-initial-before-adjust\":\"before-edge | text-before-edge | central | middle | hanging | mathematical | <percentage> | <length>\",\"drop-initial-before-align\":\"caps-height | baseline | use-script | before-edge | text-before-edge | after-edge | text-after-edge | central | middle | ideographic | alphabetic | hanging | mathematical\",\"drop-initial-size\":\"auto | line | <length> | <percentage>\",\"drop-initial-value\":\"initial | <integer>\",elevation:\"<angle> | below | level | above | higher | lower | inherit\",\"empty-cells\":\"show | hide | inherit\",filter:1,fit:\"fill | hidden | meet | slice\",\"fit-position\":1,\"float\":\"left | right | none | inherit\",\"float-offset\":1,font:1,\"font-family\":1,\"font-size\":\"<absolute-size> | <relative-size> | <length> | <percentage> | inherit\",\"font-size-adjust\":\"<number> | none | inherit\",\"font-stretch\":\"normal | ultra-condensed | extra-condensed | condensed | semi-condensed | semi-expanded | expanded | extra-expanded | ultra-expanded | inherit\",\"font-style\":\"normal | italic | oblique | inherit\",\"font-variant\":\"normal | small-caps | inherit\",\"font-weight\":\"normal | bold | bolder | lighter | 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900 | inherit\",\"grid-cell-stacking\":\"columns | rows | layer\",\"grid-column\":1,\"grid-columns\":1,\"grid-column-align\":\"start | end | center | stretch\",\"grid-column-sizing\":1,\"grid-column-span\":\"<integer>\",\"grid-flow\":\"none | rows | columns\",\"grid-layer\":\"<integer>\",\"grid-row\":1,\"grid-rows\":1,\"grid-row-align\":\"start | end | center | stretch\",\"grid-row-span\":\"<integer>\",\"grid-row-sizing\":1,\"hanging-punctuation\":1,height:\"<margin-width> | inherit\",\"hyphenate-after\":\"<integer> | auto\",\"hyphenate-before\":\"<integer> | auto\",\"hyphenate-character\":\"<string> | auto\",\"hyphenate-lines\":\"no-limit | <integer>\",\"hyphenate-resource\":1,hyphens:\"none | manual | auto\",icon:1,\"image-orientation\":\"angle | auto\",\"image-rendering\":1,\"image-resolution\":1,\"inline-box-align\":\"initial | last | <integer>\",left:\"<margin-width> | inherit\",\"letter-spacing\":\"<length> | normal | inherit\",\"line-height\":\"<number> | <length> | <percentage> | normal | inherit\",\"line-break\":\"auto | loose | normal | strict\",\"line-stacking\":1,\"line-stacking-ruby\":\"exclude-ruby | include-ruby\",\"line-stacking-shift\":\"consider-shifts | disregard-shifts\",\"line-stacking-strategy\":\"inline-line-height | block-line-height | max-height | grid-height\",\"list-style\":1,\"list-style-image\":\"<uri> | none | inherit\",\"list-style-position\":\"inside | outside | inherit\",\"list-style-type\":\"disc | circle | square | decimal | decimal-leading-zero | lower-roman | upper-roman | lower-greek | lower-latin | upper-latin | armenian | georgian | lower-alpha | upper-alpha | none | inherit\",margin:{multi:\"<margin-width> | inherit\",max:4},\"margin-bottom\":\"<margin-width> | inherit\",\"margin-left\":\"<margin-width> | inherit\",\"margin-right\":\"<margin-width> | inherit\",\"margin-top\":\"<margin-width> | inherit\",mark:1,\"mark-after\":1,\"mark-before\":1,marks:1,\"marquee-direction\":1,\"marquee-play-count\":1,\"marquee-speed\":1,\"marquee-style\":1,\"max-height\":\"<length> | <percentage> | none | inherit\",\"max-width\":\"<length> | <percentage> | none | inherit\",\"min-height\":\"<length> | <percentage> | inherit\",\"min-width\":\"<length> | <percentage> | inherit\",\"move-to\":1,\"nav-down\":1,\"nav-index\":1,\"nav-left\":1,\"nav-right\":1,\"nav-up\":1,opacity:\"<number> | inherit\",orphans:\"<integer> | inherit\",outline:1,\"outline-color\":\"<color> | invert | inherit\",\"outline-offset\":1,\"outline-style\":\"<border-style> | inherit\",\"outline-width\":\"<border-width> | inherit\",overflow:\"visible | hidden | scroll | auto | inherit\",\"overflow-style\":1,\"overflow-x\":1,\"overflow-y\":1,padding:{multi:\"<padding-width> | inherit\",max:4},\"padding-bottom\":\"<padding-width> | inherit\",\"padding-left\":\"<padding-width> | inherit\",\"padding-right\":\"<padding-width> | inherit\",\"padding-top\":\"<padding-width> | inherit\",page:1,\"page-break-after\":\"auto | always | avoid | left | right | inherit\",\"page-break-before\":\"auto | always | avoid | left | right | inherit\",\"page-break-inside\":\"auto | avoid | inherit\",\"page-policy\":1,pause:1,\"pause-after\":1,\"pause-before\":1,perspective:1,\"perspective-origin\":1,phonemes:1,pitch:1,\"pitch-range\":1,\"play-during\":1,\"pointer-events\":\"auto | none | visiblePainted | visibleFill | visibleStroke | visible | painted | fill | stroke | all | inherit\",position:\"static | relative | absolute | fixed | inherit\",\"presentation-level\":1,\"punctuation-trim\":1,quotes:1,\"rendering-intent\":1,resize:1,rest:1,\"rest-after\":1,\"rest-before\":1,richness:1,right:\"<margin-width> | inherit\",rotation:1,\"rotation-point\":1,\"ruby-align\":1,\"ruby-overhang\":1,\"ruby-position\":1,\"ruby-span\":1,size:1,speak:\"normal | none | spell-out | inherit\",\"speak-header\":\"once | always | inherit\",\"speak-numeral\":\"digits | continuous | inherit\",\"speak-punctuation\":\"code | none | inherit\",\"speech-rate\":1,src:1,stress:1,\"string-set\":1,\"table-layout\":\"auto | fixed | inherit\",\"tab-size\":\"<integer> | <length>\",target:1,\"target-name\":1,\"target-new\":1,\"target-position\":1,\"text-align\":\"left | right | center | justify | inherit\",\"text-align-last\":1,\"text-decoration\":1,\"text-emphasis\":1,\"text-height\":1,\"text-indent\":\"<length> | <percentage> | inherit\",\"text-justify\":\"auto | none | inter-word | inter-ideograph | inter-cluster | distribute | kashida\",\"text-outline\":1,\"text-overflow\":1,\"text-rendering\":\"auto | optimizeSpeed | optimizeLegibility | geometricPrecision | inherit\",\"text-shadow\":1,\"text-transform\":\"capitalize | uppercase | lowercase | none | inherit\",\"text-wrap\":\"normal | none | avoid\",top:\"<margin-width> | inherit\",transform:1,\"transform-origin\":1,\"transform-style\":1,transition:1,\"transition-delay\":1,\"transition-duration\":1,\"transition-property\":1,\"transition-timing-function\":1,\"unicode-bidi\":\"normal | embed | bidi-override | inherit\",\"user-modify\":\"read-only | read-write | write-only | inherit\",\"user-select\":\"none | text | toggle | element | elements | all | inherit\",\"vertical-align\":\"<percentage> | <length> | baseline | sub | super | top | text-top | middle | bottom | text-bottom | inherit\",visibility:\"visible | hidden | collapse | inherit\",\"voice-balance\":1,\"voice-duration\":1,\"voice-family\":1,\"voice-pitch\":1,\"voice-pitch-range\":1,\"voice-rate\":1,\"voice-stress\":1,\"voice-volume\":1,volume:1,\"white-space\":\"normal | pre | nowrap | pre-wrap | pre-line | inherit\",\"white-space-collapse\":1,widows:\"<integer> | inherit\",width:\"<length> | <percentage> | auto | inherit\",\"word-break\":\"normal | keep-all | break-all\",\"word-spacing\":\"<length> | normal | inherit\",\"word-wrap\":1,\"z-index\":\"<integer> | auto | inherit\",zoom:\"<number> | <percentage> | normal\"};PropertyName.prototype=new SyntaxUnit,PropertyName.prototype.constructor=PropertyName,PropertyName.prototype.toString=function(){return(this.hack?this.hack:\"\")+this.text},PropertyValue.prototype=new SyntaxUnit,PropertyValue.prototype.constructor=PropertyValue,PropertyValueIterator.prototype.count=function(){return this._parts.length},PropertyValueIterator.prototype.isFirst=function(){return this._i===0},PropertyValueIterator.prototype.hasNext=function(){return this._i<this._parts.length},PropertyValueIterator.prototype.mark=function(){this._marks.push(this._i)},PropertyValueIterator.prototype.peek=function(e){return this.hasNext()?this._parts[this._i+(e||0)]:null},PropertyValueIterator.prototype.next=function(){return this.hasNext()?this._parts[this._i++]:null},PropertyValueIterator.prototype.previous=function(){return this._i>0?this._parts[--this._i]:null},PropertyValueIterator.prototype.restore=function(){this._marks.length&&(this._i=this._marks.pop())},PropertyValuePart.prototype=new SyntaxUnit,PropertyValuePart.prototype.constructor=PropertyValuePart,PropertyValuePart.fromToken=function(e){return new PropertyValuePart(e.value,e.startLine,e.startCol)};var Pseudos={\":first-letter\":1,\":first-line\":1,\":before\":1,\":after\":1};Pseudos.ELEMENT=1,Pseudos.CLASS=2,Pseudos.isElement=function(e){return e.indexOf(\"::\")===0||Pseudos[e.toLowerCase()]==Pseudos.ELEMENT},Selector.prototype=new SyntaxUnit,Selector.prototype.constructor=Selector,SelectorPart.prototype=new SyntaxUnit,SelectorPart.prototype.constructor=SelectorPart,SelectorSubPart.prototype=new SyntaxUnit,SelectorSubPart.prototype.constructor=SelectorSubPart,Specificity.prototype={constructor:Specificity,compare:function(e){var t=[\"a\",\"b\",\"c\",\"d\"],n,r;for(n=0,r=t.length;n<r;n++){if(this[t[n]]<e[t[n]])return-1;if(this[t[n]]>e[t[n]])return 1}return 0},valueOf:function(){return this.a*1e3+this.b*100+this.c*10+this.d},toString:function(){return this.a+\",\"+this.b+\",\"+this.c+\",\"+this.d}},Specificity.calculate=function(e){function u(e){var t,n,r,a,f=e.elementName?e.elementName.text:\"\",l;f&&f.charAt(f.length-1)!=\"*\"&&o++;for(t=0,r=e.modifiers.length;t<r;t++){l=e.modifiers[t];switch(l.type){case\"class\":case\"attribute\":s++;break;case\"id\":i++;break;case\"pseudo\":Pseudos.isElement(l.text)?o++:s++;break;case\"not\":for(n=0,a=l.args.length;n<a;n++)u(l.args[n])}}}var t,n,r,i=0,s=0,o=0;for(t=0,n=e.parts.length;t<n;t++)r=e.parts[t],r instanceof SelectorPart&&u(r);return new Specificity(0,i,s,o)};var h=/^[0-9a-fA-F]$/,nonascii=/^[\\u0080-\\uFFFF]$/,nl=/\\n|\\r\\n|\\r|\\f/;TokenStream.prototype=mix(new TokenStreamBase,{_getToken:function(e){var t,n=this._reader,r=null,i=n.getLine(),s=n.getCol();t=n.read();while(t){switch(t){case\"/\":n.peek()==\"*\"?r=this.commentToken(t,i,s):r=this.charToken(t,i,s);break;case\"|\":case\"~\":case\"^\":case\"$\":case\"*\":n.peek()==\"=\"?r=this.comparisonToken(t,i,s):r=this.charToken(t,i,s);break;case'\"':case\"'\":r=this.stringToken(t,i,s);break;case\"#\":isNameChar(n.peek())?r=this.hashToken(t,i,s):r=this.charToken(t,i,s);break;case\".\":isDigit(n.peek())?r=this.numberToken(t,i,s):r=this.charToken(t,i,s);break;case\"-\":n.peek()==\"-\"?r=this.htmlCommentEndToken(t,i,s):isNameStart(n.peek())?r=this.identOrFunctionToken(t,i,s):r=this.charToken(t,i,s);break;case\"!\":r=this.importantToken(t,i,s);break;case\"@\":r=this.atRuleToken(t,i,s);break;case\":\":r=this.notToken(t,i,s);break;case\"<\":r=this.htmlCommentStartToken(t,i,s);break;case\"U\":case\"u\":if(n.peek()==\"+\"){r=this.unicodeRangeToken(t,i,s);break};default:isDigit(t)?r=this.numberToken(t,i,s):isWhitespace(t)?r=this.whitespaceToken(t,i,s):isIdentStart(t)?r=this.identOrFunctionToken(t,i,s):r=this.charToken(t,i,s)}break}return!r&&t===null&&(r=this.createToken(Tokens.EOF,null,i,s)),r},createToken:function(e,t,n,r,i){var s=this._reader;return i=i||{},{value:t,type:e,channel:i.channel,hide:i.hide||!1,startLine:n,startCol:r,endLine:s.getLine(),endCol:s.getCol()}},atRuleToken:function(e,t,n){var r=e,i=this._reader,s=Tokens.CHAR,o=!1,u,a;i.mark(),u=this.readName(),r=e+u,s=Tokens.type(r.toLowerCase());if(s==Tokens.CHAR||s==Tokens.UNKNOWN)r.length>1?s=Tokens.UNKNOWN_SYM:(s=Tokens.CHAR,r=e,i.reset());return this.createToken(s,r,t,n)},charToken:function(e,t,n){var r=Tokens.type(e);return r==-1&&(r=Tokens.CHAR),this.createToken(r,e,t,n)},commentToken:function(e,t,n){var r=this._reader,i=this.readComment(e);return this.createToken(Tokens.COMMENT,i,t,n)},comparisonToken:function(e,t,n){var r=this._reader,i=e+r.read(),s=Tokens.type(i)||Tokens.CHAR;return this.createToken(s,i,t,n)},hashToken:function(e,t,n){var r=this._reader,i=this.readName(e);return this.createToken(Tokens.HASH,i,t,n)},htmlCommentStartToken:function(e,t,n){var r=this._reader,i=e;return r.mark(),i+=r.readCount(3),i==\"<!--\"?this.createToken(Tokens.CDO,i,t,n):(r.reset(),this.charToken(e,t,n))},htmlCommentEndToken:function(e,t,n){var r=this._reader,i=e;return r.mark(),i+=r.readCount(2),i==\"-->\"?this.createToken(Tokens.CDC,i,t,n):(r.reset(),this.charToken(e,t,n))},identOrFunctionToken:function(e,t,n){var r=this._reader,i=this.readName(e),s=Tokens.IDENT;return r.peek()==\"(\"?(i+=r.read(),i.toLowerCase()==\"url(\"?(s=Tokens.URI,i=this.readURI(i),i.toLowerCase()==\"url(\"&&(s=Tokens.FUNCTION)):s=Tokens.FUNCTION):r.peek()==\":\"&&i.toLowerCase()==\"progid\"&&(i+=r.readTo(\"(\"),s=Tokens.IE_FUNCTION),this.createToken(s,i,t,n)},importantToken:function(e,t,n){var r=this._reader,i=e,s=Tokens.CHAR,o,u;r.mark(),u=r.read();while(u){if(u==\"/\"){if(r.peek()!=\"*\")break;o=this.readComment(u);if(o===\"\")break}else{if(!isWhitespace(u)){if(/i/i.test(u)){o=r.readCount(8),/mportant/i.test(o)&&(i+=u+o,s=Tokens.IMPORTANT_SYM);break}break}i+=u+this.readWhitespace()}u=r.read()}return s==Tokens.CHAR?(r.reset(),this.charToken(e,t,n)):this.createToken(s,i,t,n)},notToken:function(e,t,n){var r=this._reader,i=e;return r.mark(),i+=r.readCount(4),i.toLowerCase()==\":not(\"?this.createToken(Tokens.NOT,i,t,n):(r.reset(),this.charToken(e,t,n))},numberToken:function(e,t,n){var r=this._reader,i=this.readNumber(e),s,o=Tokens.NUMBER,u=r.peek();return isIdentStart(u)?(s=this.readName(r.read()),i+=s,/^em$|^ex$|^px$|^gd$|^rem$|^vw$|^vh$|^vm$|^ch$|^cm$|^mm$|^in$|^pt$|^pc$/i.test(s)?o=Tokens.LENGTH:/^deg|^rad$|^grad$/i.test(s)?o=Tokens.ANGLE:/^ms$|^s$/i.test(s)?o=Tokens.TIME:/^hz$|^khz$/i.test(s)?o=Tokens.FREQ:/^dpi$|^dpcm$/i.test(s)?o=Tokens.RESOLUTION:o=Tokens.DIMENSION):u==\"%\"&&(i+=r.read(),o=Tokens.PERCENTAGE),this.createToken(o,i,t,n)},stringToken:function(e,t,n){var r=e,i=e,s=this._reader,o=e,u=Tokens.STRING,a=s.read();while(a){i+=a;if(a==r&&o!=\"\\\\\")break;if(isNewLine(s.peek())&&a!=\"\\\\\"){u=Tokens.INVALID;break}o=a,a=s.read()}return a===null&&(u=Tokens.INVALID),this.createToken(u,i,t,n)},unicodeRangeToken:function(e,t,n){var r=this._reader,i=e,s,o=Tokens.CHAR;return r.peek()==\"+\"&&(r.mark(),i+=r.read(),i+=this.readUnicodeRangePart(!0),i.length==2?r.reset():(o=Tokens.UNICODE_RANGE,i.indexOf(\"?\")==-1&&r.peek()==\"-\"&&(r.mark(),s=r.read(),s+=this.readUnicodeRangePart(!1),s.length==1?r.reset():i+=s))),this.createToken(o,i,t,n)},whitespaceToken:function(e,t,n){var r=this._reader,i=e+this.readWhitespace();return this.createToken(Tokens.S,i,t,n)},readUnicodeRangePart:function(e){var t=this._reader,n=\"\",r=t.peek();while(isHexDigit(r)&&n.length<6)t.read(),n+=r,r=t.peek();if(e)while(r==\"?\"&&n.length<6)t.read(),n+=r,r=t.peek();return n},readWhitespace:function(){var e=this._reader,t=\"\",n=e.peek();while(isWhitespace(n))e.read(),t+=n,n=e.peek();return t},readNumber:function(e){var t=this._reader,n=e,r=e==\".\",i=t.peek();while(i){if(isDigit(i))n+=t.read();else{if(i!=\".\")break;if(r)break;r=!0,n+=t.read()}i=t.peek()}return n},readString:function(){var e=this._reader,t=e.read(),n=t,r=t,i=e.peek();while(i){i=e.read(),n+=i;if(i==t&&r!=\"\\\\\")break;if(isNewLine(e.peek())&&i!=\"\\\\\"){n=\"\";break}r=i,i=e.peek()}return i===null&&(n=\"\"),n},readURI:function(e){var t=this._reader,n=e,r=\"\",i=t.peek();t.mark();while(i&&isWhitespace(i))t.read(),i=t.peek();i==\"'\"||i=='\"'?r=this.readString():r=this.readURL(),i=t.peek();while(i&&isWhitespace(i))t.read(),i=t.peek();return r===\"\"||i!=\")\"?(n=e,t.reset()):n+=r+t.read(),n},readURL:function(){var e=this._reader,t=\"\",n=e.peek();while(/^[!#$%&\\\\*-~]$/.test(n))t+=e.read(),n=e.peek();return t},readName:function(e){var t=this._reader,n=e||\"\",r=t.peek();for(;;)if(r==\"\\\\\")n+=this.readEscape(t.read()),r=t.peek();else{if(!r||!isNameChar(r))break;n+=t.read(),r=t.peek()}return n},readEscape:function(e){var t=this._reader,n=e||\"\",r=0,i=t.peek();if(isHexDigit(i))do n+=t.read(),i=t.peek();while(i&&isHexDigit(i)&&++r<6);return n.length==3&&/\\s/.test(i)||n.length==7||n.length==1?t.read():i=\"\",n+i},readComment:function(e){var t=this._reader,n=e||\"\",r=t.read();if(r==\"*\"){while(r){n+=r;if(n.length>2&&r==\"*\"&&t.peek()==\"/\"){n+=t.read();break}r=t.read()}return n}return\"\"}});var Tokens=[{name:\"CDO\"},{name:\"CDC\"},{name:\"S\",whitespace:!0},{name:\"COMMENT\",comment:!0,hide:!0,channel:\"comment\"},{name:\"INCLUDES\",text:\"~=\"},{name:\"DASHMATCH\",text:\"|=\"},{name:\"PREFIXMATCH\",text:\"^=\"},{name:\"SUFFIXMATCH\",text:\"$=\"},{name:\"SUBSTRINGMATCH\",text:\"*=\"},{name:\"STRING\"},{name:\"IDENT\"},{name:\"HASH\"},{name:\"IMPORT_SYM\",text:\"@import\"},{name:\"PAGE_SYM\",text:\"@page\"},{name:\"MEDIA_SYM\",text:\"@media\"},{name:\"FONT_FACE_SYM\",text:\"@font-face\"},{name:\"CHARSET_SYM\",text:\"@charset\"},{name:\"NAMESPACE_SYM\",text:\"@namespace\"},{name:\"UNKNOWN_SYM\"},{name:\"KEYFRAMES_SYM\",text:[\"@keyframes\",\"@-webkit-keyframes\",\"@-moz-keyframes\",\"@-o-keyframes\"]},{name:\"IMPORTANT_SYM\"},{name:\"LENGTH\"},{name:\"ANGLE\"},{name:\"TIME\"},{name:\"FREQ\"},{name:\"DIMENSION\"},{name:\"PERCENTAGE\"},{name:\"NUMBER\"},{name:\"URI\"},{name:\"FUNCTION\"},{name:\"UNICODE_RANGE\"},{name:\"INVALID\"},{name:\"PLUS\",text:\"+\"},{name:\"GREATER\",text:\">\"},{name:\"COMMA\",text:\",\"},{name:\"TILDE\",text:\"~\"},{name:\"NOT\"},{name:\"TOPLEFTCORNER_SYM\",text:\"@top-left-corner\"},{name:\"TOPLEFT_SYM\",text:\"@top-left\"},{name:\"TOPCENTER_SYM\",text:\"@top-center\"},{name:\"TOPRIGHT_SYM\",text:\"@top-right\"},{name:\"TOPRIGHTCORNER_SYM\",text:\"@top-right-corner\"},{name:\"BOTTOMLEFTCORNER_SYM\",text:\"@bottom-left-corner\"},{name:\"BOTTOMLEFT_SYM\",text:\"@bottom-left\"},{name:\"BOTTOMCENTER_SYM\",text:\"@bottom-center\"},{name:\"BOTTOMRIGHT_SYM\",text:\"@bottom-right\"},{name:\"BOTTOMRIGHTCORNER_SYM\",text:\"@bottom-right-corner\"},{name:\"LEFTTOP_SYM\",text:\"@left-top\"},{name:\"LEFTMIDDLE_SYM\",text:\"@left-middle\"},{name:\"LEFTBOTTOM_SYM\",text:\"@left-bottom\"},{name:\"RIGHTTOP_SYM\",text:\"@right-top\"},{name:\"RIGHTMIDDLE_SYM\",text:\"@right-middle\"},{name:\"RIGHTBOTTOM_SYM\",text:\"@right-bottom\"},{name:\"RESOLUTION\",state:\"media\"},{name:\"IE_FUNCTION\"},{name:\"CHAR\"},{name:\"PIPE\",text:\"|\"},{name:\"SLASH\",text:\"/\"},{name:\"MINUS\",text:\"-\"},{name:\"STAR\",text:\"*\"},{name:\"LBRACE\",text:\"{\"},{name:\"RBRACE\",text:\"}\"},{name:\"LBRACKET\",text:\"[\"},{name:\"RBRACKET\",text:\"]\"},{name:\"EQUALS\",text:\"=\"},{name:\"COLON\",text:\":\"},{name:\"SEMICOLON\",text:\";\"},{name:\"LPAREN\",text:\"(\"},{name:\"RPAREN\",text:\")\"},{name:\"DOT\",text:\".\"}];(function(){var e=[],t={};Tokens.UNKNOWN=-1,Tokens.unshift({name:\"EOF\"});for(var n=0,r=Tokens.length;n<r;n++){e.push(Tokens[n].name),Tokens[Tokens[n].name]=n;if(Tokens[n].text)if(Tokens[n].text instanceof Array)for(var i=0;i<Tokens[n].text.length;i++)t[Tokens[n].text[i]]=n;else t[Tokens[n].text]=n}Tokens.name=function(t){return e[t]},Tokens.type=function(e){return t[e]||-1}})();var Validation={validate:function(e,t){var n=e.toString().toLowerCase(),r=t.parts,i=new PropertyValueIterator(t),s=Properties[n],o,u,a,f,l,c,h,p,d,v,m;if(!s){if(n.indexOf(\"-\")!==0)throw new ValidationError(\"Unknown property '\"+e+\"'.\",e.line,e.col)}else typeof s!=\"number\"&&(typeof s==\"string\"?s.indexOf(\"||\")>-1?this.groupProperty(s,i):this.singleProperty(s,i,1):s.multi?this.multiProperty(s.multi,i,s.comma,s.max||Infinity):typeof s==\"function\"&&s(i))},singleProperty:function(e,t,n,r){var i=!1,s=t.value,o=0,u;while(t.hasNext()&&o<n){i=ValidationTypes.isAny(t,e);if(!i)break;o++}if(!i)throw t.hasNext()&&!t.isFirst()?(u=t.peek(),new ValidationError(\"Expected end of value but found '\"+u+\"'.\",u.line,u.col)):new ValidationError(\"Expected (\"+e+\") but found '\"+s+\"'.\",s.line,s.col);if(t.hasNext())throw u=t.next(),new ValidationError(\"Expected end of value but found '\"+u+\"'.\",u.line,u.col)},multiProperty:function(e,t,n,r){var i=!1,s=t.value,o=0,u=!1,a;while(t.hasNext()&&!i&&o<r){if(!ValidationTypes.isAny(t,e))break;o++;if(!t.hasNext())i=!0;else if(n){if(t.peek()!=\",\")break;a=t.next()}}if(!i)throw t.hasNext()&&!t.isFirst()?(a=t.peek(),new ValidationError(\"Expected end of value but found '\"+a+\"'.\",a.line,a.col)):(a=t.previous(),n&&a==\",\"?new ValidationError(\"Expected end of value but found '\"+a+\"'.\",a.line,a.col):new ValidationError(\"Expected (\"+e+\") but found '\"+s+\"'.\",s.line,s.col));if(t.hasNext())throw a=t.next(),new ValidationError(\"Expected end of value but found '\"+a+\"'.\",a.line,a.col)},groupProperty:function(e,t,n){var r=!1,i=t.value,s=e.split(\"||\").length,o={count:0},u=!1,a,f;while(t.hasNext()&&!r){a=ValidationTypes.isAnyOfGroup(t,e);if(!a)break;if(o[a])break;o[a]=1,o.count++,u=!0;if(o.count==s||!t.hasNext())r=!0}if(!r)throw u&&t.hasNext()?(f=t.peek(),new ValidationError(\"Expected end of value but found '\"+f+\"'.\",f.line,f.col)):new ValidationError(\"Expected (\"+e+\") but found '\"+i+\"'.\",i.line,i.col);if(t.hasNext())throw f=t.next(),new ValidationError(\"Expected end of value but found '\"+f+\"'.\",f.line,f.col)}};ValidationError.prototype=new Error;var ValidationTypes={isLiteral:function(e,t){var n=e.text.toString().toLowerCase(),r=t.split(\" | \"),i,s,o=!1;for(i=0,s=r.length;i<s&&!o;i++)n==r[i].toLowerCase()&&(o=!0);return o},isSimple:function(e){return!!this.simple[e]},isComplex:function(e){return!!this.complex[e]},isAny:function(e,t){var n=t.split(\" | \"),r,i,s=!1;for(r=0,i=n.length;r<i&&!s&&e.hasNext();r++)s=this.isType(e,n[r]);return s},isAnyOfGroup:function(e,t){var n=t.split(\" || \"),r,i,s=!1;for(r=0,i=n.length;r<i&&!s;r++)s=this.isType(e,n[r]);return s?n[r-1]:!1},isType:function(e,t){var n=e.peek(),r=!1;return t.charAt(0)!=\"<\"?(r=this.isLiteral(n,t),r&&e.next()):this.simple[t]?(r=this.simple[t](n),r&&e.next()):r=this.complex[t](e),r},simple:{\"<absolute-size>\":function(e){return ValidationTypes.isLiteral(e,\"xx-small | x-small | small | medium | large | x-large | xx-large\")},\"<attachment>\":function(e){return ValidationTypes.isLiteral(e,\"scroll | fixed | local\")},\"<attr>\":function(e){return e.type==\"function\"&&e.name==\"attr\"},\"<bg-image>\":function(e){return this[\"<image>\"](e)||this[\"<gradient>\"](e)||e==\"none\"},\"<gradient>\":function(e){return e.type==\"function\"&&/^(?:\\-(?:ms|moz|o|webkit)\\-)?(?:repeating\\-)?(?:radial\\-|linear\\-)?gradient/i.test(e)},\"<box>\":function(e){return ValidationTypes.isLiteral(e,\"padding-box | border-box | content-box\")},\"<content>\":function(e){return e.type==\"function\"&&e.name==\"content\"},\"<relative-size>\":function(e){return ValidationTypes.isLiteral(e,\"smaller | larger\")},\"<ident>\":function(e){return e.type==\"identifier\"},\"<length>\":function(e){return e.type==\"length\"||e.type==\"number\"||e.type==\"integer\"||e==\"0\"},\"<color>\":function(e){return e.type==\"color\"||e==\"transparent\"},\"<number>\":function(e){return e.type==\"number\"||this[\"<integer>\"](e)},\"<integer>\":function(e){return e.type==\"integer\"},\"<line>\":function(e){return e.type==\"integer\"},\"<angle>\":function(e){return e.type==\"angle\"},\"<uri>\":function(e){return e.type==\"uri\"},\"<image>\":function(e){return this[\"<uri>\"](e)},\"<percentage>\":function(e){return e.type==\"percentage\"||e==\"0\"},\"<border-width>\":function(e){return this[\"<length>\"](e)||ValidationTypes.isLiteral(e,\"thin | medium | thick\")},\"<border-style>\":function(e){return ValidationTypes.isLiteral(e,\"none | hidden | dotted | dashed | solid | double | groove | ridge | inset | outset\")},\"<margin-width>\":function(e){return this[\"<length>\"](e)||this[\"<percentage>\"](e)||ValidationTypes.isLiteral(e,\"auto\")},\"<padding-width>\":function(e){return this[\"<length>\"](e)||this[\"<percentage>\"](e)},\"<shape>\":function(e){return e.type==\"function\"&&(e.name==\"rect\"||e.name==\"inset-rect\")},\"<time>\":function(e){return e.type==\"time\"}},complex:{\"<bg-position>\":function(e){var t=this,n=!1,r=\"<percentage> | <length>\",i=\"left | center | right\",s=\"top | center | bottom\",o,u,a;return ValidationTypes.isAny(e,\"top | bottom\")?n=!0:ValidationTypes.isAny(e,r)?e.hasNext()&&(n=ValidationTypes.isAny(e,r+\" | \"+s)):ValidationTypes.isAny(e,i)&&e.hasNext()&&(ValidationTypes.isAny(e,s)?(n=!0,ValidationTypes.isAny(e,r)):ValidationTypes.isAny(e,r)&&(ValidationTypes.isAny(e,s)&&ValidationTypes.isAny(e,r),n=!0)),n},\"<bg-size>\":function(e){var t=this,n=!1,r=\"<percentage> | <length> | auto\",i,s,o;return ValidationTypes.isAny(e,\"cover | contain\")?n=!0:ValidationTypes.isAny(e,r)&&(n=!0,ValidationTypes.isAny(e,r)),n},\"<repeat-style>\":function(e){var t=!1,n=\"repeat | space | round | no-repeat\",r;return e.hasNext()&&(r=e.next(),ValidationTypes.isLiteral(r,\"repeat-x | repeat-y\")?t=!0:ValidationTypes.isLiteral(r,n)&&(t=!0,e.hasNext()&&ValidationTypes.isLiteral(e.peek(),n)&&e.next())),t},\"<shadow>\":function(e){var t=!1,n=0,r=!1,i=!1,s;if(e.hasNext()){ValidationTypes.isAny(e,\"inset\")&&(r=!0),ValidationTypes.isAny(e,\"<color>\")&&(i=!0);while(ValidationTypes.isAny(e,\"<length>\")&&n<4)n++;e.hasNext()&&(i||ValidationTypes.isAny(e,\"<color>\"),r||ValidationTypes.isAny(e,\"inset\")),t=n>=2&&n<=4}return t},\"<x-one-radius>\":function(e){var t=!1,n=0,r=\"<length> | <percentage>\",i;return ValidationTypes.isAny(e,r)&&(t=!0,ValidationTypes.isAny(e,r)),t}}};parserlib.css={Colors:Colors,Combinator:Combinator,Parser:Parser,PropertyName:PropertyName,PropertyValue:PropertyValue,PropertyValuePart:PropertyValuePart,MediaFeature:MediaFeature,MediaQuery:MediaQuery,Selector:Selector,SelectorPart:SelectorPart,SelectorSubPart:SelectorSubPart,Specificity:Specificity,TokenStream:TokenStream,Tokens:Tokens,ValidationError:ValidationError}}();var CSSLint=function(){var e=[],t=[],n=new parserlib.util.EventTarget;return n.version=\"0.9.9\",n.addRule=function(t){e.push(t),e[t.id]=t},n.clearRules=function(){e=[]},n.getRules=function(){return[].concat(e).sort(function(e,t){return e.id>t.id?1:0})},n.getRuleset=function(){var t={},n=0,r=e.length;while(n<r)t[e[n++].id]=1;return t},n.addFormatter=function(e){t[e.id]=e},n.getFormatter=function(e){return t[e]},n.format=function(e,t,n,r){var i=this.getFormatter(n),s=null;return i&&(s=i.startFormat(),s+=i.formatResults(e,t,r||{}),s+=i.endFormat()),s},n.hasFormat=function(e){return t.hasOwnProperty(e)},n.verify=function(t,n){var r=0,i=e.length,s,o,u,a=new parserlib.css.Parser({starHack:!0,ieFilters:!0,underscoreHack:!0,strict:!1});o=t.replace(/\\n\\r?/g,\"$split$\").split(\"$split$\"),n||(n=this.getRuleset()),s=new Reporter(o,n),n.errors=2;for(r in n)n.hasOwnProperty(r)&&e[r]&&e[r].init(a,s);try{a.parse(t)}catch(f){s.error(\"Fatal error, cannot continue: \"+f.message,f.line,f.col,{})}return u={messages:s.messages,stats:s.stats},u.messages.sort(function(e,t){return e.rollup&&!t.rollup?1:!e.rollup&&t.rollup?-1:e.line-t.line}),u},n}();Reporter.prototype={constructor:Reporter,error:function(e,t,n,r){this.messages.push({type:\"error\",line:t,col:n,message:e,evidence:this.lines[t-1],rule:r||{}})},warn:function(e,t,n,r){this.report(e,t,n,r)},report:function(e,t,n,r){this.messages.push({type:this.ruleset[r.id]==2?\"error\":\"warning\",line:t,col:n,message:e,evidence:this.lines[t-1],rule:r})},info:function(e,t,n,r){this.messages.push({type:\"info\",line:t,col:n,message:e,evidence:this.lines[t-1],rule:r})},rollupError:function(e,t){this.messages.push({type:\"error\",rollup:!0,message:e,rule:t})},rollupWarn:function(e,t){this.messages.push({type:\"warning\",rollup:!0,message:e,rule:t})},stat:function(e,t){this.stats[e]=t}},CSSLint._Reporter=Reporter,CSSLint.Util={mix:function(e,t){var n;for(n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);return n},indexOf:function(e,t){if(e.indexOf)return e.indexOf(t);for(var n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1},forEach:function(e,t){if(e.forEach)return e.forEach(t);for(var n=0,r=e.length;n<r;n++)t(e[n],n,e)}},CSSLint.addRule({id:\"adjoining-classes\",name:\"Disallow adjoining classes\",desc:\"Don't use adjoining classes.\",browsers:\"IE6\",init:function(e,t){var n=this;e.addListener(\"startrule\",function(r){var i=r.selectors,s,o,u,a,f,l,c;for(f=0;f<i.length;f++){s=i[f];for(l=0;l<s.parts.length;l++){o=s.parts[l];if(o.type==e.SELECTOR_PART_TYPE){a=0;for(c=0;c<o.modifiers.length;c++)u=o.modifiers[c],u.type==\"class\"&&a++,a>1&&t.report(\"Don't use adjoining classes.\",o.line,o.col,n)}}}})}}),CSSLint.addRule({id:\"box-model\",name:\"Beware of broken box size\",desc:\"Don't use width or height when using padding or border.\",browsers:\"All\",init:function(e,t){function u(){s={},o=!1}function a(){var e,u;if(!o){if(s.height)for(e in i)i.hasOwnProperty(e)&&s[e]&&(u=s[e].value,(e!=\"padding\"||u.parts.length!==2||u.parts[0].value!==0)&&t.report(\"Using height with \"+e+\" can sometimes make elements larger than you expect.\",s[e].line,s[e].col,n));if(s.width)for(e in r)r.hasOwnProperty(e)&&s[e]&&(u=s[e].value,(e!=\"padding\"||u.parts.length!==2||u.parts[1].value!==0)&&t.report(\"Using width with \"+e+\" can sometimes make elements larger than you expect.\",s[e].line,s[e].col,n))}}var n=this,r={border:1,\"border-left\":1,\"border-right\":1,padding:1,\"padding-left\":1,\"padding-right\":1},i={border:1,\"border-bottom\":1,\"border-top\":1,padding:1,\"padding-bottom\":1,\"padding-top\":1},s,o=!1;e.addListener(\"startrule\",u),e.addListener(\"startfontface\",u),e.addListener(\"startpage\",u),e.addListener(\"startpagemargin\",u),e.addListener(\"startkeyframerule\",u),e.addListener(\"property\",function(e){var t=e.property.text.toLowerCase();i[t]||r[t]?!/^0\\S*$/.test(e.value)&&(t!=\"border\"||e.value!=\"none\")&&(s[t]={line:e.property.line,col:e.property.col,value:e.value}):/^(width|height)/i.test(t)&&/^(length|percentage)/.test(e.value.parts[0].type)?s[t]=1:t==\"box-sizing\"&&(o=!0)}),e.addListener(\"endrule\",a),e.addListener(\"endfontface\",a),e.addListener(\"endpage\",a),e.addListener(\"endpagemargin\",a),e.addListener(\"endkeyframerule\",a)}}),CSSLint.addRule({id:\"box-sizing\",name:\"Disallow use of box-sizing\",desc:\"The box-sizing properties isn't supported in IE6 and IE7.\",browsers:\"IE6, IE7\",tags:[\"Compatibility\"],init:function(e,t){var n=this;e.addListener(\"property\",function(e){var r=e.property.text.toLowerCase();r==\"box-sizing\"&&t.report(\"The box-sizing property isn't supported in IE6 and IE7.\",e.line,e.col,n)})}}),CSSLint.addRule({id:\"compatible-vendor-prefixes\",name:\"Require compatible vendor prefixes\",desc:\"Include all compatible vendor prefixes to reach a wider range of users.\",browsers:\"All\",init:function(e,t){var n=this,r,i,s,o,u,a,f,l=!1,c=Array.prototype.push,h=[];r={animation:\"webkit moz\",\"animation-delay\":\"webkit moz\",\"animation-direction\":\"webkit moz\",\"animation-duration\":\"webkit moz\",\"animation-fill-mode\":\"webkit moz\",\"animation-iteration-count\":\"webkit moz\",\"animation-name\":\"webkit moz\",\"animation-play-state\":\"webkit moz\",\"animation-timing-function\":\"webkit moz\",appearance:\"webkit moz\",\"border-end\":\"webkit moz\",\"border-end-color\":\"webkit moz\",\"border-end-style\":\"webkit moz\",\"border-end-width\":\"webkit moz\",\"border-image\":\"webkit moz o\",\"border-radius\":\"webkit moz\",\"border-start\":\"webkit moz\",\"border-start-color\":\"webkit moz\",\"border-start-style\":\"webkit moz\",\"border-start-width\":\"webkit moz\",\"box-align\":\"webkit moz ms\",\"box-direction\":\"webkit moz ms\",\"box-flex\":\"webkit moz ms\",\"box-lines\":\"webkit ms\",\"box-ordinal-group\":\"webkit moz ms\",\"box-orient\":\"webkit moz ms\",\"box-pack\":\"webkit moz ms\",\"box-sizing\":\"webkit moz\",\"box-shadow\":\"webkit moz\",\"column-count\":\"webkit moz ms\",\"column-gap\":\"webkit moz ms\",\"column-rule\":\"webkit moz ms\",\"column-rule-color\":\"webkit moz ms\",\"column-rule-style\":\"webkit moz ms\",\"column-rule-width\":\"webkit moz ms\",\"column-width\":\"webkit moz ms\",hyphens:\"epub moz\",\"line-break\":\"webkit ms\",\"margin-end\":\"webkit moz\",\"margin-start\":\"webkit moz\",\"marquee-speed\":\"webkit wap\",\"marquee-style\":\"webkit wap\",\"padding-end\":\"webkit moz\",\"padding-start\":\"webkit moz\",\"tab-size\":\"moz o\",\"text-size-adjust\":\"webkit ms\",transform:\"webkit moz ms o\",\"transform-origin\":\"webkit moz ms o\",transition:\"webkit moz o\",\"transition-delay\":\"webkit moz o\",\"transition-duration\":\"webkit moz o\",\"transition-property\":\"webkit moz o\",\"transition-timing-function\":\"webkit moz o\",\"user-modify\":\"webkit moz\",\"user-select\":\"webkit moz ms\",\"word-break\":\"epub ms\",\"writing-mode\":\"epub ms\"};for(s in r)if(r.hasOwnProperty(s)){o=[],u=r[s].split(\" \");for(a=0,f=u.length;a<f;a++)o.push(\"-\"+u[a]+\"-\"+s);r[s]=o,c.apply(h,o)}e.addListener(\"startrule\",function(){i=[]}),e.addListener(\"startkeyframes\",function(e){l=e.prefix||!0}),e.addListener(\"endkeyframes\",function(e){l=!1}),e.addListener(\"property\",function(e){var t=e.property;CSSLint.Util.indexOf(h,t.text)>-1&&(!l||typeof l!=\"string\"||t.text.indexOf(\"-\"+l+\"-\")!==0)&&i.push(t)}),e.addListener(\"endrule\",function(e){if(!i.length)return;var s={},o,u,a,f,l,c,h,p,d,v;for(o=0,u=i.length;o<u;o++){a=i[o];for(f in r)r.hasOwnProperty(f)&&(l=r[f],CSSLint.Util.indexOf(l,a.text)>-1&&(s[f]||(s[f]={full:l.slice(0),actual:[],actualNodes:[]}),CSSLint.Util.indexOf(s[f].actual,a.text)===-1&&(s[f].actual.push(a.text),s[f].actualNodes.push(a))))}for(f in s)if(s.hasOwnProperty(f)){c=s[f],h=c.full,p=c.actual;if(h.length>p.length)for(o=0,u=h.length;o<u;o++)d=h[o],CSSLint.Util.indexOf(p,d)===-1&&(v=p.length===1?p[0]:p.length==2?p.join(\" and \"):p.join(\", \"),t.report(\"The property \"+d+\" is compatible with \"+v+\" and should be included as well.\",c.actualNodes[0].line,c.actualNodes[0].col,n))}})}}),CSSLint.addRule({id:\"display-property-grouping\",name:\"Require properties appropriate for display\",desc:\"Certain properties shouldn't be used with certain display property values.\",browsers:\"All\",init:function(e,t){function s(e,s,o){i[e]&&(typeof r[e]!=\"string\"||i[e].value.toLowerCase()!=r[e])&&t.report(o||e+\" can't be used with display: \"+s+\".\",i[e].line,i[e].col,n)}function o(){i={}}function u(){var e=i.display?i.display.value:null;if(e)switch(e){case\"inline\":s(\"height\",e),s(\"width\",e),s(\"margin\",e),s(\"margin-top\",e),s(\"margin-bottom\",e),s(\"float\",e,\"display:inline has no effect on floated elements (but may be used to fix the IE6 double-margin bug).\");break;case\"block\":s(\"vertical-align\",e);break;case\"inline-block\":s(\"float\",e);break;default:e.indexOf(\"table-\")===0&&(s(\"margin\",e),s(\"margin-left\",e),s(\"margin-right\",e),s(\"margin-top\",e),s(\"margin-bottom\",e),s(\"float\",e))}}var n=this,r={display:1,\"float\":\"none\",height:1,width:1,margin:1,\"margin-left\":1,\"margin-right\":1,\"margin-bottom\":1,\"margin-top\":1,padding:1,\"padding-left\":1,\"padding-right\":1,\"padding-bottom\":1,\"padding-top\":1,\"vertical-align\":1},i;e.addListener(\"startrule\",o),e.addListener(\"startfontface\",o),e.addListener(\"startkeyframerule\",o),e.addListener(\"startpagemargin\",o),e.addListener(\"startpage\",o),e.addListener(\"property\",function(e){var t=e.property.text.toLowerCase();r[t]&&(i[t]={value:e.value.text,line:e.property.line,col:e.property.col})}),e.addListener(\"endrule\",u),e.addListener(\"endfontface\",u),e.addListener(\"endkeyframerule\",u),e.addListener(\"endpagemargin\",u),e.addListener(\"endpage\",u)}}),CSSLint.addRule({id:\"duplicate-background-images\",name:\"Disallow duplicate background images\",desc:\"Every background-image should be unique. Use a common class for e.g. sprites.\",browsers:\"All\",init:function(e,t){var n=this,r={};e.addListener(\"property\",function(e){var i=e.property.text,s=e.value,o,u;if(i.match(/background/i))for(o=0,u=s.parts.length;o<u;o++)s.parts[o].type==\"uri\"&&(typeof r[s.parts[o].uri]==\"undefined\"?r[s.parts[o].uri]=e:t.report(\"Background image '\"+s.parts[o].uri+\"' was used multiple times, first declared at line \"+r[s.parts[o].uri].line+\", col \"+r[s.parts[o].uri].col+\".\",e.line,e.col,n))})}}),CSSLint.addRule({id:\"duplicate-properties\",name:\"Disallow duplicate properties\",desc:\"Duplicate properties must appear one after the other.\",browsers:\"All\",init:function(e,t){function s(e){r={}}var n=this,r,i;e.addListener(\"startrule\",s),e.addListener(\"startfontface\",s),e.addListener(\"startpage\",s),e.addListener(\"startpagemargin\",s),e.addListener(\"startkeyframerule\",s),e.addListener(\"property\",function(e){var s=e.property,o=s.text.toLowerCase();r[o]&&(i!=o||r[o]==e.value.text)&&t.report(\"Duplicate property '\"+e.property+\"' found.\",e.line,e.col,n),r[o]=e.value.text,i=o})}}),CSSLint.addRule({id:\"empty-rules\",name:\"Disallow empty rules\",desc:\"Rules without any properties specified should be removed.\",browsers:\"All\",init:function(e,t){var n=this,r=0;e.addListener(\"startrule\",function(){r=0}),e.addListener(\"property\",function(){r++}),e.addListener(\"endrule\",function(e){var i=e.selectors;r===0&&t.report(\"Rule is empty.\",i[0].line,i[0].col,n)})}}),CSSLint.addRule({id:\"errors\",name:\"Parsing Errors\",desc:\"This rule looks for recoverable syntax errors.\",browsers:\"All\",init:function(e,t){var n=this;e.addListener(\"error\",function(e){t.error(e.message,e.line,e.col,n)})}}),CSSLint.addRule({id:\"fallback-colors\",name:\"Require fallback colors\",desc:\"For older browsers that don't support RGBA, HSL, or HSLA, provide a fallback color.\",browsers:\"IE6,IE7,IE8\",init:function(e,t){function o(e){s={},r=null}var n=this,r,i={color:1,background:1,\"background-color\":1},s;e.addListener(\"startrule\",o),e.addListener(\"startfontface\",o),e.addListener(\"startpage\",o),e.addListener(\"startpagemargin\",o),e.addListener(\"startkeyframerule\",o),e.addListener(\"property\",function(e){var s=e.property,o=s.text.toLowerCase(),u=e.value.parts,a=0,f=\"\",l=u.length;if(i[o])while(a<l)u[a].type==\"color\"&&(\"alpha\"in u[a]||\"hue\"in u[a]?(/([^\\)]+)\\(/.test(u[a])&&(f=RegExp.$1.toUpperCase()),(!r||r.property.text.toLowerCase()!=o||r.colorType!=\"compat\")&&t.report(\"Fallback \"+o+\" (hex or RGB) should precede \"+f+\" \"+o+\".\",e.line,e.col,n)):e.colorType=\"compat\"),a++;r=e})}}),CSSLint.addRule({id:\"floats\",name:\"Disallow too many floats\",desc:\"This rule tests if the float property is used too many times\",browsers:\"All\",init:function(e,t){var n=this,r=0;e.addListener(\"property\",function(e){e.property.text.toLowerCase()==\"float\"&&e.value.text.toLowerCase()!=\"none\"&&r++}),e.addListener(\"endstylesheet\",function(){t.stat(\"floats\",r),r>=10&&t.rollupWarn(\"Too many floats (\"+r+\"), you're probably using them for layout. Consider using a grid system instead.\",n)})}}),CSSLint.addRule({id:\"font-faces\",name:\"Don't use too many web fonts\",desc:\"Too many different web fonts in the same stylesheet.\",browsers:\"All\",init:function(e,t){var n=this,r=0;e.addListener(\"startfontface\",function(){r++}),e.addListener(\"endstylesheet\",function(){r>5&&t.rollupWarn(\"Too many @font-face declarations (\"+r+\").\",n)})}}),CSSLint.addRule({id:\"font-sizes\",name:\"Disallow too many font sizes\",desc:\"Checks the number of font-size declarations.\",browsers:\"All\",init:function(e,t){var n=this,r=0;e.addListener(\"property\",function(e){e.property==\"font-size\"&&r++}),e.addListener(\"endstylesheet\",function(){t.stat(\"font-sizes\",r),r>=10&&t.rollupWarn(\"Too many font-size declarations (\"+r+\"), abstraction needed.\",n)})}}),CSSLint.addRule({id:\"gradients\",name:\"Require all gradient definitions\",desc:\"When using a vendor-prefixed gradient, make sure to use them all.\",browsers:\"All\",init:function(e,t){var n=this,r;e.addListener(\"startrule\",function(){r={moz:0,webkit:0,oldWebkit:0,ms:0,o:0}}),e.addListener(\"property\",function(e){/\\-(moz|ms|o|webkit)(?:\\-(?:linear|radial))\\-gradient/i.test(e.value)?r[RegExp.$1]=1:/\\-webkit\\-gradient/i.test(e.value)&&(r.oldWebkit=1)}),e.addListener(\"endrule\",function(e){var i=[];r.moz||i.push(\"Firefox 3.6+\"),r.webkit||i.push(\"Webkit (Safari 5+, Chrome)\"),r.oldWebkit||i.push(\"Old Webkit (Safari 4+, Chrome)\"),r.ms||i.push(\"Internet Explorer 10+\"),r.o||i.push(\"Opera 11.1+\"),i.length&&i.length<5&&t.report(\"Missing vendor-prefixed CSS gradients for \"+i.join(\", \")+\".\",e.selectors[0].line,e.selectors[0].col,n)})}}),CSSLint.addRule({id:\"ids\",name:\"Disallow IDs in selectors\",desc:\"Selectors should not contain IDs.\",browsers:\"All\",init:function(e,t){var n=this;e.addListener(\"startrule\",function(r){var i=r.selectors,s,o,u,a,f,l,c;for(f=0;f<i.length;f++){s=i[f],a=0;for(l=0;l<s.parts.length;l++){o=s.parts[l];if(o.type==e.SELECTOR_PART_TYPE)for(c=0;c<o.modifiers.length;c++)u=o.modifiers[c],u.type==\"id\"&&a++}a==1?t.report(\"Don't use IDs in selectors.\",s.line,s.col,n):a>1&&t.report(a+\" IDs in the selector, really?\",s.line,s.col,n)}})}}),CSSLint.addRule({id:\"import\",name:\"Disallow @import\",desc:\"Don't use @import, use <link> instead.\",browsers:\"All\",init:function(e,t){var n=this;e.addListener(\"import\",function(e){t.report(\"@import prevents parallel downloads, use <link> instead.\",e.line,e.col,n)})}}),CSSLint.addRule({id:\"important\",name:\"Disallow !important\",desc:\"Be careful when using !important declaration\",browsers:\"All\",init:function(e,t){var n=this,r=0;e.addListener(\"property\",function(e){e.important===!0&&(r++,t.report(\"Use of !important\",e.line,e.col,n))}),e.addListener(\"endstylesheet\",function(){t.stat(\"important\",r),r>=10&&t.rollupWarn(\"Too many !important declarations (\"+r+\"), try to use less than 10 to avoid specificity issues.\",n)})}}),CSSLint.addRule({id:\"known-properties\",name:\"Require use of known properties\",desc:\"Properties should be known (listed in CSS3 specification) or be a vendor-prefixed property.\",browsers:\"All\",init:function(e,t){var n=this;e.addListener(\"property\",function(e){var r=e.property.text.toLowerCase();e.invalid&&t.report(e.invalid.message,e.line,e.col,n)})}}),CSSLint.addRule({id:\"outline-none\",name:\"Disallow outline: none\",desc:\"Use of outline: none or outline: 0 should be limited to :focus rules.\",browsers:\"All\",tags:[\"Accessibility\"],init:function(e,t){function i(e){e.selectors?r={line:e.line,col:e.col,selectors:e.selectors,propCount:0,outline:!1}:r=null}function s(e){r&&r.outline&&(r.selectors.toString().toLowerCase().indexOf(\":focus\")==-1?t.report(\"Outlines should only be modified using :focus.\",r.line,r.col,n):r.propCount==1&&t.report(\"Outlines shouldn't be hidden unless other visual changes are made.\",r.line,r.col,n))}var n=this,r;e.addListener(\"startrule\",i),e.addListener(\"startfontface\",i),e.addListener(\"startpage\",i),e.addListener(\"startpagemargin\",i),e.addListener(\"startkeyframerule\",i),e.addListener(\"property\",function(e){var t=e.property.text.toLowerCase(),n=e.value;r&&(r.propCount++,t==\"outline\"&&(n==\"none\"||n==\"0\")&&(r.outline=!0))}),e.addListener(\"endrule\",s),e.addListener(\"endfontface\",s),e.addListener(\"endpage\",s),e.addListener(\"endpagemargin\",s),e.addListener(\"endkeyframerule\",s)}}),CSSLint.addRule({id:\"overqualified-elements\",name:\"Disallow overqualified elements\",desc:\"Don't use classes or IDs with elements (a.foo or a#foo).\",browsers:\"All\",init:function(e,t){var n=this,r={};e.addListener(\"startrule\",function(i){var s=i.selectors,o,u,a,f,l,c;for(f=0;f<s.length;f++){o=s[f];for(l=0;l<o.parts.length;l++){u=o.parts[l];if(u.type==e.SELECTOR_PART_TYPE)for(c=0;c<u.modifiers.length;c++)a=u.modifiers[c],u.elementName&&a.type==\"id\"?t.report(\"Element (\"+u+\") is overqualified, just use \"+a+\" without element name.\",u.line,u.col,n):a.type==\"class\"&&(r[a]||(r[a]=[]),r[a].push({modifier:a,part:u}))}}}),e.addListener(\"endstylesheet\",function(){var e;for(e in r)r.hasOwnProperty(e)&&r[e].length==1&&r[e][0].part.elementName&&t.report(\"Element (\"+r[e][0].part+\") is overqualified, just use \"+r[e][0].modifier+\" without element name.\",r[e][0].part.line,r[e][0].part.col,n)})}}),CSSLint.addRule({id:\"qualified-headings\",name:\"Disallow qualified headings\",desc:\"Headings should not be qualified (namespaced).\",browsers:\"All\",init:function(e,t){var n=this;e.addListener(\"startrule\",function(r){var i=r.selectors,s,o,u,a;for(u=0;u<i.length;u++){s=i[u];for(a=0;a<s.parts.length;a++)o=s.parts[a],o.type==e.SELECTOR_PART_TYPE&&o.elementName&&/h[1-6]/.test(o.elementName.toString())&&a>0&&t.report(\"Heading (\"+o.elementName+\") should not be qualified.\",o.line,o.col,n)}})}}),CSSLint.addRule({id:\"regex-selectors\",name:\"Disallow selectors that look like regexs\",desc:\"Selectors that look like regular expressions are slow and should be avoided.\",browsers:\"All\",init:function(e,t){var n=this;e.addListener(\"startrule\",function(r){var i=r.selectors,s,o,u,a,f,l;for(a=0;a<i.length;a++){s=i[a];for(f=0;f<s.parts.length;f++){o=s.parts[f];if(o.type==e.SELECTOR_PART_TYPE)for(l=0;l<o.modifiers.length;l++)u=o.modifiers[l],u.type==\"attribute\"&&/([\\~\\|\\^\\$\\*]=)/.test(u)&&t.report(\"Attribute selectors with \"+RegExp.$1+\" are slow!\",u.line,u.col,n)}}})}}),CSSLint.addRule({id:\"rules-count\",name:\"Rules Count\",desc:\"Track how many rules there are.\",browsers:\"All\",init:function(e,t){var n=this,r=0;e.addListener(\"startrule\",function(){r++}),e.addListener(\"endstylesheet\",function(){t.stat(\"rule-count\",r)})}}),CSSLint.addRule({id:\"shorthand\",name:\"Require shorthand properties\",desc:\"Use shorthand properties where possible.\",browsers:\"All\",init:function(e,t){function f(e){u={}}function l(e){var r,i,s,o;for(r in a)if(a.hasOwnProperty(r)){o=0;for(i=0,s=a[r].length;i<s;i++)o+=u[a[r][i]]?1:0;o==a[r].length&&t.report(\"The properties \"+a[r].join(\", \")+\" can be replaced by \"+r+\".\",e.line,e.col,n)}}var n=this,r,i,s,o={},u,a={margin:[\"margin-top\",\"margin-bottom\",\"margin-left\",\"margin-right\"],padding:[\"padding-top\",\"padding-bottom\",\"padding-left\",\"padding-right\"]};for(r in a)if(a.hasOwnProperty(r))for(i=0,s=a[r].length;i<s;i++)o[a[r][i]]=r;e.addListener(\"startrule\",f),e.addListener(\"startfontface\",f),e.addListener(\"property\",function(e){var t=e.property.toString().toLowerCase(),n=e.value.parts[0].value;o[t]&&(u[t]=1)}),e.addListener(\"endrule\",l),e.addListener(\"endfontface\",l)}}),CSSLint.addRule({id:\"star-property-hack\",name:\"Disallow properties with a star prefix\",desc:\"Checks for the star property hack (targets IE6/7)\",browsers:\"All\",init:function(e,t){var n=this;e.addListener(\"property\",function(e){var r=e.property;r.hack==\"*\"&&t.report(\"Property with star prefix found.\",e.property.line,e.property.col,n)})}}),CSSLint.addRule({id:\"text-indent\",name:\"Disallow negative text-indent\",desc:\"Checks for text indent less than -99px\",browsers:\"All\",init:function(e,t){function s(e){r=!1,i=\"inherit\"}function o(e){r&&i!=\"ltr\"&&t.report(\"Negative text-indent doesn't work well with RTL. If you use text-indent for image replacement explicitly set direction for that item to ltr.\",r.line,r.col,n)}var n=this,r,i;e.addListener(\"startrule\",s),e.addListener(\"startfontface\",s),e.addListener(\"property\",function(e){var t=e.property.toString().toLowerCase(),n=e.value;t==\"text-indent\"&&n.parts[0].value<-99?r=e.property:t==\"direction\"&&n==\"ltr\"&&(i=\"ltr\")}),e.addListener(\"endrule\",o),e.addListener(\"endfontface\",o)}}),CSSLint.addRule({id:\"underscore-property-hack\",name:\"Disallow properties with an underscore prefix\",desc:\"Checks for the underscore property hack (targets IE6)\",browsers:\"All\",init:function(e,t){var n=this;e.addListener(\"property\",function(e){var r=e.property;r.hack==\"_\"&&t.report(\"Property with underscore prefix found.\",e.property.line,e.property.col,n)})}}),CSSLint.addRule({id:\"unique-headings\",name:\"Headings should only be defined once\",desc:\"Headings should be defined only once.\",browsers:\"All\",init:function(e,t){var n=this,r={h1:0,h2:0,h3:0,h4:0,h5:0,h6:0};e.addListener(\"startrule\",function(e){var i=e.selectors,s,o,u,a,f;for(a=0;a<i.length;a++){s=i[a],o=s.parts[s.parts.length-1];if(o.elementName&&/(h[1-6])/i.test(o.elementName.toString())){for(f=0;f<o.modifiers.length;f++)if(o.modifiers[f].type==\"pseudo\"){u=!0;break}u||(r[RegExp.$1]++,r[RegExp.$1]>1&&t.report(\"Heading (\"+o.elementName+\") has already been defined.\",o.line,o.col,n))}}}),e.addListener(\"endstylesheet\",function(e){var i,s=[];for(i in r)r.hasOwnProperty(i)&&r[i]>1&&s.push(r[i]+\" \"+i+\"s\");s.length&&t.rollupWarn(\"You have \"+s.join(\", \")+\" defined in this stylesheet.\",n)})}}),CSSLint.addRule({id:\"universal-selector\",name:\"Disallow universal selector\",desc:\"The universal selector (*) is known to be slow.\",browsers:\"All\",init:function(e,t){var n=this;e.addListener(\"startrule\",function(e){var r=e.selectors,i,s,o,u,a,f;for(u=0;u<r.length;u++)i=r[u],s=i.parts[i.parts.length-1],s.elementName==\"*\"&&t.report(n.desc,s.line,s.col,n)})}}),CSSLint.addRule({id:\"unqualified-attributes\",name:\"Disallow unqualified attribute selectors\",desc:\"Unqualified attribute selectors are known to be slow.\",browsers:\"All\",init:function(e,t){var n=this;e.addListener(\"startrule\",function(r){var i=r.selectors,s,o,u,a,f,l;for(a=0;a<i.length;a++){s=i[a],o=s.parts[s.parts.length-1];if(o.type==e.SELECTOR_PART_TYPE)for(l=0;l<o.modifiers.length;l++)u=o.modifiers[l],u.type==\"attribute\"&&(!o.elementName||o.elementName==\"*\")&&t.report(n.desc,o.line,o.col,n)}})}}),CSSLint.addRule({id:\"vendor-prefix\",name:\"Require standard property with vendor prefix\",desc:\"When using a vendor-prefixed property, make sure to include the standard one.\",browsers:\"All\",init:function(e,t){function o(){r={},i=1}function u(e){var i,o,u,a,f,l,c=[];for(i in r)s[i]&&c.push({actual:i,needed:s[i]});for(o=0,u=c.length;o<u;o++)f=c[o].needed,l=c[o].actual,r[f]?r[f][0].pos<r[l][0].pos&&t.report(\"Standard property '\"+f+\"' should come after vendor-prefixed property '\"+l+\"'.\",r[l][0].name.line,r[l][0].name.col,n):t.report(\"Missing standard property '\"+f+\"' to go along with '\"+l+\"'.\",r[l][0].name.line,r[l][0].name.col,n)}var n=this,r,i,s={\"-webkit-border-radius\":\"border-radius\",\"-webkit-border-top-left-radius\":\"border-top-left-radius\",\"-webkit-border-top-right-radius\":\"border-top-right-radius\",\"-webkit-border-bottom-left-radius\":\"border-bottom-left-radius\",\"-webkit-border-bottom-right-radius\":\"border-bottom-right-radius\",\"-o-border-radius\":\"border-radius\",\"-o-border-top-left-radius\":\"border-top-left-radius\",\"-o-border-top-right-radius\":\"border-top-right-radius\",\"-o-border-bottom-left-radius\":\"border-bottom-left-radius\",\"-o-border-bottom-right-radius\":\"border-bottom-right-radius\",\"-moz-border-radius\":\"border-radius\",\"-moz-border-radius-topleft\":\"border-top-left-radius\",\"-moz-border-radius-topright\":\"border-top-right-radius\",\"-moz-border-radius-bottomleft\":\"border-bottom-left-radius\",\"-moz-border-radius-bottomright\":\"border-bottom-right-radius\",\"-moz-column-count\":\"column-count\",\"-webkit-column-count\":\"column-count\",\"-moz-column-gap\":\"column-gap\",\"-webkit-column-gap\":\"column-gap\",\"-moz-column-rule\":\"column-rule\",\"-webkit-column-rule\":\"column-rule\",\"-moz-column-rule-style\":\"column-rule-style\",\"-webkit-column-rule-style\":\"column-rule-style\",\"-moz-column-rule-color\":\"column-rule-color\",\"-webkit-column-rule-color\":\"column-rule-color\",\"-moz-column-rule-width\":\"column-rule-width\",\"-webkit-column-rule-width\":\"column-rule-width\",\"-moz-column-width\":\"column-width\",\"-webkit-column-width\":\"column-width\",\"-webkit-column-span\":\"column-span\",\"-webkit-columns\":\"columns\",\"-moz-box-shadow\":\"box-shadow\",\"-webkit-box-shadow\":\"box-shadow\",\"-moz-transform\":\"transform\",\"-webkit-transform\":\"transform\",\"-o-transform\":\"transform\",\"-ms-transform\":\"transform\",\"-moz-transform-origin\":\"transform-origin\",\"-webkit-transform-origin\":\"transform-origin\",\"-o-transform-origin\":\"transform-origin\",\"-ms-transform-origin\":\"transform-origin\",\"-moz-box-sizing\":\"box-sizing\",\"-webkit-box-sizing\":\"box-sizing\",\"-moz-user-select\":\"user-select\",\"-khtml-user-select\":\"user-select\",\"-webkit-user-select\":\"user-select\"};e.addListener(\"startrule\",o),e.addListener(\"startfontface\",o),e.addListener(\"startpage\",o),e.addListener(\"startpagemargin\",o),e.addListener(\"startkeyframerule\",o),e.addListener(\"property\",function(e){var t=e.property.text.toLowerCase();r[t]||(r[t]=[]),r[t].push({name:e.property,value:e.value,pos:i++})}),e.addListener(\"endrule\",u),e.addListener(\"endfontface\",u),e.addListener(\"endpage\",u),e.addListener(\"endpagemargin\",u),e.addListener(\"endkeyframerule\",u)}}),CSSLint.addRule({id:\"zero-units\",name:\"Disallow units for 0 values\",desc:\"You don't need to specify units when a value is 0.\",browsers:\"All\",init:function(e,t){var n=this;e.addListener(\"property\",function(e){var r=e.value.parts,i=0,s=r.length;while(i<s)(r[i].units||r[i].type==\"percentage\")&&r[i].value===0&&r[i].type!=\"time\"&&t.report(\"Values of 0 shouldn't have units specified.\",r[i].line,r[i].col,n),i++})}}),exports.CSSLint=CSSLint})"
  },
  {
    "path": "public/js/vendor/ace/worker-javascript.js",
    "content": "\"no use strict\";function initBaseUrls(e){require.tlns=e}function initSender(){var e=require(null,\"ace/lib/event_emitter\").EventEmitter,t=require(null,\"ace/lib/oop\"),n=function(){};return function(){t.implement(this,e),this.callback=function(e,t){postMessage({type:\"call\",id:t,data:e})},this.emit=function(e,t){postMessage({type:\"event\",name:e,data:t})}}.call(n.prototype),new n}if(typeof window!=\"undefined\"&&window.document)throw\"atempt to load ace worker into main window instead of webWorker\";var console={log:function(){var e=Array.prototype.slice.call(arguments,0);postMessage({type:\"log\",data:e})},error:function(){var e=Array.prototype.slice.call(arguments,0);postMessage({type:\"log\",data:e})}},window={console:console},normalizeModule=function(e,t){if(t.indexOf(\"!\")!==-1){var n=t.split(\"!\");return normalizeModule(e,n[0])+\"!\"+normalizeModule(e,n[1])}if(t.charAt(0)==\".\"){var r=e.split(\"/\").slice(0,-1).join(\"/\");t=r+\"/\"+t;while(t.indexOf(\".\")!==-1&&i!=t){var i=t;t=t.replace(/\\/\\.\\//,\"/\").replace(/[^\\/]+\\/\\.\\.\\//,\"\")}}return t},require=function(e,t){if(!t.charAt)throw new Error(\"worker.js require() accepts only (parentId, id) as arguments\");t=normalizeModule(e,t);var n=require.modules[t];if(n)return n.initialized||(n.initialized=!0,n.exports=n.factory().exports),n.exports;var r=t.split(\"/\");r[0]=require.tlns[r[0]]||r[0];var i=r.join(\"/\")+\".js\";return require.id=t,importScripts(i),require(e,t)};require.modules={},require.tlns={};var define=function(e,t,n){arguments.length==2?(n=t,typeof e!=\"string\"&&(t=e,e=require.id)):arguments.length==1&&(n=e,e=require.id);if(e.indexOf(\"text!\")===0)return;var r=function(t,n){return require(e,t,n)};require.modules[e]={factory:function(){var e={exports:{}},t=n(r,e.exports,e);return t&&(e.exports=t),e}}},main,sender;onmessage=function(e){var t=e.data;if(t.command){if(!main[t.command])throw new Error(\"Unknown command:\"+t.command);main[t.command].apply(main,t.args)}else if(t.init){initBaseUrls(t.tlns),require(null,\"ace/lib/fixoldbrowsers\"),sender=initSender();var n=require(null,t.module)[t.classname];main=new n(sender)}else t.event&&sender&&sender._emit(t.event,t.data)},define(\"ace/lib/fixoldbrowsers\",[\"require\",\"exports\",\"module\",\"ace/lib/regexp\",\"ace/lib/es5-shim\"],function(e,t,n){e(\"./regexp\"),e(\"./es5-shim\")}),define(\"ace/lib/regexp\",[\"require\",\"exports\",\"module\"],function(e,t,n){function o(e){return(e.global?\"g\":\"\")+(e.ignoreCase?\"i\":\"\")+(e.multiline?\"m\":\"\")+(e.extended?\"x\":\"\")+(e.sticky?\"y\":\"\")}function u(e,t,n){if(Array.prototype.indexOf)return e.indexOf(t,n);for(var r=n||0;r<e.length;r++)if(e[r]===t)return r;return-1}var r={exec:RegExp.prototype.exec,test:RegExp.prototype.test,match:String.prototype.match,replace:String.prototype.replace,split:String.prototype.split},i=r.exec.call(/()??/,\"\")[1]===undefined,s=function(){var e=/^/g;return r.test.call(e,\"\"),!e.lastIndex}();if(s&&i)return;RegExp.prototype.exec=function(e){var t=r.exec.apply(this,arguments),n,a;if(typeof e==\"string\"&&t){!i&&t.length>1&&u(t,\"\")>-1&&(a=RegExp(this.source,r.replace.call(o(this),\"g\",\"\")),r.replace.call(e.slice(t.index),a,function(){for(var e=1;e<arguments.length-2;e++)arguments[e]===undefined&&(t[e]=undefined)}));if(this._xregexp&&this._xregexp.captureNames)for(var f=1;f<t.length;f++)n=this._xregexp.captureNames[f-1],n&&(t[n]=t[f]);!s&&this.global&&!t[0].length&&this.lastIndex>t.index&&this.lastIndex--}return t},s||(RegExp.prototype.test=function(e){var t=r.exec.call(this,e);return t&&this.global&&!t[0].length&&this.lastIndex>t.index&&this.lastIndex--,!!t})}),define(\"ace/lib/es5-shim\",[\"require\",\"exports\",\"module\"],function(e,t,n){function r(){}function w(e){try{return Object.defineProperty(e,\"sentinel\",{}),\"sentinel\"in e}catch(t){}}function j(e){return e=+e,e!==e?e=0:e!==0&&e!==1/0&&e!==-1/0&&(e=(e>0||-1)*Math.floor(Math.abs(e))),e}function F(e){var t=typeof e;return e===null||t===\"undefined\"||t===\"boolean\"||t===\"number\"||t===\"string\"}function I(e){var t,n,r;if(F(e))return e;n=e.valueOf;if(typeof n==\"function\"){t=n.call(e);if(F(t))return t}r=e.toString;if(typeof r==\"function\"){t=r.call(e);if(F(t))return t}throw new TypeError}Function.prototype.bind||(Function.prototype.bind=function(t){var n=this;if(typeof n!=\"function\")throw new TypeError(\"Function.prototype.bind called on incompatible \"+n);var i=u.call(arguments,1),s=function(){if(this instanceof s){var e=n.apply(this,i.concat(u.call(arguments)));return Object(e)===e?e:this}return n.apply(t,i.concat(u.call(arguments)))};return n.prototype&&(r.prototype=n.prototype,s.prototype=new r,r.prototype=null),s});var i=Function.prototype.call,s=Array.prototype,o=Object.prototype,u=s.slice,a=i.bind(o.toString),f=i.bind(o.hasOwnProperty),l,c,h,p,d;if(d=f(o,\"__defineGetter__\"))l=i.bind(o.__defineGetter__),c=i.bind(o.__defineSetter__),h=i.bind(o.__lookupGetter__),p=i.bind(o.__lookupSetter__);if([1,2].splice(0).length!=2)if(!function(){function e(e){var t=new Array(e+2);return t[0]=t[1]=0,t}var t=[],n;t.splice.apply(t,e(20)),t.splice.apply(t,e(26)),n=t.length,t.splice(5,0,\"XXX\"),n+1==t.length;if(n+1==t.length)return!0}())Array.prototype.splice=function(e,t){var n=this.length;e>0?e>n&&(e=n):e==void 0?e=0:e<0&&(e=Math.max(n+e,0)),e+t<n||(t=n-e);var r=this.slice(e,e+t),i=u.call(arguments,2),s=i.length;if(e===n)s&&this.push.apply(this,i);else{var o=Math.min(t,n-e),a=e+o,f=a+s-o,l=n-a,c=n-o;if(f<a)for(var h=0;h<l;++h)this[f+h]=this[a+h];else if(f>a)for(h=l;h--;)this[f+h]=this[a+h];if(s&&e===c)this.length=c,this.push.apply(this,i);else{this.length=c+s;for(h=0;h<s;++h)this[e+h]=i[h]}}return r};else{var v=Array.prototype.splice;Array.prototype.splice=function(e,t){return arguments.length?v.apply(this,[e===void 0?0:e,t===void 0?this.length-e:t].concat(u.call(arguments,2))):[]}}Array.isArray||(Array.isArray=function(t){return a(t)==\"[object Array]\"});var m=Object(\"a\"),g=m[0]!=\"a\"||!(0 in m);Array.prototype.forEach||(Array.prototype.forEach=function(t){var n=q(this),r=g&&a(this)==\"[object String]\"?this.split(\"\"):n,i=arguments[1],s=-1,o=r.length>>>0;if(a(t)!=\"[object Function]\")throw new TypeError;while(++s<o)s in r&&t.call(i,r[s],s,n)}),Array.prototype.map||(Array.prototype.map=function(t){var n=q(this),r=g&&a(this)==\"[object String]\"?this.split(\"\"):n,i=r.length>>>0,s=Array(i),o=arguments[1];if(a(t)!=\"[object Function]\")throw new TypeError(t+\" is not a function\");for(var u=0;u<i;u++)u in r&&(s[u]=t.call(o,r[u],u,n));return s}),Array.prototype.filter||(Array.prototype.filter=function(t){var n=q(this),r=g&&a(this)==\"[object String]\"?this.split(\"\"):n,i=r.length>>>0,s=[],o,u=arguments[1];if(a(t)!=\"[object Function]\")throw new TypeError(t+\" is not a function\");for(var f=0;f<i;f++)f in r&&(o=r[f],t.call(u,o,f,n)&&s.push(o));return s}),Array.prototype.every||(Array.prototype.every=function(t){var n=q(this),r=g&&a(this)==\"[object String]\"?this.split(\"\"):n,i=r.length>>>0,s=arguments[1];if(a(t)!=\"[object Function]\")throw new TypeError(t+\" is not a function\");for(var o=0;o<i;o++)if(o in r&&!t.call(s,r[o],o,n))return!1;return!0}),Array.prototype.some||(Array.prototype.some=function(t){var n=q(this),r=g&&a(this)==\"[object String]\"?this.split(\"\"):n,i=r.length>>>0,s=arguments[1];if(a(t)!=\"[object Function]\")throw new TypeError(t+\" is not a function\");for(var o=0;o<i;o++)if(o in r&&t.call(s,r[o],o,n))return!0;return!1}),Array.prototype.reduce||(Array.prototype.reduce=function(t){var n=q(this),r=g&&a(this)==\"[object String]\"?this.split(\"\"):n,i=r.length>>>0;if(a(t)!=\"[object Function]\")throw new TypeError(t+\" is not a function\");if(!i&&arguments.length==1)throw new TypeError(\"reduce of empty array with no initial value\");var s=0,o;if(arguments.length>=2)o=arguments[1];else do{if(s in r){o=r[s++];break}if(++s>=i)throw new TypeError(\"reduce of empty array with no initial value\")}while(!0);for(;s<i;s++)s in r&&(o=t.call(void 0,o,r[s],s,n));return o}),Array.prototype.reduceRight||(Array.prototype.reduceRight=function(t){var n=q(this),r=g&&a(this)==\"[object String]\"?this.split(\"\"):n,i=r.length>>>0;if(a(t)!=\"[object Function]\")throw new TypeError(t+\" is not a function\");if(!i&&arguments.length==1)throw new TypeError(\"reduceRight of empty array with no initial value\");var s,o=i-1;if(arguments.length>=2)s=arguments[1];else do{if(o in r){s=r[o--];break}if(--o<0)throw new TypeError(\"reduceRight of empty array with no initial value\")}while(!0);do o in this&&(s=t.call(void 0,s,r[o],o,n));while(o--);return s});if(!Array.prototype.indexOf||[0,1].indexOf(1,2)!=-1)Array.prototype.indexOf=function(t){var n=g&&a(this)==\"[object String]\"?this.split(\"\"):q(this),r=n.length>>>0;if(!r)return-1;var i=0;arguments.length>1&&(i=j(arguments[1])),i=i>=0?i:Math.max(0,r+i);for(;i<r;i++)if(i in n&&n[i]===t)return i;return-1};if(!Array.prototype.lastIndexOf||[0,1].lastIndexOf(0,-3)!=-1)Array.prototype.lastIndexOf=function(t){var n=g&&a(this)==\"[object String]\"?this.split(\"\"):q(this),r=n.length>>>0;if(!r)return-1;var i=r-1;arguments.length>1&&(i=Math.min(i,j(arguments[1]))),i=i>=0?i:r-Math.abs(i);for(;i>=0;i--)if(i in n&&t===n[i])return i;return-1};Object.getPrototypeOf||(Object.getPrototypeOf=function(t){return t.__proto__||(t.constructor?t.constructor.prototype:o)});if(!Object.getOwnPropertyDescriptor){var y=\"Object.getOwnPropertyDescriptor called on a non-object: \";Object.getOwnPropertyDescriptor=function(t,n){if(typeof t!=\"object\"&&typeof t!=\"function\"||t===null)throw new TypeError(y+t);if(!f(t,n))return;var r,i,s;r={enumerable:!0,configurable:!0};if(d){var u=t.__proto__;t.__proto__=o;var i=h(t,n),s=p(t,n);t.__proto__=u;if(i||s)return i&&(r.get=i),s&&(r.set=s),r}return r.value=t[n],r}}Object.getOwnPropertyNames||(Object.getOwnPropertyNames=function(t){return Object.keys(t)});if(!Object.create){var b;Object.prototype.__proto__===null?b=function(){return{__proto__:null}}:b=function(){var e={};for(var t in e)e[t]=null;return e.constructor=e.hasOwnProperty=e.propertyIsEnumerable=e.isPrototypeOf=e.toLocaleString=e.toString=e.valueOf=e.__proto__=null,e},Object.create=function(t,n){var r;if(t===null)r=b();else{if(typeof t!=\"object\")throw new TypeError(\"typeof prototype[\"+typeof t+\"] != 'object'\");var i=function(){};i.prototype=t,r=new i,r.__proto__=t}return n!==void 0&&Object.defineProperties(r,n),r}}if(Object.defineProperty){var E=w({}),S=typeof document==\"undefined\"||w(document.createElement(\"div\"));if(!E||!S)var x=Object.defineProperty}if(!Object.defineProperty||x){var T=\"Property description must be an object: \",N=\"Object.defineProperty called on non-object: \",C=\"getters & setters can not be defined on this javascript engine\";Object.defineProperty=function(t,n,r){if(typeof t!=\"object\"&&typeof t!=\"function\"||t===null)throw new TypeError(N+t);if(typeof r!=\"object\"&&typeof r!=\"function\"||r===null)throw new TypeError(T+r);if(x)try{return x.call(Object,t,n,r)}catch(i){}if(f(r,\"value\"))if(d&&(h(t,n)||p(t,n))){var s=t.__proto__;t.__proto__=o,delete t[n],t[n]=r.value,t.__proto__=s}else t[n]=r.value;else{if(!d)throw new TypeError(C);f(r,\"get\")&&l(t,n,r.get),f(r,\"set\")&&c(t,n,r.set)}return t}}Object.defineProperties||(Object.defineProperties=function(t,n){for(var r in n)f(n,r)&&Object.defineProperty(t,r,n[r]);return t}),Object.seal||(Object.seal=function(t){return t}),Object.freeze||(Object.freeze=function(t){return t});try{Object.freeze(function(){})}catch(k){Object.freeze=function(t){return function(n){return typeof n==\"function\"?n:t(n)}}(Object.freeze)}Object.preventExtensions||(Object.preventExtensions=function(t){return t}),Object.isSealed||(Object.isSealed=function(t){return!1}),Object.isFrozen||(Object.isFrozen=function(t){return!1}),Object.isExtensible||(Object.isExtensible=function(t){if(Object(t)===t)throw new TypeError;var n=\"\";while(f(t,n))n+=\"?\";t[n]=!0;var r=f(t,n);return delete t[n],r});if(!Object.keys){var L=!0,A=[\"toString\",\"toLocaleString\",\"valueOf\",\"hasOwnProperty\",\"isPrototypeOf\",\"propertyIsEnumerable\",\"constructor\"],O=A.length;for(var M in{toString:null})L=!1;Object.keys=function R(e){if(typeof e!=\"object\"&&typeof e!=\"function\"||e===null)throw new TypeError(\"Object.keys called on a non-object\");var R=[];for(var t in e)f(e,t)&&R.push(t);if(L)for(var n=0,r=O;n<r;n++){var i=A[n];f(e,i)&&R.push(i)}return R}}Date.now||(Date.now=function(){return(new Date).getTime()});if(\"0\".split(void 0,0).length){var _=String.prototype.split;String.prototype.split=function(e,t){return e===void 0&&t===0?[]:_.apply(this,arguments)}}if(\"\".substr&&\"0b\".substr(-1)!==\"b\"){var D=String.prototype.substr;String.prototype.substr=function(e,t){return D.call(this,e<0?(e=this.length+e)<0?0:e:e,t)}}var P=\"\t\\n\u000b\\f\\r   ᠎             　\\u2028\\u2029﻿\";if(!String.prototype.trim||P.trim()){P=\"[\"+P+\"]\";var H=new RegExp(\"^\"+P+P+\"*\"),B=new RegExp(P+P+\"*$\");String.prototype.trim=function(){if(this===undefined||this===null)throw new TypeError(\"can't convert \"+this+\" to object\");return String(this).replace(H,\"\").replace(B,\"\")}}var q=function(e){if(e==null)throw new TypeError(\"can't convert \"+e+\" to object\");return Object(e)}}),define(\"ace/lib/event_emitter\",[\"require\",\"exports\",\"module\"],function(e,t,n){var r={};r._emit=r._dispatchEvent=function(e,t){this._eventRegistry=this._eventRegistry||{},this._defaultHandlers=this._defaultHandlers||{};var n=this._eventRegistry[e]||[],r=this._defaultHandlers[e];if(!n.length&&!r)return;if(typeof t!=\"object\"||!t)t={};t.type||(t.type=e),t.stopPropagation||(t.stopPropagation=function(){this.propagationStopped=!0}),t.preventDefault||(t.preventDefault=function(){this.defaultPrevented=!0});for(var i=0;i<n.length;i++){n[i](t);if(t.propagationStopped)break}if(r&&!t.defaultPrevented)return r(t)},r.setDefaultHandler=function(e,t){this._defaultHandlers=this._defaultHandlers||{};if(this._defaultHandlers[e])throw new Error(\"The default handler for '\"+e+\"' is already set\");this._defaultHandlers[e]=t},r.on=r.addEventListener=function(e,t){this._eventRegistry=this._eventRegistry||{};var n=this._eventRegistry[e];n||(n=this._eventRegistry[e]=[]),n.indexOf(t)==-1&&n.push(t)},r.removeListener=r.removeEventListener=function(e,t){this._eventRegistry=this._eventRegistry||{};var n=this._eventRegistry[e];if(!n)return;var r=n.indexOf(t);r!==-1&&n.splice(r,1)},r.removeAllListeners=function(e){this._eventRegistry&&(this._eventRegistry[e]=[])},t.EventEmitter=r}),define(\"ace/lib/oop\",[\"require\",\"exports\",\"module\"],function(e,t,n){t.inherits=function(){var e=function(){};return function(t,n){e.prototype=n.prototype,t.super_=n.prototype,t.prototype=new e,t.prototype.constructor=t}}(),t.mixin=function(e,t){for(var n in t)e[n]=t[n]},t.implement=function(e,n){t.mixin(e,n)}}),define(\"ace/mode/javascript_worker\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/worker/mirror\",\"ace/mode/javascript/jshint\"],function(require,exports,module){function startRegex(e){return RegExp(\"^(\"+e.join(\"|\")+\")\")}var oop=require(\"../lib/oop\"),Mirror=require(\"../worker/mirror\").Mirror,lint=require(\"./javascript/jshint\").JSHINT,disabledWarningsRe=startRegex([\"Bad for in variable '(.+)'.\",'Missing \"use strict\"']),errorsRe=startRegex([\"Unexpected\",\"Expected \",\"Confusing (plus|minus)\",\"\\\\{a\\\\} unterminated regular expression\",\"Unclosed \",\"Unmatched \",\"Unbegun comment\",\"Bad invocation\",\"Missing space after\",\"Missing operator at\"]),infoRe=startRegex([\"Expected an assignment\",\"Bad escapement of EOL\",\"Unexpected comma\",\"Unexpected space\",\"Missing radix parameter.\",\"A leading decimal point can\",\"\\\\['{a}'\\\\] is better written in dot notation.\",\"'{a}' used out of scope\"]),JavaScriptWorker=exports.JavaScriptWorker=function(e){Mirror.call(this,e),this.setTimeout(500),this.setOptions()};oop.inherits(JavaScriptWorker,Mirror),function(){this.setOptions=function(e){this.options=e||{es5:!0,esnext:!0,devel:!0,browser:!0,node:!0,laxcomma:!0,laxbreak:!0,lastsemic:!0,onevar:!1,passfail:!1,maxerr:100,expr:!0,multistr:!0,globalstrict:!0},this.doc.getValue()&&this.deferredUpdate.schedule(100)},this.changeOptions=function(e){oop.mixin(this.options,e),this.doc.getValue()&&this.deferredUpdate.schedule(100)},this.isValidJS=function(str){try{eval(\"throw 0;\"+str)}catch(e){if(e===0)return!0}return!1},this.onUpdate=function(){var e=this.doc.getValue();e=e.replace(/^#!.*\\n/,\"\\n\");if(!e){this.sender.emit(\"jslint\",[]);return}var t=[],n=this.isValidJS(e)?\"warning\":\"error\";lint(e,this.options);var r=lint.errors,i=!1;for(var s=0;s<r.length;s++){var o=r[s];if(!o)continue;var u=o.raw,a=\"warning\";if(u==\"Missing semicolon.\"){var f=o.evidence.substr(o.character);f=f.charAt(f.search(/\\S/)),n==\"error\"&&f&&/[\\w\\d{(['\"]/.test(f)?(o.reason='Missing \";\" before statement',a=\"error\"):a=\"info\"}else{if(disabledWarningsRe.test(u))continue;infoRe.test(u)?a=\"info\":errorsRe.test(u)?(i=!0,a=n):u==\"'{a}' is not defined.\"?a=\"warning\":u==\"'{a}' is defined but never used.\"&&(a=\"info\")}t.push({row:o.line-1,column:o.character-1,text:o.reason,type:a,raw:u}),i}this.sender.emit(\"jslint\",t)}}.call(JavaScriptWorker.prototype)}),define(\"ace/worker/mirror\",[\"require\",\"exports\",\"module\",\"ace/document\",\"ace/lib/lang\"],function(e,t,n){var r=e(\"../document\").Document,i=e(\"../lib/lang\"),s=t.Mirror=function(e){this.sender=e;var t=this.doc=new r(\"\"),n=this.deferredUpdate=i.deferredCall(this.onUpdate.bind(this)),s=this;e.on(\"change\",function(e){t.applyDeltas([e.data]),n.schedule(s.$timeout)})};(function(){this.$timeout=500,this.setTimeout=function(e){this.$timeout=e},this.setValue=function(e){this.doc.setValue(e),this.deferredUpdate.schedule(this.$timeout)},this.getValue=function(e){this.sender.callback(this.doc.getValue(),e)},this.onUpdate=function(){}}).call(s.prototype)}),define(\"ace/document\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/event_emitter\",\"ace/range\",\"ace/anchor\"],function(e,t,n){var r=e(\"./lib/oop\"),i=e(\"./lib/event_emitter\").EventEmitter,s=e(\"./range\").Range,o=e(\"./anchor\").Anchor,u=function(e){this.$lines=[],e.length==0?this.$lines=[\"\"]:Array.isArray(e)?this.insertLines(0,e):this.insert({row:0,column:0},e)};(function(){r.implement(this,i),this.setValue=function(e){var t=this.getLength();this.remove(new s(0,0,t,this.getLine(t-1).length)),this.insert({row:0,column:0},e)},this.getValue=function(){return this.getAllLines().join(this.getNewLineCharacter())},this.createAnchor=function(e,t){return new o(this,e,t)},\"aaa\".split(/a/).length==0?this.$split=function(e){return e.replace(/\\r\\n|\\r/g,\"\\n\").split(\"\\n\")}:this.$split=function(e){return e.split(/\\r\\n|\\r|\\n/)},this.$detectNewLine=function(e){var t=e.match(/^.*?(\\r\\n|\\r|\\n)/m);t?this.$autoNewLine=t[1]:this.$autoNewLine=\"\\n\"},this.getNewLineCharacter=function(){switch(this.$newLineMode){case\"windows\":return\"\\r\\n\";case\"unix\":return\"\\n\";default:return this.$autoNewLine}},this.$autoNewLine=\"\\n\",this.$newLineMode=\"auto\",this.setNewLineMode=function(e){if(this.$newLineMode===e)return;this.$newLineMode=e},this.getNewLineMode=function(){return this.$newLineMode},this.isNewLine=function(e){return e==\"\\r\\n\"||e==\"\\r\"||e==\"\\n\"},this.getLine=function(e){return this.$lines[e]||\"\"},this.getLines=function(e,t){return this.$lines.slice(e,t+1)},this.getAllLines=function(){return this.getLines(0,this.getLength())},this.getLength=function(){return this.$lines.length},this.getTextRange=function(e){if(e.start.row==e.end.row)return this.$lines[e.start.row].substring(e.start.column,e.end.column);var t=this.getLines(e.start.row+1,e.end.row-1);return t.unshift((this.$lines[e.start.row]||\"\").substring(e.start.column)),t.push((this.$lines[e.end.row]||\"\").substring(0,e.end.column)),t.join(this.getNewLineCharacter())},this.$clipPosition=function(e){var t=this.getLength();return e.row>=t&&(e.row=Math.max(0,t-1),e.column=this.getLine(t-1).length),e},this.insert=function(e,t){if(!t||t.length===0)return e;e=this.$clipPosition(e),this.getLength()<=1&&this.$detectNewLine(t);var n=this.$split(t),r=n.splice(0,1)[0],i=n.length==0?null:n.splice(n.length-1,1)[0];return e=this.insertInLine(e,r),i!==null&&(e=this.insertNewLine(e),e=this.insertLines(e.row,n),e=this.insertInLine(e,i||\"\")),e},this.insertLines=function(e,t){if(t.length==0)return{row:e,column:0};if(t.length>65535){var n=this.insertLines(e,t.slice(65535));t=t.slice(0,65535)}var r=[e,0];r.push.apply(r,t),this.$lines.splice.apply(this.$lines,r);var i=new s(e,0,e+t.length,0),o={action:\"insertLines\",range:i,lines:t};return this._emit(\"change\",{data:o}),n||i.end},this.insertNewLine=function(e){e=this.$clipPosition(e);var t=this.$lines[e.row]||\"\";this.$lines[e.row]=t.substring(0,e.column),this.$lines.splice(e.row+1,0,t.substring(e.column,t.length));var n={row:e.row+1,column:0},r={action:\"insertText\",range:s.fromPoints(e,n),text:this.getNewLineCharacter()};return this._emit(\"change\",{data:r}),n},this.insertInLine=function(e,t){if(t.length==0)return e;var n=this.$lines[e.row]||\"\";this.$lines[e.row]=n.substring(0,e.column)+t+n.substring(e.column);var r={row:e.row,column:e.column+t.length},i={action:\"insertText\",range:s.fromPoints(e,r),text:t};return this._emit(\"change\",{data:i}),r},this.remove=function(e){e.start=this.$clipPosition(e.start),e.end=this.$clipPosition(e.end);if(e.isEmpty())return e.start;var t=e.start.row,n=e.end.row;if(e.isMultiLine()){var r=e.start.column==0?t:t+1,i=n-1;e.end.column>0&&this.removeInLine(n,0,e.end.column),i>=r&&this.removeLines(r,i),r!=t&&(this.removeInLine(t,e.start.column,this.getLine(t).length),this.removeNewLine(e.start.row))}else this.removeInLine(t,e.start.column,e.end.column);return e.start},this.removeInLine=function(e,t,n){if(t==n)return;var r=new s(e,t,e,n),i=this.getLine(e),o=i.substring(t,n),u=i.substring(0,t)+i.substring(n,i.length);this.$lines.splice(e,1,u);var a={action:\"removeText\",range:r,text:o};return this._emit(\"change\",{data:a}),r.start},this.removeLines=function(e,t){var n=new s(e,0,t+1,0),r=this.$lines.splice(e,t-e+1),i={action:\"removeLines\",range:n,nl:this.getNewLineCharacter(),lines:r};return this._emit(\"change\",{data:i}),r},this.removeNewLine=function(e){var t=this.getLine(e),n=this.getLine(e+1),r=new s(e,t.length,e+1,0),i=t+n;this.$lines.splice(e,2,i);var o={action:\"removeText\",range:r,text:this.getNewLineCharacter()};this._emit(\"change\",{data:o})},this.replace=function(e,t){if(t.length==0&&e.isEmpty())return e.start;if(t==this.getTextRange(e))return e.end;this.remove(e);if(t)var n=this.insert(e.start,t);else n=e.start;return n},this.applyDeltas=function(e){for(var t=0;t<e.length;t++){var n=e[t],r=s.fromPoints(n.range.start,n.range.end);n.action==\"insertLines\"?this.insertLines(r.start.row,n.lines):n.action==\"insertText\"?this.insert(r.start,n.text):n.action==\"removeLines\"?this.removeLines(r.start.row,r.end.row-1):n.action==\"removeText\"&&this.remove(r)}},this.revertDeltas=function(e){for(var t=e.length-1;t>=0;t--){var n=e[t],r=s.fromPoints(n.range.start,n.range.end);n.action==\"insertLines\"?this.removeLines(r.start.row,r.end.row-1):n.action==\"insertText\"?this.remove(r):n.action==\"removeLines\"?this.insertLines(r.start.row,n.lines):n.action==\"removeText\"&&this.insert(r.start,n.text)}},this.indexToPosition=function(e,t){var n=this.$lines||this.getAllLines(),r=this.getNewLineCharacter().length;for(var i=t||0,s=n.length;i<s;i++){e-=n[i].length+r;if(e<0)return{row:i,column:e+n[i].length+r}}return{row:s-1,column:n[s-1].length}},this.positionToIndex=function(e,t){var n=this.$lines||this.getAllLines(),r=this.getNewLineCharacter().length,i=0,s=Math.min(e.row,n.length);for(var o=t||0;o<s;++o)i+=n[o].length;return i+r*o+e.column}}).call(u.prototype),t.Document=u}),define(\"ace/range\",[\"require\",\"exports\",\"module\"],function(e,t,n){var r=function(e,t,n,r){this.start={row:e,column:t},this.end={row:n,column:r}};(function(){this.isEqual=function(e){return this.start.row==e.start.row&&this.end.row==e.end.row&&this.start.column==e.start.column&&this.end.column==e.end.column},this.toString=function(){return\"Range: [\"+this.start.row+\"/\"+this.start.column+\"] -> [\"+this.end.row+\"/\"+this.end.column+\"]\"},this.contains=function(e,t){return this.compare(e,t)==0},this.compareRange=function(e){var t,n=e.end,r=e.start;return t=this.compare(n.row,n.column),t==1?(t=this.compare(r.row,r.column),t==1?2:t==0?1:0):t==-1?-2:(t=this.compare(r.row,r.column),t==-1?-1:t==1?42:0)},this.comparePoint=function(e){return this.compare(e.row,e.column)},this.containsRange=function(e){return this.comparePoint(e.start)==0&&this.comparePoint(e.end)==0},this.intersects=function(e){var t=this.compareRange(e);return t==-1||t==0||t==1},this.isEnd=function(e,t){return this.end.row==e&&this.end.column==t},this.isStart=function(e,t){return this.start.row==e&&this.start.column==t},this.setStart=function(e,t){typeof e==\"object\"?(this.start.column=e.column,this.start.row=e.row):(this.start.row=e,this.start.column=t)},this.setEnd=function(e,t){typeof e==\"object\"?(this.end.column=e.column,this.end.row=e.row):(this.end.row=e,this.end.column=t)},this.inside=function(e,t){return this.compare(e,t)==0?this.isEnd(e,t)||this.isStart(e,t)?!1:!0:!1},this.insideStart=function(e,t){return this.compare(e,t)==0?this.isEnd(e,t)?!1:!0:!1},this.insideEnd=function(e,t){return this.compare(e,t)==0?this.isStart(e,t)?!1:!0:!1},this.compare=function(e,t){return!this.isMultiLine()&&e===this.start.row?t<this.start.column?-1:t>this.end.column?1:0:e<this.start.row?-1:e>this.end.row?1:this.start.row===e?t>=this.start.column?0:-1:this.end.row===e?t<=this.end.column?0:1:0},this.compareStart=function(e,t){return this.start.row==e&&this.start.column==t?-1:this.compare(e,t)},this.compareEnd=function(e,t){return this.end.row==e&&this.end.column==t?1:this.compare(e,t)},this.compareInside=function(e,t){return this.end.row==e&&this.end.column==t?1:this.start.row==e&&this.start.column==t?-1:this.compare(e,t)},this.clipRows=function(e,t){if(this.end.row>t)var n={row:t+1,column:0};if(this.start.row>t)var i={row:t+1,column:0};if(this.start.row<e)var i={row:e,column:0};if(this.end.row<e)var n={row:e,column:0};return r.fromPoints(i||this.start,n||this.end)},this.extend=function(e,t){var n=this.compare(e,t);if(n==0)return this;if(n==-1)var i={row:e,column:t};else var s={row:e,column:t};return r.fromPoints(i||this.start,s||this.end)},this.isEmpty=function(){return this.start.row==this.end.row&&this.start.column==this.end.column},this.isMultiLine=function(){return this.start.row!==this.end.row},this.clone=function(){return r.fromPoints(this.start,this.end)},this.collapseRows=function(){return this.end.column==0?new r(this.start.row,0,Math.max(this.start.row,this.end.row-1),0):new r(this.start.row,0,this.end.row,0)},this.toScreenRange=function(e){var t=e.documentToScreenPosition(this.start),n=e.documentToScreenPosition(this.end);return new r(t.row,t.column,n.row,n.column)}}).call(r.prototype),r.fromPoints=function(e,t){return new r(e.row,e.column,t.row,t.column)},t.Range=r}),define(\"ace/anchor\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/event_emitter\"],function(e,t,n){var r=e(\"./lib/oop\"),i=e(\"./lib/event_emitter\").EventEmitter,s=t.Anchor=function(e,t,n){this.document=e,typeof n==\"undefined\"?this.setPosition(t.row,t.column):this.setPosition(t,n),this.$onChange=this.onChange.bind(this),e.on(\"change\",this.$onChange)};(function(){r.implement(this,i),this.getPosition=function(){return this.$clipPositionToDocument(this.row,this.column)},this.getDocument=function(){return this.document},this.onChange=function(e){var t=e.data,n=t.range;if(n.start.row==n.end.row&&n.start.row!=this.row)return;if(n.start.row>this.row)return;if(n.start.row==this.row&&n.start.column>this.column)return;var r=this.row,i=this.column;t.action===\"insertText\"?n.start.row===r&&n.start.column<=i?n.start.row===n.end.row?i+=n.end.column-n.start.column:(i-=n.start.column,r+=n.end.row-n.start.row):n.start.row!==n.end.row&&n.start.row<r&&(r+=n.end.row-n.start.row):t.action===\"insertLines\"?n.start.row<=r&&(r+=n.end.row-n.start.row):t.action==\"removeText\"?n.start.row==r&&n.start.column<i?n.end.column>=i?i=n.start.column:i=Math.max(0,i-(n.end.column-n.start.column)):n.start.row!==n.end.row&&n.start.row<r?(n.end.row==r&&(i=Math.max(0,i-n.end.column)+n.start.column),r-=n.end.row-n.start.row):n.end.row==r&&(r-=n.end.row-n.start.row,i=Math.max(0,i-n.end.column)+n.start.column):t.action==\"removeLines\"&&n.start.row<=r&&(n.end.row<=r?r-=n.end.row-n.start.row:(r=n.start.row,i=0)),this.setPosition(r,i,!0)},this.setPosition=function(e,t,n){var r;n?r={row:e,column:t}:r=this.$clipPositionToDocument(e,t);if(this.row==r.row&&this.column==r.column)return;var i={row:this.row,column:this.column};this.row=r.row,this.column=r.column,this._emit(\"change\",{old:i,value:r})},this.detach=function(){this.document.removeEventListener(\"change\",this.$onChange)},this.$clipPositionToDocument=function(e,t){var n={};return e>=this.document.getLength()?(n.row=Math.max(0,this.document.getLength()-1),n.column=this.document.getLine(n.row).length):e<0?(n.row=0,n.column=0):(n.row=e,n.column=Math.min(this.document.getLine(n.row).length,Math.max(0,t))),t<0&&(n.column=0),n}}).call(s.prototype)}),define(\"ace/lib/lang\",[\"require\",\"exports\",\"module\"],function(e,t,n){t.stringReverse=function(e){return e.split(\"\").reverse().join(\"\")},t.stringRepeat=function(e,t){var n=\"\";while(t>0){t&1&&(n+=e);if(t>>=1)e+=e}return n};var r=/^\\s\\s*/,i=/\\s\\s*$/;t.stringTrimLeft=function(e){return e.replace(r,\"\")},t.stringTrimRight=function(e){return e.replace(i,\"\")},t.copyObject=function(e){var t={};for(var n in e)t[n]=e[n];return t},t.copyArray=function(e){var t=[];for(var n=0,r=e.length;n<r;n++)e[n]&&typeof e[n]==\"object\"?t[n]=this.copyObject(e[n]):t[n]=e[n];return t},t.deepCopy=function(e){if(typeof e!=\"object\")return e;var t=e.constructor();for(var n in e)typeof e[n]==\"object\"?t[n]=this.deepCopy(e[n]):t[n]=e[n];return t},t.arrayToMap=function(e){var t={};for(var n=0;n<e.length;n++)t[e[n]]=1;return t},t.createMap=function(e){var t=Object.create(null);for(var n in e)t[n]=e[n];return t},t.arrayRemove=function(e,t){for(var n=0;n<=e.length;n++)t===e[n]&&e.splice(n,1)},t.escapeRegExp=function(e){return e.replace(/([.*+?^${}()|[\\]\\/\\\\])/g,\"\\\\$1\")},t.escapeHTML=function(e){return e.replace(/&/g,\"&#38;\").replace(/\"/g,\"&#34;\").replace(/'/g,\"&#39;\").replace(/</g,\"&#60;\")},t.getMatchOffsets=function(e,t){var n=[];return e.replace(t,function(e){n.push({offset:arguments[arguments.length-2],length:e.length})}),n},t.deferredCall=function(e){var t=null,n=function(){t=null,e()},r=function(e){return r.cancel(),t=setTimeout(n,e||0),r};return r.schedule=r,r.call=function(){return this.cancel(),e(),r},r.cancel=function(){return clearTimeout(t),t=null,r},r},t.delayedCall=function(e,t){var n=null,r=function(){n=null,e()},i=function(e){n&&clearTimeout(n),n=setTimeout(r,e||t)};return i.delay=i,i.schedule=function(e){n==null&&(n=setTimeout(r,e||0))},i.call=function(){this.cancel(),e()},i.cancel=function(){n&&clearTimeout(n),n=null},i.isPending=function(){return n},i}}),define(\"ace/mode/javascript/jshint\",[\"require\",\"exports\",\"module\"],function(e,t,n){var r=function(){function ot(){}function ut(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function at(e,t){i[e]===undefined&&n[e]===undefined&&bt(\"Bad option: '\"+e+\"'.\",t)}function ft(e){return Object.prototype.toString.call(e)===\"[object String]\"}function lt(e){return e>=\"a\"&&e<=\"z￿\"||e>=\"A\"&&e<=\"Z￿\"}function ct(e){return e>=\"0\"&&e<=\"9\"}function ht(e,t){return e?!e.identifier||e.value!==t?!1:!0:!1}function pt(e,t){return e.replace(/\\{([^{}]*)\\}/g,function(e,n){var r=t[n];return typeof r==\"string\"||typeof r==\"number\"?r:e})}function dt(e,t){var n;for(n in t)ut(t,n)&&!ut(r.blacklist,n)&&(e[n]=t[n])}function vt(){Object.keys(r.blacklist).forEach(function(e){delete O[e]})}function mt(){A.couch&&dt(O,a),A.rhino&&dt(O,H),A.prototypejs&&dt(O,D),A.node&&(dt(O,k),A.globalstrict=!0),A.devel&&dt(O,l),A.dojo&&dt(O,c),A.browser&&dt(O,u),A.nonstandard&&dt(O,I),A.jquery&&dt(O,w),A.mootools&&dt(O,N),A.worker&&dt(O,J),A.wsh&&dt(O,K),A.esnext&&V(),A.globalstrict&&A.strict!==!1&&(A.strict=!0),A.yui&&dt(O,Q)}function gt(e,t,n){var r=Math.floor(t/E.length*100);throw{name:\"JSHintError\",line:t,character:n,message:e+\" (\"+r+\"% scanned).\",raw:e}}function yt(e,t,n,i){return r.undefs.push([e,t,n,i])}function bt(e,t,n,i,s,o){var u,a,f;return t=t||C,t.id===\"(end)\"&&(t=z),a=t.line||0,u=t.from||0,f={id:\"(error)\",raw:e,evidence:E[a-1]||\"\",line:a,character:u,scope:r.scope,a:n,b:i,c:s,d:o},f.reason=pt(e,f),r.errors.push(f),A.passfail&&gt(\"Stopping. \",a,u),$+=1,$>=A.maxerr&&gt(\"Too many errors.\",a,u),f}function wt(e,t,n,r,i,s,o){return bt(e,{line:t,from:n},r,i,s,o)}function Et(e,t,n,r,i,s){bt(e,t,n,r,i,s)}function St(e,t,n,r,i,s,o){return Et(e,{line:t,from:n},r,i,s,o)}function xt(e,t){var n;return n={id:\"(internal)\",elem:e,value:t},r.internals.push(n),n}function Nt(e,t,n){e===\"hasOwnProperty\"&&bt(\"'hasOwnProperty' is a really bad name.\"),t===\"exception\"&&ut(h[\"(context)\"],e)&&h[e]!==!0&&!A.node&&bt(\"Value of '{a}' may be overwritten in IE.\",C,e),ut(h,e)&&!h[\"(global)\"]&&(h[e]===!0?A.latedef&&bt(\"'{a}' was used before it was defined.\",C,e):!A.shadow&&t!==\"exception\"&&bt(\"'{a}' is already defined.\",C,e)),h[e]=t,n&&(h[\"(tokens)\"][e]=n),h[\"(global)\"]?(v[e]=h,ut(m,e)&&(A.latedef&&bt(\"'{a}' was used before it was defined.\",C,e),delete m[e])):B[e]=h}function Ct(){var e=C,t=e.value,i=A.quotmark,u={},a,l,c,p,d,v,m;switch(t){case\"*/\":Et(\"Unbegun comment.\");break;case\"/*members\":case\"/*member\":t=\"/*members\",T||(T={}),l=T,A.quotmark=!1;break;case\"/*jshint\":case\"/*jslint\":l=A,c=n;break;case\"/*global\":l=u;break;default:Et(\"What?\")}p=Tt.token();e:for(;;){m=!1;for(;;){if(p.type===\"special\"&&p.value===\"*/\")break e;if(p.id!==\"(endline)\"&&p.id!==\",\")break;p=Tt.token()}t===\"/*global\"&&p.value===\"-\"&&(m=!0,p=Tt.token()),p.type!==\"(string)\"&&p.type!==\"(identifier)\"&&t!==\"/*members\"&&Et(\"Bad option.\",p),v=Tt.token();if(v.id===\":\"){v=Tt.token(),l===T&&Et(\"Expected '{a}' and instead saw '{b}'.\",p,\"*/\",\":\"),t===\"/*jshint\"&&at(p.value,p);var g=[\"maxstatements\",\"maxparams\",\"maxdepth\",\"maxcomplexity\",\"maxerr\",\"maxlen\",\"indent\"];if(g.indexOf(p.value)>-1&&(t===\"/*jshint\"||t===\"/*jslint\"))a=+v.value,(typeof a!=\"number\"||!isFinite(a)||a<=0||Math.floor(a)!==a)&&Et(\"Expected a small integer and instead saw '{a}'.\",v,v.value),p.value===\"indent\"&&(l.white=!0),l[p.value]=a;else if(p.value===\"validthis\")h[\"(global)\"]?Et(\"Option 'validthis' can't be used in a global scope.\"):v.value===\"true\"||v.value===\"false\"?l[p.value]=v.value===\"true\":Et(\"Bad option value.\",v);else if(p.value===\"quotmark\"&&t===\"/*jshint\")switch(v.value){case\"true\":l.quotmark=!0;break;case\"false\":l.quotmark=!1;break;case\"double\":case\"single\":l.quotmark=v.value;break;default:Et(\"Bad option value.\",v)}else v.value===\"true\"||v.value===\"false\"?(t===\"/*jslint\"?(d=o[p.value]||p.value,l[d]=v.value===\"true\",s[d]!==undefined&&(l[d]=!l[d])):l[p.value]=v.value===\"true\",p.value===\"newcap\"&&(l[\"(explicitNewcap)\"]=!0)):Et(\"Bad option value.\",v);p=Tt.token()}else(t===\"/*jshint\"||t===\"/*jslint\")&&Et(\"Missing option value.\",p),l[p.value]=!1,t===\"/*global\"&&m===!0&&(r.blacklist[p.value]=p.value,vt()),p=v}t===\"/*members\"&&(A.quotmark=i),dt(O,u);for(var y in u)ut(u,y)&&(f[y]=e);c&&mt()}function kt(e){var t=e||0,n=0,r;while(n<=t)r=S[n],r||(r=S[n]=Tt.token()),n+=1;return r}function Lt(t,n){switch(z.id){case\"(number)\":C.id===\".\"&&bt(\"A dot following a number can be confused with a decimal point.\",z);break;case\"-\":(C.id===\"-\"||C.id===\"--\")&&bt(\"Confusing minusses.\");break;case\"+\":(C.id===\"+\"||C.id===\"++\")&&bt(\"Confusing plusses.\")}if(z.type===\"(string)\"||z.identifier)e=z.value;t&&C.id!==t&&(n?C.id===\"(end)\"?bt(\"Unmatched '{a}'.\",n,n.id):bt(\"Expected '{a}' to match '{b}' from line {c} and instead saw '{d}'.\",C,t,n.id,n.line,C.value):(C.type!==\"(identifier)\"||C.value!==t)&&bt(\"Expected '{a}' and instead saw '{b}'.\",C,t,C.value)),_=z,z=C;for(;;){C=S.shift()||Tt.token();if(C.id===\"(end)\"||C.id===\"(error)\")return;if(C.type===\"special\")Ct();else if(C.id!==\"(endline)\")break}}function At(t,n){var r,i=!1,s=!1;C.id===\"(end)\"&&Et(\"Unexpected early end of program.\",z),Lt(),n&&(e=\"anonymous\",h[\"(verb)\"]=z.value);if(n===!0&&z.fud)r=z.fud();else{if(z.nud)r=z.nud();else{if(C.type===\"(number)\"&&z.id===\".\")return bt(\"A leading decimal point can be confused with a dot: '.{a}'.\",z,C.value),Lt(),z;Et(\"Expected an identifier and instead saw '{a}'.\",z,z.id)}while(t<C.lbp)i=z.value===\"Array\",s=z.value===\"Object\",r&&(r.value||r.first&&r.first.value)&&(r.value!==\"new\"||r.first&&r.first.value&&r.first.value===\".\")&&(i=!1,r.value!==z.value&&(s=!1)),Lt(),i&&z.id===\"(\"&&C.id===\")\"&&bt(\"Use the array literal notation [].\",z),s&&z.id===\"(\"&&C.id===\")\"&&bt(\"Use the object literal notation {}.\",z),z.led?r=z.led(r):Et(\"Expected an operator and instead saw '{a}'.\",z,z.id)}return r}function Ot(e,t){e=e||z,t=t||C,A.white&&e.character!==t.from&&e.line===t.line&&(e.from+=e.character-e.from,bt(\"Unexpected space after '{a}'.\",e,e.value))}function Mt(e,t){e=e||z,t=t||C,A.white&&(e.character!==t.from||e.line!==t.line)&&bt(\"Unexpected space before '{a}'.\",t,t.value)}function _t(e,t){e=e||z,t=t||C,A.white&&!e.comment&&e.line===t.line&&Ot(e,t)}function Dt(e,t){if(A.white){e=e||z,t=t||C;if(e.value===\";\"&&t.value===\";\")return;e.line===t.line&&e.character===t.from&&(e.from+=e.character-e.from,bt(\"Missing space after '{a}'.\",e,e.value))}}function Pt(e,t){e=e||z,t=t||C,!A.laxbreak&&e.line!==t.line?bt(\"Bad line breaking before '{a}'.\",t,t.id):A.white&&(e=e||z,t=t||C,e.character===t.from&&(e.from+=e.character-e.from,bt(\"Missing space after '{a}'.\",e,e.value)))}function Ht(e){var t;A.white&&C.id!==\"(end)\"&&(t=y+(e||0),C.from!==t&&bt(\"Expected '{a}' to have an indentation at {b} instead at {c}.\",C,C.value,t,C.from))}function Bt(e){e=e||z,e.line!==C.line&&bt(\"Line breaking error '{a}'.\",e,e.value)}function jt(){z.line!==C.line?A.laxcomma||(jt.first&&(bt(\"Comma warnings can be turned off with 'laxcomma'\"),jt.first=!1),bt(\"Bad line breaking before '{a}'.\",z,C.id)):!z.comment&&z.character!==C.from&&A.white&&(z.from+=z.character-z.from,bt(\"Unexpected space after '{a}'.\",z,z.value)),Lt(\",\"),Dt(z,C)}function Ft(e,t){var n=R[e];if(!n||typeof n!=\"object\")R[e]=n={id:e,lbp:t,value:e};return n}function It(e){return Ft(e,0)}function qt(e,t){var n=It(e);return n.identifier=n.reserved=!0,n.fud=t,n}function Rt(e,t){var n=qt(e,t);return n.block=!0,n}function Ut(e){var t=e.id.charAt(0);if(t>=\"a\"&&t<=\"z\"||t>=\"A\"&&t<=\"Z\")e.identifier=e.reserved=!0;return e}function zt(e,t){var n=Ft(e,150);return Ut(n),n.nud=typeof t==\"function\"?t:function(){this.right=At(150),this.arity=\"unary\";if(this.id===\"++\"||this.id===\"--\")A.plusplus?bt(\"Unexpected use of '{a}'.\",this,this.id):(!this.right.identifier||this.right.reserved)&&this.right.id!==\".\"&&this.right.id!==\"[\"&&bt(\"Bad operand.\",this);return this},n}function Wt(e,t){var n=It(e);return n.type=e,n.nud=t,n}function Xt(e,t){var n=Wt(e,t);return n.identifier=n.reserved=!0,n}function Vt(e,t){return Xt(e,function(){return typeof t==\"function\"&&t(this),this})}function $t(e,t,n,r){var i=Ft(e,n);return Ut(i),i.led=function(i){return r||(Pt(_,z),Dt(z,C)),e===\"in\"&&i.id===\"!\"&&bt(\"Confusing use of '{a}'.\",i,\"!\"),typeof t==\"function\"?t(i,this):(this.left=i,this.right=At(n),this)},i}function Jt(e,t){var n=Ft(e,100);return n.led=function(e){Pt(_,z),Dt(z,C);var n=At(100);return ht(e,\"NaN\")||ht(n,\"NaN\")?bt(\"Use the isNaN function to compare with NaN.\",this):t&&t.apply(this,[e,n]),e.id===\"!\"&&bt(\"Confusing use of '{a}'.\",e,\"!\"),n.id===\"!\"&&bt(\"Confusing use of '{a}'.\",n,\"!\"),this.left=e,this.right=n,this},n}function Kt(e){return e&&(e.type===\"(number)\"&&+e.value===0||e.type===\"(string)\"&&e.value===\"\"||e.type===\"null\"&&!A.eqnull||e.type===\"true\"||e.type===\"false\"||e.type===\"undefined\")}function Qt(e){return Ft(e,20).exps=!0,$t(e,function(e,t){t.left=e,O[e.value]===!1&&B[e.value][\"(global)\"]===!0?bt(\"Read only.\",e):e[\"function\"]&&bt(\"'{a}' is a function.\",e,e.value);if(e){A.esnext&&h[e.value]===\"const\"&&bt(\"Attempting to override '{a}' which is a constant\",e,e.value);if(e.id===\".\"||e.id===\"[\")return(!e.left||e.left.value===\"arguments\")&&bt(\"Bad assignment.\",t),t.right=At(19),t;if(e.identifier&&!e.reserved)return h[e.value]===\"exception\"&&bt(\"Do not assign to the exception parameter.\",e),t.right=At(19),t;e===R[\"function\"]&&bt(\"Expected an identifier in an assignment and instead saw a function invocation.\",z)}Et(\"Bad assignment.\",t)},20)}function Gt(e,t,n){var r=Ft(e,n);return Ut(r),r.led=typeof t==\"function\"?t:function(e){return A.bitwise&&bt(\"Unexpected use of '{a}'.\",this,this.id),this.left=e,this.right=At(n),this},r}function Yt(e){return Ft(e,20).exps=!0,$t(e,function(e,t){A.bitwise&&bt(\"Unexpected use of '{a}'.\",t,t.id),Dt(_,z),Dt(z,C);if(e)return e.id===\".\"||e.id===\"[\"||e.identifier&&!e.reserved?(At(19),t):(e===R[\"function\"]&&bt(\"Expected an identifier in an assignment, and instead saw a function invocation.\",z),t);Et(\"Bad assignment.\",t)},20)}function Zt(e){var t=Ft(e,150);return t.led=function(e){return A.plusplus?bt(\"Unexpected use of '{a}'.\",this,this.id):(!e.identifier||e.reserved)&&e.id!==\".\"&&e.id!==\"[\"&&bt(\"Bad operand.\",this),this.left=e,this},t}function en(e){if(C.identifier)return Lt(),z.reserved&&!A.es5&&(!e||z.value!==\"undefined\")&&bt(\"Expected an identifier and instead saw '{a}' (a reserved word).\",z,z.id),z.value}function tn(e){var t=en(e);if(t)return t;z.id===\"function\"&&C.id===\"(\"?bt(\"Missing name in function declaration.\"):Et(\"Expected an identifier and instead saw '{a}'.\",C,C.value)}function nn(e){var t=0,n;if(C.id!==\";\"||L)return;for(;;){n=kt(t);if(n.reach)return;if(n.id!==\"(endline)\"){if(n.id===\"function\"){if(!A.latedef)break;bt(\"Inner functions should be listed at the top of the outer function.\",n);break}bt(\"Unreachable '{a}' after '{b}'.\",n,n.value,e);break}t+=1}}function rn(e){var t=y,n,r=B,i=C;if(i.id===\";\"){Lt(\";\");return}i.identifier&&!i.reserved&&kt().id===\":\"&&(Lt(),Lt(\":\"),B=Object.create(r),Nt(i.value,\"label\"),!C.labelled&&C.value!==\"{\"&&bt(\"Label '{a}' on {b} statement.\",C,i.value,C.value),it.test(i.value+\":\")&&bt(\"Label '{a}' looks like a javascript url.\",i,i.value),C.label=i.value,i=C);if(i.id===\"{\"){un(!0,!0);return}e||Ht(),n=At(0,!0);if(!i.block){!A.expr&&(!n||!n.exps)?bt(\"Expected an assignment or function call and instead saw an expression.\",z):A.nonew&&n.id===\"(\"&&n.left.id===\"new\"&&bt(\"Do not use 'new' for side effects.\",i);if(C.id===\",\")return jt();C.id!==\";\"?A.asi||(!A.lastsemic||C.id!==\"}\"||C.line!==z.line)&&wt(\"Missing semicolon.\",z.line,z.character):(Ot(z,C),Lt(\";\"),Dt(z,C))}return y=t,B=r,n}function sn(e){var t=[],n;while(!C.reach&&C.id!==\"(end)\")C.id===\";\"?(n=kt(),(!n||n.id!==\"(\")&&bt(\"Unnecessary semicolon.\"),Lt(\";\")):t.push(rn(e===C.line));return t}function on(){var e,t,n;for(;;){if(C.id===\"(string)\"){t=kt(0);if(t.id===\"(endline)\"){e=1;do n=kt(e),e+=1;while(n.id===\"(endline)\");if(n.id!==\";\"){if(n.id!==\"(string)\"&&n.id!==\"(number)\"&&n.id!==\"(regexp)\"&&n.identifier!==!0&&n.id!==\"}\")break;bt(\"Missing semicolon.\",C)}else t=n}else if(t.id===\"}\")bt(\"Missing semicolon.\",t);else if(t.id!==\";\")break;Ht(),Lt(),q[z.value]&&bt('Unnecessary directive \"{a}\".',z,z.value),z.value===\"use strict\"&&(A[\"(explicitNewcap)\"]||(A.newcap=!0),A.undef=!0),q[z.value]=!0,t.id===\";\"&&Lt(\";\");continue}break}}function un(e,t,n){var r,i=g,s=y,o,u=B,a,f,l;g=e;if(!e||!A.funcscope)B=Object.create(B);Dt(z,C),a=C;var c=h[\"(metrics)\"];c.nestedBlockDepth+=1,c.verifyMaxNestedBlockDepthPerFunction();if(C.id===\"{\"){Lt(\"{\"),f=z.line;if(C.id!==\"}\"){y+=A.indent;while(!e&&C.from>y)y+=A.indent;if(n){o={};for(l in q)ut(q,l)&&(o[l]=q[l]);on(),A.strict&&h[\"(context)\"][\"(global)\"]&&!o[\"use strict\"]&&!q[\"use strict\"]&&bt('Missing \"use strict\" statement.')}r=sn(f),c.statementCount+=r.length,n&&(q=o),y-=A.indent,f!==C.line&&Ht()}else f!==C.line&&Ht();Lt(\"}\",a),y=s}else e?((!t||A.curly)&&bt(\"Expected '{a}' and instead saw '{b}'.\",C,\"{\",C.value),L=!0,y+=A.indent,r=[rn(C.line===z.line)],y-=A.indent,L=!1):Et(\"Expected '{a}' and instead saw '{b}'.\",C,\"{\",C.value);h[\"(verb)\"]=null;if(!e||!A.funcscope)B=u;return g=i,e&&A.noempty&&(!r||r.length===0)&&bt(\"Empty block.\"),c.nestedBlockDepth-=1,r}function an(e){T&&typeof T[e]!=\"boolean\"&&bt(\"Unexpected /*member '{a}'.\",z,e),typeof x[e]==\"number\"?x[e]+=1:x[e]=1}function fn(e){var t=e.value,n=e.line,r=m[t];typeof r==\"function\"&&(r=!1),r?r[r.length-1]!==n&&r.push(n):(r=[n],m[t]=r)}function ln(){var e=en(!0);return e||(C.id===\"(string)\"?(e=C.value,Lt()):C.id===\"(number)\"&&(e=C.value.toString(),Lt())),e}function cn(){var e=C,t=[],n;Lt(\"(\"),_t();if(C.id===\")\"){Lt(\")\");return}for(;;){n=tn(!0),t.push(n),Nt(n,\"unused\",z);if(C.id!==\",\")return Lt(\")\",e),_t(_,z),t;jt()}}function hn(t,n){var r,i=A,s=B;return A=Object.create(A),B=Object.create(B),h={\"(name)\":t||'\"'+e+'\"',\"(line)\":C.line,\"(character)\":C.character,\"(context)\":h,\"(breakage)\":0,\"(loopage)\":0,\"(metrics)\":pn(C),\"(scope)\":B,\"(statement)\":n,\"(tokens)\":{}},r=h,z.funct=h,d.push(h),t&&Nt(t,\"function\"),h[\"(params)\"]=cn(),h[\"(metrics)\"].verifyMaxParametersPerFunction(h[\"(params)\"]),un(!1,!1,!0),h[\"(metrics)\"].verifyMaxStatementsPerFunction(),h[\"(metrics)\"].verifyMaxComplexityPerFunction(),B=s,A=i,h[\"(last)\"]=z.line,h[\"(lastcharacter)\"]=z.character,h=h[\"(context)\"],r}function pn(e){return{statementCount:0,nestedBlockDepth:-1,ComplexityCount:1,verifyMaxStatementsPerFunction:function(){if(A.maxstatements&&this.statementCount>A.maxstatements){var t=\"Too many statements per function (\"+this.statementCount+\").\";bt(t,e)}},verifyMaxParametersPerFunction:function(t){t=t||[];if(A.maxparams&&t.length>A.maxparams){var n=\"Too many parameters per function (\"+t.length+\").\";bt(n,e)}},verifyMaxNestedBlockDepthPerFunction:function(){if(A.maxdepth&&this.nestedBlockDepth>0&&this.nestedBlockDepth===A.maxdepth+1){var e=\"Blocks are nested too deeply (\"+this.nestedBlockDepth+\").\";bt(e)}},verifyMaxComplexityPerFunction:function(){var t=A.maxcomplexity,n=this.ComplexityCount;if(t&&n>t){var r=\"Cyclomatic complexity is too high per function (\"+n+\").\";bt(r,e)}}}}function dn(){h[\"(metrics)\"].ComplexityCount+=1}function mn(){function e(){var e={},t=C;Lt(\"{\");if(C.id!==\"}\")for(;;){if(C.id===\"(end)\")Et(\"Missing '}' to match '{' from line {a}.\",C,t.line);else{if(C.id===\"}\"){bt(\"Unexpected comma.\",z);break}C.id===\",\"?Et(\"Unexpected comma.\",C):C.id!==\"(string)\"&&bt(\"Expected a string and instead saw {a}.\",C,C.value)}e[C.value]===!0?bt(\"Duplicate key '{a}'.\",C,C.value):C.value===\"__proto__\"&&!A.proto||C.value===\"__iterator__\"&&!A.iterator?bt(\"The '{a}' key may produce unexpected results.\",C,C.value):e[C.value]=!0,Lt(),Lt(\":\"),mn();if(C.id!==\",\")break;Lt(\",\")}Lt(\"}\")}function t(){var e=C;Lt(\"[\");if(C.id!==\"]\")for(;;){if(C.id===\"(end)\")Et(\"Missing ']' to match '[' from line {a}.\",C,e.line);else{if(C.id===\"]\"){bt(\"Unexpected comma.\",z);break}C.id===\",\"&&Et(\"Unexpected comma.\",C)}mn();if(C.id!==\",\")break;Lt(\",\")}Lt(\"]\")}switch(C.id){case\"{\":e();break;case\"[\":t();break;case\"true\":case\"false\":case\"null\":case\"(number)\":case\"(string)\":Lt();break;case\"-\":Lt(\"-\"),z.character!==C.from&&bt(\"Unexpected space after '-'.\",z),Ot(z,C),Lt(\"(number)\");break;default:Et(\"Expected a JSON value.\",C)}}var e,t={\"<\":!0,\"<=\":!0,\"==\":!0,\"===\":!0,\"!==\":!0,\"!=\":!0,\">\":!0,\">=\":!0,\"+\":!0,\"-\":!0,\"*\":!0,\"/\":!0,\"%\":!0},n={asi:!0,bitwise:!0,boss:!0,browser:!0,camelcase:!0,couch:!0,curly:!0,debug:!0,devel:!0,dojo:!0,eqeqeq:!0,eqnull:!0,es5:!0,esnext:!0,evil:!0,expr:!0,forin:!0,funcscope:!0,globalstrict:!0,immed:!0,iterator:!0,jquery:!0,lastsemic:!0,latedef:!0,laxbreak:!0,laxcomma:!0,loopfunc:!0,mootools:!0,multistr:!0,newcap:!0,noarg:!0,node:!0,noempty:!0,nonew:!0,nonstandard:!0,nomen:!0,onevar:!0,onecase:!0,passfail:!0,plusplus:!0,proto:!0,prototypejs:!0,regexdash:!0,regexp:!0,rhino:!0,undef:!0,unused:!0,scripturl:!0,shadow:!0,smarttabs:!0,strict:!0,sub:!0,supernew:!0,trailing:!0,validthis:!0,withstmt:!0,white:!0,worker:!0,wsh:!0,yui:!0},i={maxlen:!1,indent:!1,maxerr:!1,predef:!1,quotmark:!1,scope:!1,maxstatements:!1,maxdepth:!1,maxparams:!1,maxcomplexity:!1},s={bitwise:!0,forin:!0,newcap:!0,nomen:!0,plusplus:!0,regexp:!0,undef:!0,white:!0,eqeqeq:!0,onevar:!0},o={eqeq:\"eqeqeq\",vars:\"onevar\",windows:\"wsh\"},u={ArrayBuffer:!1,ArrayBufferView:!1,Audio:!1,Blob:!1,addEventListener:!1,applicationCache:!1,atob:!1,blur:!1,btoa:!1,clearInterval:!1,clearTimeout:!1,close:!1,closed:!1,DataView:!1,DOMParser:!1,defaultStatus:!1,document:!1,event:!1,FileReader:!1,Float32Array:!1,Float64Array:!1,FormData:!1,focus:!1,frames:!1,getComputedStyle:!1,HTMLElement:!1,HTMLAnchorElement:!1,HTMLBaseElement:!1,HTMLBlockquoteElement:!1,HTMLBodyElement:!1,HTMLBRElement:!1,HTMLButtonElement:!1,HTMLCanvasElement:!1,HTMLDirectoryElement:!1,HTMLDivElement:!1,HTMLDListElement:!1,HTMLFieldSetElement:!1,HTMLFontElement:!1,HTMLFormElement:!1,HTMLFrameElement:!1,HTMLFrameSetElement:!1,HTMLHeadElement:!1,HTMLHeadingElement:!1,HTMLHRElement:!1,HTMLHtmlElement:!1,HTMLIFrameElement:!1,HTMLImageElement:!1,HTMLInputElement:!1,HTMLIsIndexElement:!1,HTMLLabelElement:!1,HTMLLayerElement:!1,HTMLLegendElement:!1,HTMLLIElement:!1,HTMLLinkElement:!1,HTMLMapElement:!1,HTMLMenuElement:!1,HTMLMetaElement:!1,HTMLModElement:!1,HTMLObjectElement:!1,HTMLOListElement:!1,HTMLOptGroupElement:!1,HTMLOptionElement:!1,HTMLParagraphElement:!1,HTMLParamElement:!1,HTMLPreElement:!1,HTMLQuoteElement:!1,HTMLScriptElement:!1,HTMLSelectElement:!1,HTMLStyleElement:!1,HTMLTableCaptionElement:!1,HTMLTableCellElement:!1,HTMLTableColElement:!1,HTMLTableElement:!1,HTMLTableRowElement:!1,HTMLTableSectionElement:!1,HTMLTextAreaElement:!1,HTMLTitleElement:!1,HTMLUListElement:!1,HTMLVideoElement:!1,history:!1,Int16Array:!1,Int32Array:!1,Int8Array:!1,Image:!1,length:!1,localStorage:!1,location:!1,MessageChannel:!1,MessageEvent:!1,MessagePort:!1,moveBy:!1,moveTo:!1,MutationObserver:!1,name:!1,Node:!1,NodeFilter:!1,navigator:!1,onbeforeunload:!0,onblur:!0,onerror:!0,onfocus:!0,onload:!0,onresize:!0,onunload:!0,open:!1,openDatabase:!1,opener:!1,Option:!1,parent:!1,print:!1,removeEventListener:!1,resizeBy:!1,resizeTo:!1,screen:!1,scroll:!1,scrollBy:!1,scrollTo:!1,sessionStorage:!1,setInterval:!1,setTimeout:!1,SharedWorker:!1,status:!1,top:!1,Uint16Array:!1,Uint32Array:!1,Uint8Array:!1,WebSocket:!1,window:!1,Worker:!1,XMLHttpRequest:!1,XMLSerializer:!1,XPathEvaluator:!1,XPathException:!1,XPathExpression:!1,XPathNamespace:!1,XPathNSResolver:!1,XPathResult:!1},a={require:!1,respond:!1,getRow:!1,emit:!1,send:!1,start:!1,sum:!1,log:!1,exports:!1,module:!1,provides:!1},f,l={alert:!1,confirm:!1,console:!1,Debug:!1,opera:!1,prompt:!1},c={dojo:!1,dijit:!1,dojox:!1,define:!1,require:!1},h,p=[\"closure\",\"exception\",\"global\",\"label\",\"outer\",\"unused\",\"var\"],d,v,m,g,y,b,w={$:!1,jQuery:!1},E,S,x,T,N={$:!1,$$:!1,Asset:!1,Browser:!1,Chain:!1,Class:!1,Color:!1,Cookie:!1,Core:!1,Document:!1,DomReady:!1,DOMEvent:!1,DOMReady:!1,Drag:!1,Element:!1,Elements:!1,Event:!1,Events:!1,Fx:!1,Group:!1,Hash:!1,HtmlTable:!1,Iframe:!1,IframeShim:!1,InputValidator:!1,instanceOf:!1,Keyboard:!1,Locale:!1,Mask:!1,MooTools:!1,Native:!1,Options:!1,OverText:!1,Request:!1,Scroller:!1,Slick:!1,Slider:!1,Sortables:!1,Spinner:!1,Swiff:!1,Tips:!1,Type:!1,typeOf:!1,URI:!1,Window:!1},C,k={__filename:!1,__dirname:!1,Buffer:!1,console:!1,exports:!0,GLOBAL:!1,global:!1,module:!1,process:!1,require:!1,setTimeout:!1,clearTimeout:!1,setInterval:!1,clearInterval:!1},L,A,O,M,_,D={$:!1,$$:!1,$A:!1,$F:!1,$H:!1,$R:!1,$break:!1,$continue:!1,$w:!1,Abstract:!1,Ajax:!1,Class:!1,Enumerable:!1,Element:!1,Event:!1,Field:!1,Form:!1,Hash:!1,Insertion:!1,ObjectRange:!1,PeriodicalExecuter:!1,Position:!1,Prototype:!1,Selector:!1,Template:!1,Toggle:!1,Try:!1,Autocompleter:!1,Builder:!1,Control:!1,Draggable:!1,Draggables:!1,Droppables:!1,Effect:!1,Sortable:!1,SortableObserver:!1,Sound:!1,Scriptaculous:!1},P,H={defineClass:!1,deserialize:!1,gc:!1,help:!1,importPackage:!1,java:!1,load:!1,loadClass:!1,print:!1,quit:!1,readFile:!1,readUrl:!1,runCommand:!1,seal:!1,serialize:!1,spawn:!1,sync:!1,toint32:!1,version:!1},B,j,F={Array:!1,Boolean:!1,Date:!1,decodeURI:!1,decodeURIComponent:!1,encodeURI:!1,encodeURIComponent:!1,Error:!1,eval:!1,EvalError:!1,Function:!1,hasOwnProperty:!1,isFinite:!1,isNaN:!1,JSON:!1,Map:!1,Math:!1,NaN:!1,Number:!1,Object:!1,parseInt:!1,parseFloat:!1,RangeError:!1,ReferenceError:!1,RegExp:!1,Set:!1,String:!1,SyntaxError:!1,TypeError:!1,URIError:!1,WeakMap:!1},I={escape:!1,unescape:!1},q,R={},U,z,W,X,V,$,J={importScripts:!0,postMessage:!0,self:!0},K={ActiveXObject:!0,Enumerator:!0,GetObject:!0,ScriptEngine:!0,ScriptEngineBuildVersion:!0,ScriptEngineMajorVersion:!0,ScriptEngineMinorVersion:!0,VBArray:!0,WSH:!0,WScript:!0,XDomainRequest:!0},Q={YUI:!1,Y:!1,YUI_config:!1},G,Y,Z,et,tt,nt,rt,it,st;(function(){G=/@cc|<\\/?|script|\\]\\s*\\]|<\\s*!|&lt/i,Y=/[\\u0000-\\u001f\\u007f-\\u009f\\u00ad\\u0600-\\u0604\\u070f\\u17b4\\u17b5\\u200c-\\u200f\\u2028-\\u202f\\u2060-\\u206f\\ufeff\\ufff0-\\uffff]/,Z=/^\\s*([(){}\\[.,:;'\"~\\?\\]#@]|==?=?|\\/=(?!(\\S*\\/[gim]?))|\\/(\\*(jshint|jslint|members?|global)?|\\/)?|\\*[\\/=]?|\\+(?:=|\\++)?|-(?:=|-+)?|%=?|&[&=]?|\\|[|=]?|>>?>?=?|<([\\/=!]|\\!(\\[|--)?|<=?)?|\\^=?|\\!=?=?|[a-zA-Z_$][a-zA-Z0-9_$]*|[0-9]+([xX][0-9a-fA-F]+|\\.[0-9]*)?([eE][+\\-]?[0-9]+)?)/,et=/[\\u0000-\\u001f&<\"\\/\\\\\\u007f-\\u009f\\u00ad\\u0600-\\u0604\\u070f\\u17b4\\u17b5\\u200c-\\u200f\\u2028-\\u202f\\u2060-\\u206f\\ufeff\\ufff0-\\uffff]/,tt=/[\\u0000-\\u001f&<\"\\/\\\\\\u007f-\\u009f\\u00ad\\u0600-\\u0604\\u070f\\u17b4\\u17b5\\u200c-\\u200f\\u2028-\\u202f\\u2060-\\u206f\\ufeff\\ufff0-\\uffff]/g,nt=/\\*\\//,rt=/^([a-zA-Z_$][a-zA-Z0-9_$]*)$/,it=/^(?:javascript|jscript|ecmascript|vbscript|mocha|livescript)\\s*:/i,st=/^\\s*\\/\\*\\s*falls\\sthrough\\s*\\*\\/\\s*$/})(),typeof Array.isArray!=\"function\"&&(Array.isArray=function(e){return Object.prototype.toString.apply(e)===\"[object Array]\"}),Array.prototype.forEach||(Array.prototype.forEach=function(e,t){var n=this.length;for(var r=0;r<n;r++)e.call(t||this,this[r],r,this)}),Array.prototype.indexOf||(Array.prototype.indexOf=function(e){if(this===null||this===undefined)throw new TypeError;var t=new Object(this),n=t.length>>>0;if(n===0)return-1;var r=0;arguments.length>0&&(r=Number(arguments[1]),r!=r?r=0:r!==0&&r!=Infinity&&r!=-Infinity&&(r=(r>0||-1)*Math.floor(Math.abs(r))));if(r>=n)return-1;var i=r>=0?r:Math.max(n-Math.abs(r),0);for(;i<n;i++)if(i in t&&t[i]===e)return i;return-1}),typeof Object.create!=\"function\"&&(Object.create=function(e){return ot.prototype=e,new ot}),typeof Object.keys!=\"function\"&&(Object.keys=function(e){var t=[],n;for(n in e)ut(e,n)&&t.push(n);return t});var Tt=function(){function s(){var e,n,s;return r>=E.length?!1:(t=1,i=E[r],r+=1,A.smarttabs?(n=i.match(/(\\/\\/)? \\t/),e=n&&!n[1]?0:-1):e=i.search(/ \\t|\\t [^\\*]/),e>=0&&wt(\"Mixed spaces and tabs.\",r,e+1),i=i.replace(/\\t/g,U),e=i.search(Y),e>=0&&wt(\"Unsafe character.\",r,e),A.maxlen&&A.maxlen<i.length&&wt(\"Line too long.\",r,i.length),s=A.trailing&&i.match(/^(.*?)\\s+$/),s&&!/^\\s+$/.test(i)&&wt(\"Trailing whitespace.\",r,s[1].length+1),!0)}function o(e,i){function u(e){if(!A.proto&&e===\"__proto__\"){wt(\"The '{a}' property is deprecated.\",r,n,e);return}if(!A.iterator&&e===\"__iterator__\"){wt(\"'{a}' is only available in JavaScript 1.7.\",r,n,e);return}var t=/^(_+.*|.*_+)$/.test(e);if(A.nomen&&t&&e!==\"_\"){if(A.node&&z.id!==\".\"&&/^(__dirname|__filename)$/.test(e))return;wt(\"Unexpected {a} in '{b}'.\",r,n,\"dangling '_'\",e);return}A.camelcase&&e.replace(/^_+/,\"\").indexOf(\"_\")>-1&&!e.match(/^[A-Z0-9_]*$/)&&wt(\"Identifier '{a}' is not in camel case.\",r,n,i)}var s,o;return e===\"(color)\"||e===\"(range)\"?o={type:e}:e===\"(punctuator)\"||e===\"(identifier)\"&&ut(R,i)?o=R[i]||R[\"(error)\"]:o=R[e],o=Object.create(o),(e===\"(string)\"||e===\"(range)\")&&!A.scripturl&&it.test(i)&&wt(\"Script URL.\",r,n),e===\"(identifier)\"&&(o.identifier=!0,u(i)),o.value=i,o.line=r,o.character=t,o.from=n,s=o.id,s!==\"(endline)\"&&(M=s&&(\"(,=:[!&|?{};\".indexOf(s.charAt(s.length-1))>=0||s===\"return\"||s===\"case\")),o}var t,n,r,i;return{init:function(e){typeof e==\"string\"?E=e.replace(/\\r\\n/g,\"\\n\").replace(/\\r/g,\"\\n\").split(\"\\n\"):E=e,E[0]&&E[0].substr(0,2)===\"#!\"&&(E[0]=\"\"),r=0,s(),n=1},range:function(e,s){var u,a=\"\";n=t,i.charAt(0)!==e&&St(\"Expected '{a}' and instead saw '{b}'.\",r,t,e,i.charAt(0));for(;;){i=i.slice(1),t+=1,u=i.charAt(0);switch(u){case\"\":St(\"Missing '{a}'.\",r,t,u);break;case s:return i=i.slice(1),t+=1,o(\"(range)\",a);case\"\\\\\":wt(\"Unexpected '{a}'.\",r,t,u)}a+=u}},token:function(){function E(e){var r=e.exec(i),s;if(r)return p=r[0].length,s=r[1],u=s.charAt(0),i=i.substr(p),n=t+p-s.length,t+=p,s}function S(e){function c(e){var n=parseInt(i.substr(a+1,e),16);a+=e,n>=32&&n<=126&&n!==34&&n!==92&&n!==39&&wt(\"Unnecessary escapement.\",r,t),t+=e,u=String.fromCharCode(n)}var u,a,f=\"\",l=!1;b&&e!=='\"'&&wt(\"Strings must use doublequote.\",r,t),A.quotmark&&(A.quotmark===\"single\"&&e!==\"'\"?wt(\"Strings must use singlequote.\",r,t):A.quotmark===\"double\"&&e!=='\"'?wt(\"Strings must use doublequote.\",r,t):A.quotmark===!0&&(P=P||e,P!==e&&wt(\"Mixed double and single quotes.\",r,t))),a=0;e:for(;;){while(a>=i.length){a=0;var h=r,p=n;if(!s()){St(\"Unclosed string.\",h,p);break e}l?l=!1:wt(\"Unclosed string.\",h,p)}u=i.charAt(a);if(u===e)return t+=1,i=i.substr(a+1),o(\"(string)\",f,e);if(u<\" \"){if(u===\"\\n\"||u===\"\\r\")break;wt(\"Control character in string: {a}.\",r,t+a,i.slice(0,a))}else if(u===\"\\\\\"){a+=1,t+=1,u=i.charAt(a),w=i.charAt(a+1);switch(u){case\"\\\\\":case'\"':case\"/\":break;case\"'\":b&&wt(\"Avoid \\\\'.\",r,t);break;case\"b\":u=\"\\b\";break;case\"f\":u=\"\\f\";break;case\"n\":u=\"\\n\";break;case\"r\":u=\"\\r\";break;case\"t\":u=\"\t\";break;case\"0\":u=\"\\0\",w>=0&&w<=7&&q[\"use strict\"]&&wt(\"Octal literals are not allowed in strict mode.\",r,t);break;case\"u\":c(4);break;case\"v\":b&&wt(\"Avoid \\\\v.\",r,t),u=\"\u000b\";break;case\"x\":b&&wt(\"Avoid \\\\x-.\",r,t),c(2);break;case\"\":l=!0;if(A.multistr){b&&wt(\"Avoid EOL escapement.\",r,t),u=\"\",t-=1;break}wt(\"Bad escapement of EOL. Use option multistr if needed.\",r,t);break;case\"!\":if(i.charAt(a-2)===\"<\")break;default:wt(\"Bad escapement.\",r,t)}}f+=u,t+=1,a+=1}}var e,u,a,f,l,c,h,p,d,v,m,g,y,w;for(;;){if(!i)return o(s()?\"(endline)\":\"(end)\",\"\");m=E(Z);if(!m){m=\"\",u=\"\";while(i&&i<\"!\")i=i.substr(1);i&&(St(\"Unexpected '{a}'.\",r,t,i.substr(0,1)),i=\"\")}else{if(lt(u)||u===\"_\"||u===\"$\")return o(\"(identifier)\",m);if(ct(u))return isFinite(Number(m))||wt(\"Bad number '{a}'.\",r,t,m),lt(i.substr(0,1))&&wt(\"Missing space after '{a}'.\",r,t,m),u===\"0\"&&(f=m.substr(1,1),ct(f)?z.id!==\".\"&&wt(\"Don't use extra leading zeros '{a}'.\",r,t,m):b&&(f===\"x\"||f===\"X\")&&wt(\"Avoid 0x-. '{a}'.\",r,t,m)),m.substr(m.length-1)===\".\"&&wt(\"A trailing decimal point can be confused with a dot '{a}'.\",r,t,m),o(\"(number)\",m);switch(m){case'\"':case\"'\":return S(m);case\"//\":i=\"\",z.comment=!0;break;case\"/*\":for(;;){h=i.search(nt);if(h>=0)break;s()||St(\"Unclosed comment.\",r,t)}i=i.substr(h+2),z.comment=!0;break;case\"/*members\":case\"/*member\":case\"/*jshint\":case\"/*jslint\":case\"/*global\":case\"*/\":return{value:m,type:\"special\",line:r,character:t,from:n};case\"\":break;case\"/\":i.charAt(0)===\"=\"&&St(\"A regular expression literal can be confused with '/='.\",r,n);if(M){l=0,a=0,p=0;for(;;){e=!0,u=i.charAt(p),p+=1;switch(u){case\"\":return St(\"Unclosed regular expression.\",r,n),gt(\"Stopping.\",r,n);case\"/\":l>0&&wt(\"{a} unterminated regular expression group(s).\",r,n+p,l),u=i.substr(0,p-1),v={g:!0,i:!0,m:!0};while(v[i.charAt(p)]===!0)v[i.charAt(p)]=!1,p+=1;return t+=p,i=i.substr(p),v=i.charAt(0),(v===\"/\"||v===\"*\")&&St(\"Confusing regular expression.\",r,n),o(\"(regexp)\",u);case\"\\\\\":u=i.charAt(p),u<\" \"?wt(\"Unexpected control character in regular expression.\",r,n+p):u===\"<\"&&wt(\"Unexpected escaped character '{a}' in regular expression.\",r,n+p,u),p+=1;break;case\"(\":l+=1,e=!1;if(i.charAt(p)===\"?\"){p+=1;switch(i.charAt(p)){case\":\":case\"=\":case\"!\":p+=1;break;default:wt(\"Expected '{a}' and instead saw '{b}'.\",r,n+p,\":\",i.charAt(p))}}else a+=1;break;case\"|\":e=!1;break;case\")\":l===0?wt(\"Unescaped '{a}'.\",r,n+p,\")\"):l-=1;break;case\" \":v=1;while(i.charAt(p)===\" \")p+=1,v+=1;v>1&&wt(\"Spaces are hard to count. Use {{a}}.\",r,n+p,v);break;case\"[\":u=i.charAt(p),u===\"^\"&&(p+=1,i.charAt(p)===\"]\"&&St(\"Unescaped '{a}'.\",r,n+p,\"^\")),u===\"]\"&&wt(\"Empty class.\",r,n+p-1),g=!1,y=!1;e:do{u=i.charAt(p),p+=1;switch(u){case\"[\":case\"^\":wt(\"Unescaped '{a}'.\",r,n+p,u),y?y=!1:g=!0;break;case\"-\":g&&!y?(g=!1,y=!0):y?y=!1:i.charAt(p)===\"]\"?y=!0:(A.regexdash!==(p===2||p===3&&i.charAt(1)===\"^\")&&wt(\"Unescaped '{a}'.\",r,n+p-1,\"-\"),g=!0);break;case\"]\":y&&!A.regexdash&&wt(\"Unescaped '{a}'.\",r,n+p-1,\"-\");break e;case\"\\\\\":u=i.charAt(p),u<\" \"?wt(\"Unexpected control character in regular expression.\",r,n+p):u===\"<\"&&wt(\"Unexpected escaped character '{a}' in regular expression.\",r,n+p,u),p+=1,/[wsd]/i.test(u)?(y&&(wt(\"Unescaped '{a}'.\",r,n+p,\"-\"),y=!1),g=!1):y?y=!1:g=!0;break;case\"/\":wt(\"Unescaped '{a}'.\",r,n+p-1,\"/\"),y?y=!1:g=!0;break;case\"<\":y?y=!1:g=!0;break;default:y?y=!1:g=!0}}while(u);break;case\".\":A.regexp&&wt(\"Insecure '{a}'.\",r,n+p,u);break;case\"]\":case\"?\":case\"{\":case\"}\":case\"+\":case\"*\":wt(\"Unescaped '{a}'.\",r,n+p,u)}if(e)switch(i.charAt(p)){case\"?\":case\"+\":case\"*\":p+=1,i.charAt(p)===\"?\"&&(p+=1);break;case\"{\":p+=1,u=i.charAt(p);if(u<\"0\"||u>\"9\"){wt(\"Expected a number and instead saw '{a}'.\",r,n+p,u);break}p+=1,d=+u;for(;;){u=i.charAt(p);if(u<\"0\"||u>\"9\")break;p+=1,d=+u+d*10}c=d;if(u===\",\"){p+=1,c=Infinity,u=i.charAt(p);if(u>=\"0\"&&u<=\"9\"){p+=1,c=+u;for(;;){u=i.charAt(p);if(u<\"0\"||u>\"9\")break;p+=1,c=+u+c*10}}}i.charAt(p)!==\"}\"?wt(\"Expected '{a}' and instead saw '{b}'.\",r,n+p,\"}\",u):p+=1,i.charAt(p)===\"?\"&&(p+=1),d>c&&wt(\"'{a}' should not be greater than '{b}'.\",r,n+p,d,c)}}return u=i.substr(0,p-1),t+=p,i=i.substr(p),o(\"(regexp)\",u)}return o(\"(punctuator)\",m);case\"#\":return o(\"(punctuator)\",m);default:return o(\"(punctuator)\",m)}}}}}}();Wt(\"(number)\",function(){return this}),Wt(\"(string)\",function(){return this}),R[\"(identifier)\"]={type:\"(identifier)\",lbp:0,identifier:!0,nud:function(){var t=this.value,n=B[t],r;typeof n==\"function\"?n=undefined:typeof n==\"boolean\"&&(r=h,h=d[0],Nt(t,\"var\"),n=h,h=r);if(h===n)switch(h[t]){case\"unused\":h[t]=\"var\";break;case\"unction\":h[t]=\"function\",this[\"function\"]=!0;break;case\"function\":this[\"function\"]=!0;break;case\"label\":bt(\"'{a}' is a statement label.\",z,t)}else if(h[\"(global)\"])A.undef&&typeof O[t]!=\"boolean\"&&(e!==\"typeof\"&&e!==\"delete\"||C&&(C.value===\".\"||C.value===\"[\"))&&yt(h,\"'{a}' is not defined.\",z,t),fn(z);else switch(h[t]){case\"closure\":case\"function\":case\"var\":case\"unused\":bt(\"'{a}' used out of scope.\",z,t);break;case\"label\":bt(\"'{a}' is a statement label.\",z,t);break;case\"outer\":case\"global\":break;default:if(n===!0)h[t]=!0;else if(n===null)bt(\"'{a}' is not allowed.\",z,t),fn(z);else if(typeof n!=\"object\")A.undef&&(e!==\"typeof\"&&e!==\"delete\"||C&&(C.value===\".\"||C.value===\"[\"))&&yt(h,\"'{a}' is not defined.\",z,t),h[t]=!0,fn(z);else switch(n[t]){case\"function\":case\"unction\":this[\"function\"]=!0,n[t]=\"closure\",h[t]=n[\"(global)\"]?\"global\":\"outer\";break;case\"var\":case\"unused\":n[t]=\"closure\",h[t]=n[\"(global)\"]?\"global\":\"outer\";break;case\"closure\":h[t]=n[\"(global)\"]?\"global\":\"outer\";break;case\"label\":bt(\"'{a}' is a statement label.\",z,t)}}return this},led:function(){Et(\"Expected an operator and instead saw '{a}'.\",C,C.value)}},Wt(\"(regexp)\",function(){return this}),It(\"(endline)\"),It(\"(begin)\"),It(\"(end)\").reach=!0,It(\"</\").reach=!0,It(\"<!\"),It(\"<!--\"),It(\"-->\"),It(\"(error)\").reach=!0,It(\"}\").reach=!0,It(\")\"),It(\"]\"),It('\"').reach=!0,It(\"'\").reach=!0,It(\";\"),It(\":\").reach=!0,It(\",\"),It(\"#\"),It(\"@\"),Xt(\"else\"),Xt(\"case\").reach=!0,Xt(\"catch\"),Xt(\"default\").reach=!0,Xt(\"finally\"),Vt(\"arguments\",function(e){q[\"use strict\"]&&h[\"(global)\"]&&bt(\"Strict violation.\",e)}),Vt(\"eval\"),Vt(\"false\"),Vt(\"Infinity\"),Vt(\"null\"),Vt(\"this\",function(e){q[\"use strict\"]&&!A.validthis&&(h[\"(statement)\"]&&h[\"(name)\"].charAt(0)>\"Z\"||h[\"(global)\"])&&bt(\"Possible strict violation.\",e)}),Vt(\"true\"),Vt(\"undefined\"),Qt(\"=\",\"assign\",20),Qt(\"+=\",\"assignadd\",20),Qt(\"-=\",\"assignsub\",20),Qt(\"*=\",\"assignmult\",20),Qt(\"/=\",\"assigndiv\",20).nud=function(){Et(\"A regular expression literal can be confused with '/='.\")},Qt(\"%=\",\"assignmod\",20),Yt(\"&=\",\"assignbitand\",20),Yt(\"|=\",\"assignbitor\",20),Yt(\"^=\",\"assignbitxor\",20),Yt(\"<<=\",\"assignshiftleft\",20),Yt(\">>=\",\"assignshiftright\",20),Yt(\">>>=\",\"assignshiftrightunsigned\",20),$t(\"?\",function(e,t){return t.left=e,t.right=At(10),Lt(\":\"),t[\"else\"]=At(10),t},30),$t(\"||\",\"or\",40),$t(\"&&\",\"and\",50),Gt(\"|\",\"bitor\",70),Gt(\"^\",\"bitxor\",80),Gt(\"&\",\"bitand\",90),Jt(\"==\",function(e,t){var n=A.eqnull&&(e.value===\"null\"||t.value===\"null\");return!n&&A.eqeqeq?bt(\"Expected '{a}' and instead saw '{b}'.\",this,\"===\",\"==\"):Kt(e)?bt(\"Use '{a}' to compare with '{b}'.\",this,\"===\",e.value):Kt(t)&&bt(\"Use '{a}' to compare with '{b}'.\",this,\"===\",t.value),this}),Jt(\"===\"),Jt(\"!=\",function(e,t){var n=A.eqnull&&(e.value===\"null\"||t.value===\"null\");return!n&&A.eqeqeq?bt(\"Expected '{a}' and instead saw '{b}'.\",this,\"!==\",\"!=\"):Kt(e)?bt(\"Use '{a}' to compare with '{b}'.\",this,\"!==\",e.value):Kt(t)&&bt(\"Use '{a}' to compare with '{b}'.\",this,\"!==\",t.value),this}),Jt(\"!==\"),Jt(\"<\"),Jt(\">\"),Jt(\"<=\"),Jt(\">=\"),Gt(\"<<\",\"shiftleft\",120),Gt(\">>\",\"shiftright\",120),Gt(\">>>\",\"shiftrightunsigned\",120),$t(\"in\",\"in\",120),$t(\"instanceof\",\"instanceof\",120),$t(\"+\",function(e,t){var n=At(130);return e&&n&&e.id===\"(string)\"&&n.id===\"(string)\"?(e.value+=n.value,e.character=n.character,!A.scripturl&&it.test(e.value)&&bt(\"JavaScript URL.\",e),e):(t.left=e,t.right=n,t)},130),zt(\"+\",\"num\"),zt(\"+++\",function(){return bt(\"Confusing pluses.\"),this.right=At(150),this.arity=\"unary\",this}),$t(\"+++\",function(e){return bt(\"Confusing pluses.\"),this.left=e,this.right=At(130),this},130),$t(\"-\",\"sub\",130),zt(\"-\",\"neg\"),zt(\"---\",function(){return bt(\"Confusing minuses.\"),this.right=At(150),this.arity=\"unary\",this}),$t(\"---\",function(e){return bt(\"Confusing minuses.\"),this.left=e,this.right=At(130),this},130),$t(\"*\",\"mult\",140),$t(\"/\",\"div\",140),$t(\"%\",\"mod\",140),Zt(\"++\",\"postinc\"),zt(\"++\",\"preinc\"),R[\"++\"].exps=!0,Zt(\"--\",\"postdec\"),zt(\"--\",\"predec\"),R[\"--\"].exps=!0,zt(\"delete\",function(){var e=At(0);return(!e||e.id!==\".\"&&e.id!==\"[\")&&bt(\"Variables should not be deleted.\"),this.first=e,this}).exps=!0,zt(\"~\",function(){return A.bitwise&&bt(\"Unexpected '{a}'.\",this,\"~\"),At(150),this}),zt(\"!\",function(){return this.right=At(150),this.arity=\"unary\",t[this.right.id]===!0&&bt(\"Confusing use of '{a}'.\",this,\"!\"),this}),zt(\"typeof\",\"typeof\"),zt(\"new\",function(){var e=At(155),t;if(e&&e.id!==\"function\")if(e.identifier){e[\"new\"]=!0;switch(e.value){case\"Number\":case\"String\":case\"Boolean\":case\"Math\":case\"JSON\":bt(\"Do not use {a} as a constructor.\",_,e.value);break;case\"Function\":A.evil||bt(\"The Function constructor is eval.\");break;case\"Date\":case\"RegExp\":break;default:e.id!==\"function\"&&(t=e.value.substr(0,1),A.newcap&&(t<\"A\"||t>\"Z\")&&!ut(v,e.value)&&bt(\"A constructor name should start with an uppercase letter.\",z))}}else e.id!==\".\"&&e.id!==\"[\"&&e.id!==\"(\"&&bt(\"Bad constructor.\",z);else A.supernew||bt(\"Weird construction. Delete 'new'.\",this);return Ot(z,C),C.id!==\"(\"&&!A.supernew&&bt(\"Missing '()' invoking a constructor.\",z,z.value),this.first=e,this}),R[\"new\"].exps=!0,zt(\"void\").exps=!0,$t(\".\",function(e,t){Ot(_,z),Mt();var n=tn();return typeof n==\"string\"&&an(n),t.left=e,t.right=n,!e||e.value!==\"arguments\"||n!==\"callee\"&&n!==\"caller\"?!A.evil&&e&&e.value===\"document\"&&(n===\"write\"||n===\"writeln\")&&bt(\"document.write can be a form of eval.\",e):A.noarg?bt(\"Avoid arguments.{a}.\",e,n):q[\"use strict\"]&&Et(\"Strict violation.\"),!A.evil&&(n===\"eval\"||n===\"execScript\")&&bt(\"eval is evil.\"),t},160,!0),$t(\"(\",function(e,t){_.id!==\"}\"&&_.id!==\")\"&&Mt(_,z),_t(),A.immed&&!e.immed&&e.id===\"function\"&&bt(\"Wrap an immediate function invocation in parentheses to assist the reader in understanding that the expression is the result of a function, and not the function itself.\");var n=0,r=[];e&&e.type===\"(identifier)\"&&e.value.match(/^[A-Z]([A-Z0-9_$]*[a-z][A-Za-z0-9_$]*)?$/)&&\"Number String Boolean Date Object\".indexOf(e.value)===-1&&(e.value===\"Math\"?bt(\"Math is not a function.\",e):A.newcap&&bt(\"Missing 'new' prefix when invoking a constructor.\",e));if(C.id!==\")\")for(;;){r[r.length]=At(10),n+=1;if(C.id!==\",\")break;jt()}return Lt(\")\"),_t(_,z),typeof e==\"object\"&&(e.value===\"parseInt\"&&n===1&&bt(\"Missing radix parameter.\",z),A.evil||(e.value===\"eval\"||e.value===\"Function\"||e.value===\"execScript\"?(bt(\"eval is evil.\",e),r[0]&&[0].id===\"(string)\"&&xt(e,r[0].value)):!r[0]||r[0].id!==\"(string)\"||e.value!==\"setTimeout\"&&e.value!==\"setInterval\"?r[0]&&r[0].id===\"(string)\"&&e.value===\".\"&&e.left.value===\"window\"&&(e.right===\"setTimeout\"||e.right===\"setInterval\")&&(bt(\"Implied eval is evil. Pass a function instead of a string.\",e),xt(e,r[0].value)):(bt(\"Implied eval is evil. Pass a function instead of a string.\",e),xt(e,r[0].value))),!e.identifier&&e.id!==\".\"&&e.id!==\"[\"&&e.id!==\"(\"&&e.id!==\"&&\"&&e.id!==\"||\"&&e.id!==\"?\"&&bt(\"Bad invocation.\",e)),t.left=e,t},155,!0).exps=!0,zt(\"(\",function(){_t(),C.id===\"function\"&&(C.immed=!0);var e=At(0);return Lt(\")\",this),_t(_,z),A.immed&&e.id===\"function\"&&C.id!==\"(\"&&(C.id!==\".\"||kt().value!==\"call\"&&kt().value!==\"apply\")&&bt(\"Do not wrap function literals in parens unless they are to be immediately invoked.\",this),e}),$t(\"[\",function(e,t){Mt(_,z),_t();var n=At(0),r;return n&&n.type===\"(string)\"&&(!A.evil&&(n.value===\"eval\"||n.value===\"execScript\")&&bt(\"eval is evil.\",t),an(n.value),!A.sub&&rt.test(n.value)&&(r=R[n.value],(!r||!r.reserved)&&bt(\"['{a}'] is better written in dot notation.\",_,n.value))),Lt(\"]\",t),_t(_,z),t.left=e,t.right=n,t},160,!0),zt(\"[\",function(){var e=z.line!==C.line;this.first=[],e&&(y+=A.indent,C.from===y+A.indent&&(y+=A.indent));while(C.id!==\"(end)\"){while(C.id===\",\")A.es5||bt(\"Extra comma.\"),Lt(\",\");if(C.id===\"]\")break;e&&z.line!==C.line&&Ht(),this.first.push(At(10));if(C.id!==\",\")break;jt();if(C.id===\"]\"&&!A.es5){bt(\"Extra comma.\",z);break}}return e&&(y-=A.indent,Ht()),Lt(\"]\",this),this},160),function(e){e.nud=function(){function o(e,t){s[e]&&ut(s,e)?bt(\"Duplicate member '{a}'.\",C,n):s[e]={},s[e].basic=!0,s[e].basicToken=t}function u(e,t){s[e]&&ut(s,e)?(s[e].basic||s[e].setter)&&bt(\"Duplicate member '{a}'.\",C,n):s[e]={},s[e].setter=!0,s[e].setterToken=t}function a(e){s[e]&&ut(s,e)?(s[e].basic||s[e].getter)&&bt(\"Duplicate member '{a}'.\",C,n):s[e]={},s[e].getter=!0,s[e].getterToken=z}var e,t,n,r,i,s={};e=z.line!==C.line,e&&(y+=A.indent,C.from===y+A.indent&&(y+=A.indent));for(;;){if(C.id===\"}\")break;e&&Ht();if(C.value===\"get\"&&kt().id!==\":\")Lt(\"get\"),A.es5||Et(\"get/set are ES5 features.\"),n=ln(),n||Et(\"Missing property name.\"),a(n),i=C,Ot(z,C),t=hn(),r=t[\"(params)\"],r&&bt(\"Unexpected parameter '{a}' in get {b} function.\",i,r[0],n),Ot(z,C);else if(C.value===\"set\"&&kt().id!==\":\")Lt(\"set\"),A.es5||Et(\"get/set are ES5 features.\"),n=ln(),n||Et(\"Missing property name.\"),u(n,C),i=C,Ot(z,C),t=hn(),r=t[\"(params)\"],(!r||r.length!==1)&&bt(\"Expected a single parameter in set {a} function.\",i,n);else{n=ln(),o(n,C);if(typeof n!=\"string\")break;Lt(\":\"),Dt(z,C),At(10)}an(n);if(C.id!==\",\")break;jt(),C.id===\",\"?bt(\"Extra comma.\",z):C.id===\"}\"&&!A.es5&&bt(\"Extra comma.\",z)}e&&(y-=A.indent,Ht()),Lt(\"}\",this);if(A.es5)for(var f in s)ut(s,f)&&s[f].setter&&!s[f].getter&&bt(\"Setter is defined without getter.\",s[f].setterToken);return this},e.fud=function(){Et(\"Expected to see a statement and instead saw a block.\",z)}}(It(\"{\")),V=function(){var e=qt(\"const\",function(e){var t,n,r;this.first=[];for(;;){Dt(z,C),t=tn(),h[t]===\"const\"&&bt(\"const '\"+t+\"' has already been declared\"),h[\"(global)\"]&&O[t]===!1&&bt(\"Redefinition of '{a}'.\",z,t),Nt(t,\"const\");if(e)break;n=z,this.first.push(z),C.id!==\"=\"&&bt(\"const '{a}' is initialized to 'undefined'.\",z,t),C.id===\"=\"&&(Dt(z,C),Lt(\"=\"),Dt(z,C),C.id===\"undefined\"&&bt(\"It is not necessary to initialize '{a}' to 'undefined'.\",z,t),kt(0).id===\"=\"&&C.identifier&&Et(\"Constant {a} was not declared correctly.\",C,C.value),r=At(0),n.first=r);if(C.id!==\",\")break;jt()}return this});e.exps=!0};var vn=qt(\"var\",function(e){var t,n,r;h[\"(onevar)\"]&&A.onevar?bt(\"Too many var statements.\"):h[\"(global)\"]||(h[\"(onevar)\"]=!0),this.first=[];for(;;){Dt(z,C),t=tn(),A.esnext&&h[t]===\"const\"&&bt(\"const '\"+t+\"' has already been declared\"),h[\"(global)\"]&&O[t]===!1&&bt(\"Redefinition of '{a}'.\",z,t),Nt(t,\"unused\",z);if(e)break;n=z,this.first.push(z),C.id===\"=\"&&(Dt(z,C),Lt(\"=\"),Dt(z,C),C.id===\"undefined\"&&bt(\"It is not necessary to initialize '{a}' to 'undefined'.\",z,t),kt(0).id===\"=\"&&C.identifier&&Et(\"Variable {a} was not declared correctly.\",C,C.value),r=At(0),n.first=r);if(C.id!==\",\")break;jt()}return this});vn.exps=!0,Rt(\"function\",function(){g&&bt(\"Function declarations should not be placed in blocks. Use a function expression or move the statement to the top of the outer function.\",z);var e=tn();return A.esnext&&h[e]===\"const\"&&bt(\"const '\"+e+\"' has already been declared\"),Ot(z,C),Nt(e,\"unction\",z),hn(e,{statement:!0}),C.id===\"(\"&&C.line===z.line&&Et(\"Function declarations are not invocable. Wrap the whole function invocation in parens.\"),this}),zt(\"function\",function(){var e=en();return e?Ot(z,C):Dt(z,C),hn(e),!A.loopfunc&&h[\"(loopage)\"]&&bt(\"Don't make functions within a loop.\"),this}),Rt(\"if\",function(){var e=C;return dn(),Lt(\"(\"),Dt(this,e),_t(),At(20),C.id===\"=\"&&(A.boss||bt(\"Assignment in conditional expression\"),Lt(\"=\"),At(20)),Lt(\")\",e),_t(_,z),un(!0,!0),C.id===\"else\"&&(Dt(z,C),Lt(\"else\"),C.id===\"if\"||C.id===\"switch\"?rn(!0):un(!0,!0)),this}),Rt(\"try\",function(){function t(){var e=B,t;Lt(\"catch\"),Dt(z,C),Lt(\"(\"),B=Object.create(e),t=C.value,C.type!==\"(identifier)\"&&(t=null,bt(\"Expected an identifier and instead saw '{a}'.\",C,t)),Lt(),Lt(\")\"),h={\"(name)\":\"(catch)\",\"(line)\":C.line,\"(character)\":C.character,\"(context)\":h,\"(breakage)\":h[\"(breakage)\"],\"(loopage)\":h[\"(loopage)\"],\"(scope)\":B,\"(statement)\":!1,\"(metrics)\":pn(C),\"(catch)\":!0,\"(tokens)\":{}},t&&Nt(t,\"exception\"),z.funct=h,d.push(h),un(!1),B=e,h[\"(last)\"]=z.line,h[\"(lastcharacter)\"]=z.character,h=h[\"(context)\"]}var e;un(!1),C.id===\"catch\"&&(dn(),t(),e=!0);if(C.id===\"finally\"){Lt(\"finally\"),un(!1);return}return e||Et(\"Expected '{a}' and instead saw '{b}'.\",C,\"catch\",C.value),this}),Rt(\"while\",function(){var e=C;return h[\"(breakage)\"]+=1,h[\"(loopage)\"]+=1,dn(),Lt(\"(\"),Dt(this,e),_t(),At(20),C.id===\"=\"&&(A.boss||bt(\"Assignment in conditional expression\"),Lt(\"=\"),At(20)),Lt(\")\",e),_t(_,z),un(!0,!0),h[\"(breakage)\"]-=1,h[\"(loopage)\"]-=1,this}).labelled=!0,Rt(\"with\",function(){var e=C;return q[\"use strict\"]?Et(\"'with' is not allowed in strict mode.\",z):A.withstmt||bt(\"Don't use 'with'.\",z),Lt(\"(\"),Dt(this,e),_t(),At(0),Lt(\")\",e),_t(_,z),un(!0,!0),this}),Rt(\"switch\",function(){var e=C,t=!1;h[\"(breakage)\"]+=1,Lt(\"(\"),Dt(this,e),_t(),this.condition=At(20),Lt(\")\",e),_t(_,z),Dt(z,C),e=C,Lt(\"{\"),Dt(z,C),y+=A.indent,this.cases=[];for(;;)switch(C.id){case\"case\":switch(h[\"(verb)\"]){case\"break\":case\"case\":case\"continue\":case\"return\":case\"switch\":case\"throw\":break;default:st.test(E[C.line-2])||bt(\"Expected a 'break' statement before 'case'.\",z)}Ht(-A.indent),Lt(\"case\"),this.cases.push(At(20)),dn(),t=!0,Lt(\":\"),h[\"(verb)\"]=\"case\";break;case\"default\":switch(h[\"(verb)\"]){case\"break\":case\"continue\":case\"return\":case\"throw\":break;default:st.test(E[C.line-2])||bt(\"Expected a 'break' statement before 'default'.\",z)}Ht(-A.indent),Lt(\"default\"),t=!0,Lt(\":\");break;case\"}\":y-=A.indent,Ht(),Lt(\"}\",e);if(this.cases.length===1||this.condition.id===\"true\"||this.condition.id===\"false\")A.onecase||bt(\"This 'switch' should be an 'if'.\",this);h[\"(breakage)\"]-=1,h[\"(verb)\"]=undefined;return;case\"(end)\":Et(\"Missing '{a}'.\",C,\"}\");return;default:if(t)switch(z.id){case\",\":Et(\"Each value should have its own case label.\");return;case\":\":t=!1,sn();break;default:Et(\"Missing ':' on a case clause.\",z);return}else{if(z.id!==\":\"){Et(\"Expected '{a}' and instead saw '{b}'.\",C,\"case\",C.value);return}Lt(\":\"),Et(\"Unexpected '{a}'.\",z,\":\"),sn()}}}).labelled=!0,qt(\"debugger\",function(){return A.debug||bt(\"All 'debugger' statements should be removed.\"),this}).exps=!0,function(){var e=qt(\"do\",function(){h[\"(breakage)\"]+=1,h[\"(loopage)\"]+=1,dn(),this.first=un(!0),Lt(\"while\");var e=C;return Dt(z,e),Lt(\"(\"),_t(),At(20),C.id===\"=\"&&(A.boss||bt(\"Assignment in conditional expression\"),Lt(\"=\"),At(20)),Lt(\")\",e),_t(_,z),h[\"(breakage)\"]-=1,h[\"(loopage)\"]-=1,this});e.labelled=!0,e.exps=!0}(),Rt(\"for\",function(){var e,t=C;h[\"(breakage)\"]+=1,h[\"(loopage)\"]+=1,dn(),Lt(\"(\"),Dt(this,t),_t();if(kt(C.id===\"var\"?1:0).id===\"in\"){if(C.id===\"var\")Lt(\"var\"),vn.fud.call(vn,!0);else{switch(h[C.value]){case\"unused\":h[C.value]=\"var\";break;case\"var\":break;default:bt(\"Bad for in variable '{a}'.\",C,C.value)}Lt()}return Lt(\"in\"),At(20),Lt(\")\",t),e=un(!0,!0),A.forin&&e&&(e.length>1||typeof e[0]!=\"object\"||e[0].value!==\"if\")&&bt(\"The body of a for in should be wrapped in an if statement to filter unwanted properties from the prototype.\",this),h[\"(breakage)\"]-=1,h[\"(loopage)\"]-=1,this}if(C.id!==\";\")if(C.id===\"var\")Lt(\"var\"),vn.fud.call(vn);else for(;;){At(0,\"for\");if(C.id!==\",\")break;jt()}Bt(z),Lt(\";\"),C.id!==\";\"&&(At(20),C.id===\"=\"&&(A.boss||bt(\"Assignment in conditional expression\"),Lt(\"=\"),At(20))),Bt(z),Lt(\";\"),C.id===\";\"&&Et(\"Expected '{a}' and instead saw '{b}'.\",C,\")\",\";\");if(C.id!==\")\")for(;;){At(0,\"for\");if(C.id!==\",\")break;jt()}return Lt(\")\",t),_t(_,z),un(!0,!0),h[\"(breakage)\"]-=1,h[\"(loopage)\"]-=1,this}).labelled=!0,qt(\"break\",function(){var e=C.value;return h[\"(breakage)\"]===0&&bt(\"Unexpected '{a}'.\",C,this.value),A.asi||Bt(this),C.id!==\";\"&&z.line===C.line&&(h[e]!==\"label\"?bt(\"'{a}' is not a statement label.\",C,e):B[e]!==h&&bt(\"'{a}' is out of scope.\",C,e),this.first=C,Lt()),nn(\"break\"),this}).exps=!0,qt(\"continue\",function(){var e=C.value;return h[\"(breakage)\"]===0&&bt(\"Unexpected '{a}'.\",C,this.value),A.asi||Bt(this),C.id!==\";\"?z.line===C.line&&(h[e]!==\"label\"?bt(\"'{a}' is not a statement label.\",C,e):B[e]!==h&&bt(\"'{a}' is out of scope.\",C,e),this.first=C,Lt()):h[\"(loopage)\"]||bt(\"Unexpected '{a}'.\",C,this.value),nn(\"continue\"),this}).exps=!0,qt(\"return\",function(){return this.line===C.line?(C.id===\"(regexp)\"&&bt(\"Wrap the /regexp/ literal in parens to disambiguate the slash operator.\"),C.id!==\";\"&&!C.reach&&(Dt(z,C),kt().value===\"=\"&&!A.boss&&wt(\"Did you mean to return a conditional instead of an assignment?\",z.line,z.character+1),this.first=At(0))):A.asi||Bt(this),nn(\"return\"),this}).exps=!0,qt(\"throw\",function(){return Bt(this),Dt(z,C),this.first=At(20),nn(\"throw\"),this}).exps=!0,Xt(\"class\"),Xt(\"const\"),Xt(\"enum\"),Xt(\"export\"),Xt(\"extends\"),Xt(\"import\"),Xt(\"super\"),Xt(\"let\"),Xt(\"yield\"),Xt(\"implements\"),Xt(\"interface\"),Xt(\"package\"),Xt(\"private\"),Xt(\"protected\"),Xt(\"public\"),Xt(\"static\");var gn=function(e,t,n){var i,s,o,u,a,l={};t&&t.scope?r.scope=t.scope:(r.errors=[],r.undefs=[],r.internals=[],r.blacklist={},r.scope=\"(main)\"),O=Object.create(F),f=Object.create(null),dt(O,n||{});if(t){i=t.predef,i&&(!Array.isArray(i)&&typeof i==\"object\"&&(i=Object.keys(i)),i.forEach(function(e){var t;e[0]===\"-\"?(t=e.slice(1),r.blacklist[t]=t):O[e]=!0})),a=Object.keys(t);for(u=0;u<a.length;u++)l[a[u]]=t[a[u]],a[u]===\"newcap\"&&t[a[u]]===!1&&(l[\"(explicitNewcap)\"]=!0),a[u]===\"indent\"&&(l.white=!0)}A=l,A.indent=A.indent||4,A.maxerr=A.maxerr||50,U=\"\";for(s=0;s<A.indent;s+=1)U+=\" \";y=1,v=Object.create(O),B=v,h={\"(global)\":!0,\"(name)\":\"(global)\",\"(scope)\":B,\"(breakage)\":0,\"(loopage)\":0,\"(tokens)\":{},\"(metrics)\":pn(C)},d=[h],X=[],j=null,x={},T=null,m={},g=!1,S=[],b=!1,$=0,E=[],W=[];if(!ft(e)&&!Array.isArray(e))return St(\"Input is neither a string nor an array of strings.\",0),!1;if(ft(e)&&/^\\s*$/g.test(e))return St(\"Input is an empty string.\",0),!1;if(e.length===0)return St(\"Input is an empty array.\",0),!1;Tt.init(e),M=!0,q={},_=z=C=R[\"(begin)\"];for(var c in t)ut(t,c)&&at(c,z);mt(),dt(O,n||{}),jt.first=!0,P=undefined;try{Lt();switch(C.id){case\"{\":case\"[\":A.laxbreak=!0,b=!0,mn();break;default:on(),q[\"use strict\"]&&!A.globalstrict&&bt('Use the function form of \"use strict\".',_),sn()}Lt(C&&C.value!==\".\"?\"(end)\":undefined);var p=function(e,t){do{if(typeof t[e]==\"string\")return t[e]===\"unused\"?t[e]=\"var\":t[e]===\"unction\"&&(t[e]=\"closure\"),!0;t=t[\"(context)\"]}while(t);return!1},w=function(e,t){if(!m[e])return;var n=[];for(var r=0;r<m[e].length;r+=1)m[e][r]!==t&&n.push(m[e][r]);n.length===0?delete m[e]:m[e]=n},N=function(e,t){var n=t.line,r=t.character;A.unused&&wt(\"'{a}' is defined but never used.\",n,r,e),W.push({name:e,line:n,character:r})},k=function(e,t){var n=e[t],r=e[\"(tokens)\"][t];if(t.charAt(0)===\"(\")return;if(n!==\"unused\"&&n!==\"unction\")return;if(e[\"(params)\"]&&e[\"(params)\"].indexOf(t)!==-1)return;N(t,r)};for(s=0;s<r.undefs.length;s+=1)o=r.undefs[s].slice(0),p(o[2].value,o[0])?w(o[2].value,o[2].line):bt.apply(bt,o.slice(1));d.forEach(function(e){for(var t in e)ut(e,t)&&k(e,t);if(!e[\"(params)\"])return;var n=e[\"(params)\"].slice(),r=n.pop(),i;while(r){i=e[r];if(r===\"undefined\")return;if(i!==\"unused\"&&i!==\"unction\")return;N(r,e[\"(tokens)\"][r]),r=n.pop()}});for(var L in f)ut(f,L)&&!ut(v,L)&&N(L,f[L])}catch(D){if(D){var H=C||{};r.errors.push({raw:D.raw,reason:D.message,line:D.line||H.line,character:D.character||H.from},null)}}if(r.scope===\"(main)\"){t=t||{};for(s=0;s<r.internals.length;s+=1)o=r.internals[s],t.scope=o.elem,gn(o.value,t,n)}return r.errors.length===0};return gn.data=function(){var e={functions:[],options:A},t=[],n=[],r,i,s,o,u,a;gn.errors.length&&(e.errors=gn.errors),b&&(e.json=!0);for(u in m)ut(m,u)&&t.push({name:u,line:m[u]});t.length>0&&(e.implieds=t),X.length>0&&(e.urls=X),a=Object.keys(B),a.length>0&&(e.globals=a);for(s=1;s<d.length;s+=1){i=d[s],r={};for(o=0;o<p.length;o+=1)r[p[o]]=[];for(o=0;o<p.length;o+=1)r[p[o]].length===0&&delete r[p[o]];r.name=i[\"(name)\"],r.param=i[\"(params)\"],r.line=i[\"(line)\"],r.character=i[\"(character)\"],r.last=i[\"(last)\"],r.lastcharacter=i[\"(lastcharacter)\"],e.functions.push(r)}W.length>0&&(e.unused=W),n=[];for(u in x)if(typeof x[u]==\"number\"){e.member=x;break}return e},gn.jshint=gn,gn}();typeof t==\"object\"&&t&&(t.JSHINT=r)})"
  },
  {
    "path": "public/js/vendor/ace/worker-json.js",
    "content": "\"no use strict\";function initBaseUrls(e){require.tlns=e}function initSender(){var e=require(null,\"ace/lib/event_emitter\").EventEmitter,t=require(null,\"ace/lib/oop\"),n=function(){};return function(){t.implement(this,e),this.callback=function(e,t){postMessage({type:\"call\",id:t,data:e})},this.emit=function(e,t){postMessage({type:\"event\",name:e,data:t})}}.call(n.prototype),new n}if(typeof window!=\"undefined\"&&window.document)throw\"atempt to load ace worker into main window instead of webWorker\";var console={log:function(){var e=Array.prototype.slice.call(arguments,0);postMessage({type:\"log\",data:e})},error:function(){var e=Array.prototype.slice.call(arguments,0);postMessage({type:\"log\",data:e})}},window={console:console},normalizeModule=function(e,t){if(t.indexOf(\"!\")!==-1){var n=t.split(\"!\");return normalizeModule(e,n[0])+\"!\"+normalizeModule(e,n[1])}if(t.charAt(0)==\".\"){var r=e.split(\"/\").slice(0,-1).join(\"/\");t=r+\"/\"+t;while(t.indexOf(\".\")!==-1&&i!=t){var i=t;t=t.replace(/\\/\\.\\//,\"/\").replace(/[^\\/]+\\/\\.\\.\\//,\"\")}}return t},require=function(e,t){if(!t.charAt)throw new Error(\"worker.js require() accepts only (parentId, id) as arguments\");t=normalizeModule(e,t);var n=require.modules[t];if(n)return n.initialized||(n.initialized=!0,n.exports=n.factory().exports),n.exports;var r=t.split(\"/\");r[0]=require.tlns[r[0]]||r[0];var i=r.join(\"/\")+\".js\";return require.id=t,importScripts(i),require(e,t)};require.modules={},require.tlns={};var define=function(e,t,n){arguments.length==2?(n=t,typeof e!=\"string\"&&(t=e,e=require.id)):arguments.length==1&&(n=e,e=require.id);if(e.indexOf(\"text!\")===0)return;var r=function(t,n){return require(e,t,n)};require.modules[e]={factory:function(){var e={exports:{}},t=n(r,e.exports,e);return t&&(e.exports=t),e}}},main,sender;onmessage=function(e){var t=e.data;if(t.command){if(!main[t.command])throw new Error(\"Unknown command:\"+t.command);main[t.command].apply(main,t.args)}else if(t.init){initBaseUrls(t.tlns),require(null,\"ace/lib/fixoldbrowsers\"),sender=initSender();var n=require(null,t.module)[t.classname];main=new n(sender)}else t.event&&sender&&sender._emit(t.event,t.data)},define(\"ace/lib/fixoldbrowsers\",[\"require\",\"exports\",\"module\",\"ace/lib/regexp\",\"ace/lib/es5-shim\"],function(e,t,n){e(\"./regexp\"),e(\"./es5-shim\")}),define(\"ace/lib/regexp\",[\"require\",\"exports\",\"module\"],function(e,t,n){function o(e){return(e.global?\"g\":\"\")+(e.ignoreCase?\"i\":\"\")+(e.multiline?\"m\":\"\")+(e.extended?\"x\":\"\")+(e.sticky?\"y\":\"\")}function u(e,t,n){if(Array.prototype.indexOf)return e.indexOf(t,n);for(var r=n||0;r<e.length;r++)if(e[r]===t)return r;return-1}var r={exec:RegExp.prototype.exec,test:RegExp.prototype.test,match:String.prototype.match,replace:String.prototype.replace,split:String.prototype.split},i=r.exec.call(/()??/,\"\")[1]===undefined,s=function(){var e=/^/g;return r.test.call(e,\"\"),!e.lastIndex}();if(s&&i)return;RegExp.prototype.exec=function(e){var t=r.exec.apply(this,arguments),n,a;if(typeof e==\"string\"&&t){!i&&t.length>1&&u(t,\"\")>-1&&(a=RegExp(this.source,r.replace.call(o(this),\"g\",\"\")),r.replace.call(e.slice(t.index),a,function(){for(var e=1;e<arguments.length-2;e++)arguments[e]===undefined&&(t[e]=undefined)}));if(this._xregexp&&this._xregexp.captureNames)for(var f=1;f<t.length;f++)n=this._xregexp.captureNames[f-1],n&&(t[n]=t[f]);!s&&this.global&&!t[0].length&&this.lastIndex>t.index&&this.lastIndex--}return t},s||(RegExp.prototype.test=function(e){var t=r.exec.call(this,e);return t&&this.global&&!t[0].length&&this.lastIndex>t.index&&this.lastIndex--,!!t})}),define(\"ace/lib/es5-shim\",[\"require\",\"exports\",\"module\"],function(e,t,n){function r(){}function w(e){try{return Object.defineProperty(e,\"sentinel\",{}),\"sentinel\"in e}catch(t){}}function j(e){return e=+e,e!==e?e=0:e!==0&&e!==1/0&&e!==-1/0&&(e=(e>0||-1)*Math.floor(Math.abs(e))),e}function F(e){var t=typeof e;return e===null||t===\"undefined\"||t===\"boolean\"||t===\"number\"||t===\"string\"}function I(e){var t,n,r;if(F(e))return e;n=e.valueOf;if(typeof n==\"function\"){t=n.call(e);if(F(t))return t}r=e.toString;if(typeof r==\"function\"){t=r.call(e);if(F(t))return t}throw new TypeError}Function.prototype.bind||(Function.prototype.bind=function(t){var n=this;if(typeof n!=\"function\")throw new TypeError(\"Function.prototype.bind called on incompatible \"+n);var i=u.call(arguments,1),s=function(){if(this instanceof s){var e=n.apply(this,i.concat(u.call(arguments)));return Object(e)===e?e:this}return n.apply(t,i.concat(u.call(arguments)))};return n.prototype&&(r.prototype=n.prototype,s.prototype=new r,r.prototype=null),s});var i=Function.prototype.call,s=Array.prototype,o=Object.prototype,u=s.slice,a=i.bind(o.toString),f=i.bind(o.hasOwnProperty),l,c,h,p,d;if(d=f(o,\"__defineGetter__\"))l=i.bind(o.__defineGetter__),c=i.bind(o.__defineSetter__),h=i.bind(o.__lookupGetter__),p=i.bind(o.__lookupSetter__);if([1,2].splice(0).length!=2)if(!function(){function e(e){var t=new Array(e+2);return t[0]=t[1]=0,t}var t=[],n;t.splice.apply(t,e(20)),t.splice.apply(t,e(26)),n=t.length,t.splice(5,0,\"XXX\"),n+1==t.length;if(n+1==t.length)return!0}())Array.prototype.splice=function(e,t){var n=this.length;e>0?e>n&&(e=n):e==void 0?e=0:e<0&&(e=Math.max(n+e,0)),e+t<n||(t=n-e);var r=this.slice(e,e+t),i=u.call(arguments,2),s=i.length;if(e===n)s&&this.push.apply(this,i);else{var o=Math.min(t,n-e),a=e+o,f=a+s-o,l=n-a,c=n-o;if(f<a)for(var h=0;h<l;++h)this[f+h]=this[a+h];else if(f>a)for(h=l;h--;)this[f+h]=this[a+h];if(s&&e===c)this.length=c,this.push.apply(this,i);else{this.length=c+s;for(h=0;h<s;++h)this[e+h]=i[h]}}return r};else{var v=Array.prototype.splice;Array.prototype.splice=function(e,t){return arguments.length?v.apply(this,[e===void 0?0:e,t===void 0?this.length-e:t].concat(u.call(arguments,2))):[]}}Array.isArray||(Array.isArray=function(t){return a(t)==\"[object Array]\"});var m=Object(\"a\"),g=m[0]!=\"a\"||!(0 in m);Array.prototype.forEach||(Array.prototype.forEach=function(t){var n=q(this),r=g&&a(this)==\"[object String]\"?this.split(\"\"):n,i=arguments[1],s=-1,o=r.length>>>0;if(a(t)!=\"[object Function]\")throw new TypeError;while(++s<o)s in r&&t.call(i,r[s],s,n)}),Array.prototype.map||(Array.prototype.map=function(t){var n=q(this),r=g&&a(this)==\"[object String]\"?this.split(\"\"):n,i=r.length>>>0,s=Array(i),o=arguments[1];if(a(t)!=\"[object Function]\")throw new TypeError(t+\" is not a function\");for(var u=0;u<i;u++)u in r&&(s[u]=t.call(o,r[u],u,n));return s}),Array.prototype.filter||(Array.prototype.filter=function(t){var n=q(this),r=g&&a(this)==\"[object String]\"?this.split(\"\"):n,i=r.length>>>0,s=[],o,u=arguments[1];if(a(t)!=\"[object Function]\")throw new TypeError(t+\" is not a function\");for(var f=0;f<i;f++)f in r&&(o=r[f],t.call(u,o,f,n)&&s.push(o));return s}),Array.prototype.every||(Array.prototype.every=function(t){var n=q(this),r=g&&a(this)==\"[object String]\"?this.split(\"\"):n,i=r.length>>>0,s=arguments[1];if(a(t)!=\"[object Function]\")throw new TypeError(t+\" is not a function\");for(var o=0;o<i;o++)if(o in r&&!t.call(s,r[o],o,n))return!1;return!0}),Array.prototype.some||(Array.prototype.some=function(t){var n=q(this),r=g&&a(this)==\"[object String]\"?this.split(\"\"):n,i=r.length>>>0,s=arguments[1];if(a(t)!=\"[object Function]\")throw new TypeError(t+\" is not a function\");for(var o=0;o<i;o++)if(o in r&&t.call(s,r[o],o,n))return!0;return!1}),Array.prototype.reduce||(Array.prototype.reduce=function(t){var n=q(this),r=g&&a(this)==\"[object String]\"?this.split(\"\"):n,i=r.length>>>0;if(a(t)!=\"[object Function]\")throw new TypeError(t+\" is not a function\");if(!i&&arguments.length==1)throw new TypeError(\"reduce of empty array with no initial value\");var s=0,o;if(arguments.length>=2)o=arguments[1];else do{if(s in r){o=r[s++];break}if(++s>=i)throw new TypeError(\"reduce of empty array with no initial value\")}while(!0);for(;s<i;s++)s in r&&(o=t.call(void 0,o,r[s],s,n));return o}),Array.prototype.reduceRight||(Array.prototype.reduceRight=function(t){var n=q(this),r=g&&a(this)==\"[object String]\"?this.split(\"\"):n,i=r.length>>>0;if(a(t)!=\"[object Function]\")throw new TypeError(t+\" is not a function\");if(!i&&arguments.length==1)throw new TypeError(\"reduceRight of empty array with no initial value\");var s,o=i-1;if(arguments.length>=2)s=arguments[1];else do{if(o in r){s=r[o--];break}if(--o<0)throw new TypeError(\"reduceRight of empty array with no initial value\")}while(!0);do o in this&&(s=t.call(void 0,s,r[o],o,n));while(o--);return s});if(!Array.prototype.indexOf||[0,1].indexOf(1,2)!=-1)Array.prototype.indexOf=function(t){var n=g&&a(this)==\"[object String]\"?this.split(\"\"):q(this),r=n.length>>>0;if(!r)return-1;var i=0;arguments.length>1&&(i=j(arguments[1])),i=i>=0?i:Math.max(0,r+i);for(;i<r;i++)if(i in n&&n[i]===t)return i;return-1};if(!Array.prototype.lastIndexOf||[0,1].lastIndexOf(0,-3)!=-1)Array.prototype.lastIndexOf=function(t){var n=g&&a(this)==\"[object String]\"?this.split(\"\"):q(this),r=n.length>>>0;if(!r)return-1;var i=r-1;arguments.length>1&&(i=Math.min(i,j(arguments[1]))),i=i>=0?i:r-Math.abs(i);for(;i>=0;i--)if(i in n&&t===n[i])return i;return-1};Object.getPrototypeOf||(Object.getPrototypeOf=function(t){return t.__proto__||(t.constructor?t.constructor.prototype:o)});if(!Object.getOwnPropertyDescriptor){var y=\"Object.getOwnPropertyDescriptor called on a non-object: \";Object.getOwnPropertyDescriptor=function(t,n){if(typeof t!=\"object\"&&typeof t!=\"function\"||t===null)throw new TypeError(y+t);if(!f(t,n))return;var r,i,s;r={enumerable:!0,configurable:!0};if(d){var u=t.__proto__;t.__proto__=o;var i=h(t,n),s=p(t,n);t.__proto__=u;if(i||s)return i&&(r.get=i),s&&(r.set=s),r}return r.value=t[n],r}}Object.getOwnPropertyNames||(Object.getOwnPropertyNames=function(t){return Object.keys(t)});if(!Object.create){var b;Object.prototype.__proto__===null?b=function(){return{__proto__:null}}:b=function(){var e={};for(var t in e)e[t]=null;return e.constructor=e.hasOwnProperty=e.propertyIsEnumerable=e.isPrototypeOf=e.toLocaleString=e.toString=e.valueOf=e.__proto__=null,e},Object.create=function(t,n){var r;if(t===null)r=b();else{if(typeof t!=\"object\")throw new TypeError(\"typeof prototype[\"+typeof t+\"] != 'object'\");var i=function(){};i.prototype=t,r=new i,r.__proto__=t}return n!==void 0&&Object.defineProperties(r,n),r}}if(Object.defineProperty){var E=w({}),S=typeof document==\"undefined\"||w(document.createElement(\"div\"));if(!E||!S)var x=Object.defineProperty}if(!Object.defineProperty||x){var T=\"Property description must be an object: \",N=\"Object.defineProperty called on non-object: \",C=\"getters & setters can not be defined on this javascript engine\";Object.defineProperty=function(t,n,r){if(typeof t!=\"object\"&&typeof t!=\"function\"||t===null)throw new TypeError(N+t);if(typeof r!=\"object\"&&typeof r!=\"function\"||r===null)throw new TypeError(T+r);if(x)try{return x.call(Object,t,n,r)}catch(i){}if(f(r,\"value\"))if(d&&(h(t,n)||p(t,n))){var s=t.__proto__;t.__proto__=o,delete t[n],t[n]=r.value,t.__proto__=s}else t[n]=r.value;else{if(!d)throw new TypeError(C);f(r,\"get\")&&l(t,n,r.get),f(r,\"set\")&&c(t,n,r.set)}return t}}Object.defineProperties||(Object.defineProperties=function(t,n){for(var r in n)f(n,r)&&Object.defineProperty(t,r,n[r]);return t}),Object.seal||(Object.seal=function(t){return t}),Object.freeze||(Object.freeze=function(t){return t});try{Object.freeze(function(){})}catch(k){Object.freeze=function(t){return function(n){return typeof n==\"function\"?n:t(n)}}(Object.freeze)}Object.preventExtensions||(Object.preventExtensions=function(t){return t}),Object.isSealed||(Object.isSealed=function(t){return!1}),Object.isFrozen||(Object.isFrozen=function(t){return!1}),Object.isExtensible||(Object.isExtensible=function(t){if(Object(t)===t)throw new TypeError;var n=\"\";while(f(t,n))n+=\"?\";t[n]=!0;var r=f(t,n);return delete t[n],r});if(!Object.keys){var L=!0,A=[\"toString\",\"toLocaleString\",\"valueOf\",\"hasOwnProperty\",\"isPrototypeOf\",\"propertyIsEnumerable\",\"constructor\"],O=A.length;for(var M in{toString:null})L=!1;Object.keys=function R(e){if(typeof e!=\"object\"&&typeof e!=\"function\"||e===null)throw new TypeError(\"Object.keys called on a non-object\");var R=[];for(var t in e)f(e,t)&&R.push(t);if(L)for(var n=0,r=O;n<r;n++){var i=A[n];f(e,i)&&R.push(i)}return R}}Date.now||(Date.now=function(){return(new Date).getTime()});if(\"0\".split(void 0,0).length){var _=String.prototype.split;String.prototype.split=function(e,t){return e===void 0&&t===0?[]:_.apply(this,arguments)}}if(\"\".substr&&\"0b\".substr(-1)!==\"b\"){var D=String.prototype.substr;String.prototype.substr=function(e,t){return D.call(this,e<0?(e=this.length+e)<0?0:e:e,t)}}var P=\"\t\\n\u000b\\f\\r   ᠎             　\\u2028\\u2029﻿\";if(!String.prototype.trim||P.trim()){P=\"[\"+P+\"]\";var H=new RegExp(\"^\"+P+P+\"*\"),B=new RegExp(P+P+\"*$\");String.prototype.trim=function(){if(this===undefined||this===null)throw new TypeError(\"can't convert \"+this+\" to object\");return String(this).replace(H,\"\").replace(B,\"\")}}var q=function(e){if(e==null)throw new TypeError(\"can't convert \"+e+\" to object\");return Object(e)}}),define(\"ace/lib/event_emitter\",[\"require\",\"exports\",\"module\"],function(e,t,n){var r={};r._emit=r._dispatchEvent=function(e,t){this._eventRegistry=this._eventRegistry||{},this._defaultHandlers=this._defaultHandlers||{};var n=this._eventRegistry[e]||[],r=this._defaultHandlers[e];if(!n.length&&!r)return;if(typeof t!=\"object\"||!t)t={};t.type||(t.type=e),t.stopPropagation||(t.stopPropagation=function(){this.propagationStopped=!0}),t.preventDefault||(t.preventDefault=function(){this.defaultPrevented=!0});for(var i=0;i<n.length;i++){n[i](t);if(t.propagationStopped)break}if(r&&!t.defaultPrevented)return r(t)},r.setDefaultHandler=function(e,t){this._defaultHandlers=this._defaultHandlers||{};if(this._defaultHandlers[e])throw new Error(\"The default handler for '\"+e+\"' is already set\");this._defaultHandlers[e]=t},r.on=r.addEventListener=function(e,t){this._eventRegistry=this._eventRegistry||{};var n=this._eventRegistry[e];n||(n=this._eventRegistry[e]=[]),n.indexOf(t)==-1&&n.push(t)},r.removeListener=r.removeEventListener=function(e,t){this._eventRegistry=this._eventRegistry||{};var n=this._eventRegistry[e];if(!n)return;var r=n.indexOf(t);r!==-1&&n.splice(r,1)},r.removeAllListeners=function(e){this._eventRegistry&&(this._eventRegistry[e]=[])},t.EventEmitter=r}),define(\"ace/lib/oop\",[\"require\",\"exports\",\"module\"],function(e,t,n){t.inherits=function(){var e=function(){};return function(t,n){e.prototype=n.prototype,t.super_=n.prototype,t.prototype=new e,t.prototype.constructor=t}}(),t.mixin=function(e,t){for(var n in t)e[n]=t[n]},t.implement=function(e,n){t.mixin(e,n)}}),define(\"ace/mode/json_worker\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/worker/mirror\",\"ace/mode/json/json_parse\"],function(e,t,n){var r=e(\"../lib/oop\"),i=e(\"../worker/mirror\").Mirror,s=e(\"./json/json_parse\"),o=t.JsonWorker=function(e){i.call(this,e),this.setTimeout(200)};r.inherits(o,i),function(){this.onUpdate=function(){var e=this.doc.getValue();try{var t=s(e)}catch(n){var r=this.doc.indexToPosition(n.at-1);this.sender.emit(\"error\",{row:r.row,column:r.column,text:n.message,type:\"error\"});return}this.sender.emit(\"ok\")}}.call(o.prototype)}),define(\"ace/worker/mirror\",[\"require\",\"exports\",\"module\",\"ace/document\",\"ace/lib/lang\"],function(e,t,n){var r=e(\"../document\").Document,i=e(\"../lib/lang\"),s=t.Mirror=function(e){this.sender=e;var t=this.doc=new r(\"\"),n=this.deferredUpdate=i.deferredCall(this.onUpdate.bind(this)),s=this;e.on(\"change\",function(e){t.applyDeltas([e.data]),n.schedule(s.$timeout)})};(function(){this.$timeout=500,this.setTimeout=function(e){this.$timeout=e},this.setValue=function(e){this.doc.setValue(e),this.deferredUpdate.schedule(this.$timeout)},this.getValue=function(e){this.sender.callback(this.doc.getValue(),e)},this.onUpdate=function(){}}).call(s.prototype)}),define(\"ace/document\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/event_emitter\",\"ace/range\",\"ace/anchor\"],function(e,t,n){var r=e(\"./lib/oop\"),i=e(\"./lib/event_emitter\").EventEmitter,s=e(\"./range\").Range,o=e(\"./anchor\").Anchor,u=function(e){this.$lines=[],e.length==0?this.$lines=[\"\"]:Array.isArray(e)?this.insertLines(0,e):this.insert({row:0,column:0},e)};(function(){r.implement(this,i),this.setValue=function(e){var t=this.getLength();this.remove(new s(0,0,t,this.getLine(t-1).length)),this.insert({row:0,column:0},e)},this.getValue=function(){return this.getAllLines().join(this.getNewLineCharacter())},this.createAnchor=function(e,t){return new o(this,e,t)},\"aaa\".split(/a/).length==0?this.$split=function(e){return e.replace(/\\r\\n|\\r/g,\"\\n\").split(\"\\n\")}:this.$split=function(e){return e.split(/\\r\\n|\\r|\\n/)},this.$detectNewLine=function(e){var t=e.match(/^.*?(\\r\\n|\\r|\\n)/m);t?this.$autoNewLine=t[1]:this.$autoNewLine=\"\\n\"},this.getNewLineCharacter=function(){switch(this.$newLineMode){case\"windows\":return\"\\r\\n\";case\"unix\":return\"\\n\";default:return this.$autoNewLine}},this.$autoNewLine=\"\\n\",this.$newLineMode=\"auto\",this.setNewLineMode=function(e){if(this.$newLineMode===e)return;this.$newLineMode=e},this.getNewLineMode=function(){return this.$newLineMode},this.isNewLine=function(e){return e==\"\\r\\n\"||e==\"\\r\"||e==\"\\n\"},this.getLine=function(e){return this.$lines[e]||\"\"},this.getLines=function(e,t){return this.$lines.slice(e,t+1)},this.getAllLines=function(){return this.getLines(0,this.getLength())},this.getLength=function(){return this.$lines.length},this.getTextRange=function(e){if(e.start.row==e.end.row)return this.$lines[e.start.row].substring(e.start.column,e.end.column);var t=this.getLines(e.start.row+1,e.end.row-1);return t.unshift((this.$lines[e.start.row]||\"\").substring(e.start.column)),t.push((this.$lines[e.end.row]||\"\").substring(0,e.end.column)),t.join(this.getNewLineCharacter())},this.$clipPosition=function(e){var t=this.getLength();return e.row>=t&&(e.row=Math.max(0,t-1),e.column=this.getLine(t-1).length),e},this.insert=function(e,t){if(!t||t.length===0)return e;e=this.$clipPosition(e),this.getLength()<=1&&this.$detectNewLine(t);var n=this.$split(t),r=n.splice(0,1)[0],i=n.length==0?null:n.splice(n.length-1,1)[0];return e=this.insertInLine(e,r),i!==null&&(e=this.insertNewLine(e),e=this.insertLines(e.row,n),e=this.insertInLine(e,i||\"\")),e},this.insertLines=function(e,t){if(t.length==0)return{row:e,column:0};if(t.length>65535){var n=this.insertLines(e,t.slice(65535));t=t.slice(0,65535)}var r=[e,0];r.push.apply(r,t),this.$lines.splice.apply(this.$lines,r);var i=new s(e,0,e+t.length,0),o={action:\"insertLines\",range:i,lines:t};return this._emit(\"change\",{data:o}),n||i.end},this.insertNewLine=function(e){e=this.$clipPosition(e);var t=this.$lines[e.row]||\"\";this.$lines[e.row]=t.substring(0,e.column),this.$lines.splice(e.row+1,0,t.substring(e.column,t.length));var n={row:e.row+1,column:0},r={action:\"insertText\",range:s.fromPoints(e,n),text:this.getNewLineCharacter()};return this._emit(\"change\",{data:r}),n},this.insertInLine=function(e,t){if(t.length==0)return e;var n=this.$lines[e.row]||\"\";this.$lines[e.row]=n.substring(0,e.column)+t+n.substring(e.column);var r={row:e.row,column:e.column+t.length},i={action:\"insertText\",range:s.fromPoints(e,r),text:t};return this._emit(\"change\",{data:i}),r},this.remove=function(e){e.start=this.$clipPosition(e.start),e.end=this.$clipPosition(e.end);if(e.isEmpty())return e.start;var t=e.start.row,n=e.end.row;if(e.isMultiLine()){var r=e.start.column==0?t:t+1,i=n-1;e.end.column>0&&this.removeInLine(n,0,e.end.column),i>=r&&this.removeLines(r,i),r!=t&&(this.removeInLine(t,e.start.column,this.getLine(t).length),this.removeNewLine(e.start.row))}else this.removeInLine(t,e.start.column,e.end.column);return e.start},this.removeInLine=function(e,t,n){if(t==n)return;var r=new s(e,t,e,n),i=this.getLine(e),o=i.substring(t,n),u=i.substring(0,t)+i.substring(n,i.length);this.$lines.splice(e,1,u);var a={action:\"removeText\",range:r,text:o};return this._emit(\"change\",{data:a}),r.start},this.removeLines=function(e,t){var n=new s(e,0,t+1,0),r=this.$lines.splice(e,t-e+1),i={action:\"removeLines\",range:n,nl:this.getNewLineCharacter(),lines:r};return this._emit(\"change\",{data:i}),r},this.removeNewLine=function(e){var t=this.getLine(e),n=this.getLine(e+1),r=new s(e,t.length,e+1,0),i=t+n;this.$lines.splice(e,2,i);var o={action:\"removeText\",range:r,text:this.getNewLineCharacter()};this._emit(\"change\",{data:o})},this.replace=function(e,t){if(t.length==0&&e.isEmpty())return e.start;if(t==this.getTextRange(e))return e.end;this.remove(e);if(t)var n=this.insert(e.start,t);else n=e.start;return n},this.applyDeltas=function(e){for(var t=0;t<e.length;t++){var n=e[t],r=s.fromPoints(n.range.start,n.range.end);n.action==\"insertLines\"?this.insertLines(r.start.row,n.lines):n.action==\"insertText\"?this.insert(r.start,n.text):n.action==\"removeLines\"?this.removeLines(r.start.row,r.end.row-1):n.action==\"removeText\"&&this.remove(r)}},this.revertDeltas=function(e){for(var t=e.length-1;t>=0;t--){var n=e[t],r=s.fromPoints(n.range.start,n.range.end);n.action==\"insertLines\"?this.removeLines(r.start.row,r.end.row-1):n.action==\"insertText\"?this.remove(r):n.action==\"removeLines\"?this.insertLines(r.start.row,n.lines):n.action==\"removeText\"&&this.insert(r.start,n.text)}},this.indexToPosition=function(e,t){var n=this.$lines||this.getAllLines(),r=this.getNewLineCharacter().length;for(var i=t||0,s=n.length;i<s;i++){e-=n[i].length+r;if(e<0)return{row:i,column:e+n[i].length+r}}return{row:s-1,column:n[s-1].length}},this.positionToIndex=function(e,t){var n=this.$lines||this.getAllLines(),r=this.getNewLineCharacter().length,i=0,s=Math.min(e.row,n.length);for(var o=t||0;o<s;++o)i+=n[o].length;return i+r*o+e.column}}).call(u.prototype),t.Document=u}),define(\"ace/range\",[\"require\",\"exports\",\"module\"],function(e,t,n){var r=function(e,t,n,r){this.start={row:e,column:t},this.end={row:n,column:r}};(function(){this.isEqual=function(e){return this.start.row==e.start.row&&this.end.row==e.end.row&&this.start.column==e.start.column&&this.end.column==e.end.column},this.toString=function(){return\"Range: [\"+this.start.row+\"/\"+this.start.column+\"] -> [\"+this.end.row+\"/\"+this.end.column+\"]\"},this.contains=function(e,t){return this.compare(e,t)==0},this.compareRange=function(e){var t,n=e.end,r=e.start;return t=this.compare(n.row,n.column),t==1?(t=this.compare(r.row,r.column),t==1?2:t==0?1:0):t==-1?-2:(t=this.compare(r.row,r.column),t==-1?-1:t==1?42:0)},this.comparePoint=function(e){return this.compare(e.row,e.column)},this.containsRange=function(e){return this.comparePoint(e.start)==0&&this.comparePoint(e.end)==0},this.intersects=function(e){var t=this.compareRange(e);return t==-1||t==0||t==1},this.isEnd=function(e,t){return this.end.row==e&&this.end.column==t},this.isStart=function(e,t){return this.start.row==e&&this.start.column==t},this.setStart=function(e,t){typeof e==\"object\"?(this.start.column=e.column,this.start.row=e.row):(this.start.row=e,this.start.column=t)},this.setEnd=function(e,t){typeof e==\"object\"?(this.end.column=e.column,this.end.row=e.row):(this.end.row=e,this.end.column=t)},this.inside=function(e,t){return this.compare(e,t)==0?this.isEnd(e,t)||this.isStart(e,t)?!1:!0:!1},this.insideStart=function(e,t){return this.compare(e,t)==0?this.isEnd(e,t)?!1:!0:!1},this.insideEnd=function(e,t){return this.compare(e,t)==0?this.isStart(e,t)?!1:!0:!1},this.compare=function(e,t){return!this.isMultiLine()&&e===this.start.row?t<this.start.column?-1:t>this.end.column?1:0:e<this.start.row?-1:e>this.end.row?1:this.start.row===e?t>=this.start.column?0:-1:this.end.row===e?t<=this.end.column?0:1:0},this.compareStart=function(e,t){return this.start.row==e&&this.start.column==t?-1:this.compare(e,t)},this.compareEnd=function(e,t){return this.end.row==e&&this.end.column==t?1:this.compare(e,t)},this.compareInside=function(e,t){return this.end.row==e&&this.end.column==t?1:this.start.row==e&&this.start.column==t?-1:this.compare(e,t)},this.clipRows=function(e,t){if(this.end.row>t)var n={row:t+1,column:0};if(this.start.row>t)var i={row:t+1,column:0};if(this.start.row<e)var i={row:e,column:0};if(this.end.row<e)var n={row:e,column:0};return r.fromPoints(i||this.start,n||this.end)},this.extend=function(e,t){var n=this.compare(e,t);if(n==0)return this;if(n==-1)var i={row:e,column:t};else var s={row:e,column:t};return r.fromPoints(i||this.start,s||this.end)},this.isEmpty=function(){return this.start.row==this.end.row&&this.start.column==this.end.column},this.isMultiLine=function(){return this.start.row!==this.end.row},this.clone=function(){return r.fromPoints(this.start,this.end)},this.collapseRows=function(){return this.end.column==0?new r(this.start.row,0,Math.max(this.start.row,this.end.row-1),0):new r(this.start.row,0,this.end.row,0)},this.toScreenRange=function(e){var t=e.documentToScreenPosition(this.start),n=e.documentToScreenPosition(this.end);return new r(t.row,t.column,n.row,n.column)}}).call(r.prototype),r.fromPoints=function(e,t){return new r(e.row,e.column,t.row,t.column)},t.Range=r}),define(\"ace/anchor\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/event_emitter\"],function(e,t,n){var r=e(\"./lib/oop\"),i=e(\"./lib/event_emitter\").EventEmitter,s=t.Anchor=function(e,t,n){this.document=e,typeof n==\"undefined\"?this.setPosition(t.row,t.column):this.setPosition(t,n),this.$onChange=this.onChange.bind(this),e.on(\"change\",this.$onChange)};(function(){r.implement(this,i),this.getPosition=function(){return this.$clipPositionToDocument(this.row,this.column)},this.getDocument=function(){return this.document},this.onChange=function(e){var t=e.data,n=t.range;if(n.start.row==n.end.row&&n.start.row!=this.row)return;if(n.start.row>this.row)return;if(n.start.row==this.row&&n.start.column>this.column)return;var r=this.row,i=this.column;t.action===\"insertText\"?n.start.row===r&&n.start.column<=i?n.start.row===n.end.row?i+=n.end.column-n.start.column:(i-=n.start.column,r+=n.end.row-n.start.row):n.start.row!==n.end.row&&n.start.row<r&&(r+=n.end.row-n.start.row):t.action===\"insertLines\"?n.start.row<=r&&(r+=n.end.row-n.start.row):t.action==\"removeText\"?n.start.row==r&&n.start.column<i?n.end.column>=i?i=n.start.column:i=Math.max(0,i-(n.end.column-n.start.column)):n.start.row!==n.end.row&&n.start.row<r?(n.end.row==r&&(i=Math.max(0,i-n.end.column)+n.start.column),r-=n.end.row-n.start.row):n.end.row==r&&(r-=n.end.row-n.start.row,i=Math.max(0,i-n.end.column)+n.start.column):t.action==\"removeLines\"&&n.start.row<=r&&(n.end.row<=r?r-=n.end.row-n.start.row:(r=n.start.row,i=0)),this.setPosition(r,i,!0)},this.setPosition=function(e,t,n){var r;n?r={row:e,column:t}:r=this.$clipPositionToDocument(e,t);if(this.row==r.row&&this.column==r.column)return;var i={row:this.row,column:this.column};this.row=r.row,this.column=r.column,this._emit(\"change\",{old:i,value:r})},this.detach=function(){this.document.removeEventListener(\"change\",this.$onChange)},this.$clipPositionToDocument=function(e,t){var n={};return e>=this.document.getLength()?(n.row=Math.max(0,this.document.getLength()-1),n.column=this.document.getLine(n.row).length):e<0?(n.row=0,n.column=0):(n.row=e,n.column=Math.min(this.document.getLine(n.row).length,Math.max(0,t))),t<0&&(n.column=0),n}}).call(s.prototype)}),define(\"ace/lib/lang\",[\"require\",\"exports\",\"module\"],function(e,t,n){t.stringReverse=function(e){return e.split(\"\").reverse().join(\"\")},t.stringRepeat=function(e,t){var n=\"\";while(t>0){t&1&&(n+=e);if(t>>=1)e+=e}return n};var r=/^\\s\\s*/,i=/\\s\\s*$/;t.stringTrimLeft=function(e){return e.replace(r,\"\")},t.stringTrimRight=function(e){return e.replace(i,\"\")},t.copyObject=function(e){var t={};for(var n in e)t[n]=e[n];return t},t.copyArray=function(e){var t=[];for(var n=0,r=e.length;n<r;n++)e[n]&&typeof e[n]==\"object\"?t[n]=this.copyObject(e[n]):t[n]=e[n];return t},t.deepCopy=function(e){if(typeof e!=\"object\")return e;var t=e.constructor();for(var n in e)typeof e[n]==\"object\"?t[n]=this.deepCopy(e[n]):t[n]=e[n];return t},t.arrayToMap=function(e){var t={};for(var n=0;n<e.length;n++)t[e[n]]=1;return t},t.createMap=function(e){var t=Object.create(null);for(var n in e)t[n]=e[n];return t},t.arrayRemove=function(e,t){for(var n=0;n<=e.length;n++)t===e[n]&&e.splice(n,1)},t.escapeRegExp=function(e){return e.replace(/([.*+?^${}()|[\\]\\/\\\\])/g,\"\\\\$1\")},t.escapeHTML=function(e){return e.replace(/&/g,\"&#38;\").replace(/\"/g,\"&#34;\").replace(/'/g,\"&#39;\").replace(/</g,\"&#60;\")},t.getMatchOffsets=function(e,t){var n=[];return e.replace(t,function(e){n.push({offset:arguments[arguments.length-2],length:e.length})}),n},t.deferredCall=function(e){var t=null,n=function(){t=null,e()},r=function(e){return r.cancel(),t=setTimeout(n,e||0),r};return r.schedule=r,r.call=function(){return this.cancel(),e(),r},r.cancel=function(){return clearTimeout(t),t=null,r},r},t.delayedCall=function(e,t){var n=null,r=function(){n=null,e()},i=function(e){n&&clearTimeout(n),n=setTimeout(r,e||t)};return i.delay=i,i.schedule=function(e){n==null&&(n=setTimeout(r,e||0))},i.call=function(){this.cancel(),e()},i.cancel=function(){n&&clearTimeout(n),n=null},i.isPending=function(){return n},i}}),define(\"ace/mode/json/json_parse\",[\"require\",\"exports\",\"module\"],function(e,t,n){var r,i,s={'\"':'\"',\"\\\\\":\"\\\\\",\"/\":\"/\",b:\"\\b\",f:\"\\f\",n:\"\\n\",r:\"\\r\",t:\"\t\"},o,u=function(e){throw{name:\"SyntaxError\",message:e,at:r,text:o}},a=function(e){return e&&e!==i&&u(\"Expected '\"+e+\"' instead of '\"+i+\"'\"),i=o.charAt(r),r+=1,i},f=function(){var e,t=\"\";i===\"-\"&&(t=\"-\",a(\"-\"));while(i>=\"0\"&&i<=\"9\")t+=i,a();if(i===\".\"){t+=\".\";while(a()&&i>=\"0\"&&i<=\"9\")t+=i}if(i===\"e\"||i===\"E\"){t+=i,a();if(i===\"-\"||i===\"+\")t+=i,a();while(i>=\"0\"&&i<=\"9\")t+=i,a()}e=+t;if(!isNaN(e))return e;u(\"Bad number\")},l=function(){var e,t,n=\"\",r;if(i==='\"')while(a()){if(i==='\"')return a(),n;if(i===\"\\\\\"){a();if(i===\"u\"){r=0;for(t=0;t<4;t+=1){e=parseInt(a(),16);if(!isFinite(e))break;r=r*16+e}n+=String.fromCharCode(r)}else{if(typeof s[i]!=\"string\")break;n+=s[i]}}else n+=i}u(\"Bad string\")},c=function(){while(i&&i<=\" \")a()},h=function(){switch(i){case\"t\":return a(\"t\"),a(\"r\"),a(\"u\"),a(\"e\"),!0;case\"f\":return a(\"f\"),a(\"a\"),a(\"l\"),a(\"s\"),a(\"e\"),!1;case\"n\":return a(\"n\"),a(\"u\"),a(\"l\"),a(\"l\"),null}u(\"Unexpected '\"+i+\"'\")},p,d=function(){var e=[];if(i===\"[\"){a(\"[\"),c();if(i===\"]\")return a(\"]\"),e;while(i){e.push(p()),c();if(i===\"]\")return a(\"]\"),e;a(\",\"),c()}}u(\"Bad array\")},v=function(){var e,t={};if(i===\"{\"){a(\"{\"),c();if(i===\"}\")return a(\"}\"),t;while(i){e=l(),c(),a(\":\"),Object.hasOwnProperty.call(t,e)&&u('Duplicate key \"'+e+'\"'),t[e]=p(),c();if(i===\"}\")return a(\"}\"),t;a(\",\"),c()}}u(\"Bad object\")};return p=function(){c();switch(i){case\"{\":return v();case\"[\":return d();case'\"':return l();case\"-\":return f();default:return i>=\"0\"&&i<=\"9\"?f():h()}},function(e,t){var n;return o=e,r=0,i=\" \",n=p(),c(),i&&u(\"Syntax error\"),typeof t==\"function\"?function s(e,n){var r,i,o=e[n];if(o&&typeof o==\"object\")for(r in o)Object.hasOwnProperty.call(o,r)&&(i=s(o,r),i!==undefined?o[r]=i:delete o[r]);return t.call(e,n,o)}({\"\":n},\"\"):n}})"
  },
  {
    "path": "public/js/vendor/ace/worker-php.js",
    "content": "\"no use strict\";function initBaseUrls(e){require.tlns=e}function initSender(){var e=require(null,\"ace/lib/event_emitter\").EventEmitter,t=require(null,\"ace/lib/oop\"),n=function(){};return function(){t.implement(this,e),this.callback=function(e,t){postMessage({type:\"call\",id:t,data:e})},this.emit=function(e,t){postMessage({type:\"event\",name:e,data:t})}}.call(n.prototype),new n}if(typeof window!=\"undefined\"&&window.document)throw\"atempt to load ace worker into main window instead of webWorker\";var console={log:function(){var e=Array.prototype.slice.call(arguments,0);postMessage({type:\"log\",data:e})},error:function(){var e=Array.prototype.slice.call(arguments,0);postMessage({type:\"log\",data:e})}},window={console:console},normalizeModule=function(e,t){if(t.indexOf(\"!\")!==-1){var n=t.split(\"!\");return normalizeModule(e,n[0])+\"!\"+normalizeModule(e,n[1])}if(t.charAt(0)==\".\"){var r=e.split(\"/\").slice(0,-1).join(\"/\");t=r+\"/\"+t;while(t.indexOf(\".\")!==-1&&i!=t){var i=t;t=t.replace(/\\/\\.\\//,\"/\").replace(/[^\\/]+\\/\\.\\.\\//,\"\")}}return t},require=function(e,t){if(!t.charAt)throw new Error(\"worker.js require() accepts only (parentId, id) as arguments\");t=normalizeModule(e,t);var n=require.modules[t];if(n)return n.initialized||(n.initialized=!0,n.exports=n.factory().exports),n.exports;var r=t.split(\"/\");r[0]=require.tlns[r[0]]||r[0];var i=r.join(\"/\")+\".js\";return require.id=t,importScripts(i),require(e,t)};require.modules={},require.tlns={};var define=function(e,t,n){arguments.length==2?(n=t,typeof e!=\"string\"&&(t=e,e=require.id)):arguments.length==1&&(n=e,e=require.id);if(e.indexOf(\"text!\")===0)return;var r=function(t,n){return require(e,t,n)};require.modules[e]={factory:function(){var e={exports:{}},t=n(r,e.exports,e);return t&&(e.exports=t),e}}},main,sender;onmessage=function(e){var t=e.data;if(t.command){if(!main[t.command])throw new Error(\"Unknown command:\"+t.command);main[t.command].apply(main,t.args)}else if(t.init){initBaseUrls(t.tlns),require(null,\"ace/lib/fixoldbrowsers\"),sender=initSender();var n=require(null,t.module)[t.classname];main=new n(sender)}else t.event&&sender&&sender._emit(t.event,t.data)},define(\"ace/lib/fixoldbrowsers\",[\"require\",\"exports\",\"module\",\"ace/lib/regexp\",\"ace/lib/es5-shim\"],function(e,t,n){e(\"./regexp\"),e(\"./es5-shim\")}),define(\"ace/lib/regexp\",[\"require\",\"exports\",\"module\"],function(e,t,n){function o(e){return(e.global?\"g\":\"\")+(e.ignoreCase?\"i\":\"\")+(e.multiline?\"m\":\"\")+(e.extended?\"x\":\"\")+(e.sticky?\"y\":\"\")}function u(e,t,n){if(Array.prototype.indexOf)return e.indexOf(t,n);for(var r=n||0;r<e.length;r++)if(e[r]===t)return r;return-1}var r={exec:RegExp.prototype.exec,test:RegExp.prototype.test,match:String.prototype.match,replace:String.prototype.replace,split:String.prototype.split},i=r.exec.call(/()??/,\"\")[1]===undefined,s=function(){var e=/^/g;return r.test.call(e,\"\"),!e.lastIndex}();if(s&&i)return;RegExp.prototype.exec=function(e){var t=r.exec.apply(this,arguments),n,a;if(typeof e==\"string\"&&t){!i&&t.length>1&&u(t,\"\")>-1&&(a=RegExp(this.source,r.replace.call(o(this),\"g\",\"\")),r.replace.call(e.slice(t.index),a,function(){for(var e=1;e<arguments.length-2;e++)arguments[e]===undefined&&(t[e]=undefined)}));if(this._xregexp&&this._xregexp.captureNames)for(var f=1;f<t.length;f++)n=this._xregexp.captureNames[f-1],n&&(t[n]=t[f]);!s&&this.global&&!t[0].length&&this.lastIndex>t.index&&this.lastIndex--}return t},s||(RegExp.prototype.test=function(e){var t=r.exec.call(this,e);return t&&this.global&&!t[0].length&&this.lastIndex>t.index&&this.lastIndex--,!!t})}),define(\"ace/lib/es5-shim\",[\"require\",\"exports\",\"module\"],function(e,t,n){function r(){}function w(e){try{return Object.defineProperty(e,\"sentinel\",{}),\"sentinel\"in e}catch(t){}}function j(e){return e=+e,e!==e?e=0:e!==0&&e!==1/0&&e!==-1/0&&(e=(e>0||-1)*Math.floor(Math.abs(e))),e}function F(e){var t=typeof e;return e===null||t===\"undefined\"||t===\"boolean\"||t===\"number\"||t===\"string\"}function I(e){var t,n,r;if(F(e))return e;n=e.valueOf;if(typeof n==\"function\"){t=n.call(e);if(F(t))return t}r=e.toString;if(typeof r==\"function\"){t=r.call(e);if(F(t))return t}throw new TypeError}Function.prototype.bind||(Function.prototype.bind=function(t){var n=this;if(typeof n!=\"function\")throw new TypeError(\"Function.prototype.bind called on incompatible \"+n);var i=u.call(arguments,1),s=function(){if(this instanceof s){var e=n.apply(this,i.concat(u.call(arguments)));return Object(e)===e?e:this}return n.apply(t,i.concat(u.call(arguments)))};return n.prototype&&(r.prototype=n.prototype,s.prototype=new r,r.prototype=null),s});var i=Function.prototype.call,s=Array.prototype,o=Object.prototype,u=s.slice,a=i.bind(o.toString),f=i.bind(o.hasOwnProperty),l,c,h,p,d;if(d=f(o,\"__defineGetter__\"))l=i.bind(o.__defineGetter__),c=i.bind(o.__defineSetter__),h=i.bind(o.__lookupGetter__),p=i.bind(o.__lookupSetter__);if([1,2].splice(0).length!=2)if(!function(){function e(e){var t=new Array(e+2);return t[0]=t[1]=0,t}var t=[],n;t.splice.apply(t,e(20)),t.splice.apply(t,e(26)),n=t.length,t.splice(5,0,\"XXX\"),n+1==t.length;if(n+1==t.length)return!0}())Array.prototype.splice=function(e,t){var n=this.length;e>0?e>n&&(e=n):e==void 0?e=0:e<0&&(e=Math.max(n+e,0)),e+t<n||(t=n-e);var r=this.slice(e,e+t),i=u.call(arguments,2),s=i.length;if(e===n)s&&this.push.apply(this,i);else{var o=Math.min(t,n-e),a=e+o,f=a+s-o,l=n-a,c=n-o;if(f<a)for(var h=0;h<l;++h)this[f+h]=this[a+h];else if(f>a)for(h=l;h--;)this[f+h]=this[a+h];if(s&&e===c)this.length=c,this.push.apply(this,i);else{this.length=c+s;for(h=0;h<s;++h)this[e+h]=i[h]}}return r};else{var v=Array.prototype.splice;Array.prototype.splice=function(e,t){return arguments.length?v.apply(this,[e===void 0?0:e,t===void 0?this.length-e:t].concat(u.call(arguments,2))):[]}}Array.isArray||(Array.isArray=function(t){return a(t)==\"[object Array]\"});var m=Object(\"a\"),g=m[0]!=\"a\"||!(0 in m);Array.prototype.forEach||(Array.prototype.forEach=function(t){var n=q(this),r=g&&a(this)==\"[object String]\"?this.split(\"\"):n,i=arguments[1],s=-1,o=r.length>>>0;if(a(t)!=\"[object Function]\")throw new TypeError;while(++s<o)s in r&&t.call(i,r[s],s,n)}),Array.prototype.map||(Array.prototype.map=function(t){var n=q(this),r=g&&a(this)==\"[object String]\"?this.split(\"\"):n,i=r.length>>>0,s=Array(i),o=arguments[1];if(a(t)!=\"[object Function]\")throw new TypeError(t+\" is not a function\");for(var u=0;u<i;u++)u in r&&(s[u]=t.call(o,r[u],u,n));return s}),Array.prototype.filter||(Array.prototype.filter=function(t){var n=q(this),r=g&&a(this)==\"[object String]\"?this.split(\"\"):n,i=r.length>>>0,s=[],o,u=arguments[1];if(a(t)!=\"[object Function]\")throw new TypeError(t+\" is not a function\");for(var f=0;f<i;f++)f in r&&(o=r[f],t.call(u,o,f,n)&&s.push(o));return s}),Array.prototype.every||(Array.prototype.every=function(t){var n=q(this),r=g&&a(this)==\"[object String]\"?this.split(\"\"):n,i=r.length>>>0,s=arguments[1];if(a(t)!=\"[object Function]\")throw new TypeError(t+\" is not a function\");for(var o=0;o<i;o++)if(o in r&&!t.call(s,r[o],o,n))return!1;return!0}),Array.prototype.some||(Array.prototype.some=function(t){var n=q(this),r=g&&a(this)==\"[object String]\"?this.split(\"\"):n,i=r.length>>>0,s=arguments[1];if(a(t)!=\"[object Function]\")throw new TypeError(t+\" is not a function\");for(var o=0;o<i;o++)if(o in r&&t.call(s,r[o],o,n))return!0;return!1}),Array.prototype.reduce||(Array.prototype.reduce=function(t){var n=q(this),r=g&&a(this)==\"[object String]\"?this.split(\"\"):n,i=r.length>>>0;if(a(t)!=\"[object Function]\")throw new TypeError(t+\" is not a function\");if(!i&&arguments.length==1)throw new TypeError(\"reduce of empty array with no initial value\");var s=0,o;if(arguments.length>=2)o=arguments[1];else do{if(s in r){o=r[s++];break}if(++s>=i)throw new TypeError(\"reduce of empty array with no initial value\")}while(!0);for(;s<i;s++)s in r&&(o=t.call(void 0,o,r[s],s,n));return o}),Array.prototype.reduceRight||(Array.prototype.reduceRight=function(t){var n=q(this),r=g&&a(this)==\"[object String]\"?this.split(\"\"):n,i=r.length>>>0;if(a(t)!=\"[object Function]\")throw new TypeError(t+\" is not a function\");if(!i&&arguments.length==1)throw new TypeError(\"reduceRight of empty array with no initial value\");var s,o=i-1;if(arguments.length>=2)s=arguments[1];else do{if(o in r){s=r[o--];break}if(--o<0)throw new TypeError(\"reduceRight of empty array with no initial value\")}while(!0);do o in this&&(s=t.call(void 0,s,r[o],o,n));while(o--);return s});if(!Array.prototype.indexOf||[0,1].indexOf(1,2)!=-1)Array.prototype.indexOf=function(t){var n=g&&a(this)==\"[object String]\"?this.split(\"\"):q(this),r=n.length>>>0;if(!r)return-1;var i=0;arguments.length>1&&(i=j(arguments[1])),i=i>=0?i:Math.max(0,r+i);for(;i<r;i++)if(i in n&&n[i]===t)return i;return-1};if(!Array.prototype.lastIndexOf||[0,1].lastIndexOf(0,-3)!=-1)Array.prototype.lastIndexOf=function(t){var n=g&&a(this)==\"[object String]\"?this.split(\"\"):q(this),r=n.length>>>0;if(!r)return-1;var i=r-1;arguments.length>1&&(i=Math.min(i,j(arguments[1]))),i=i>=0?i:r-Math.abs(i);for(;i>=0;i--)if(i in n&&t===n[i])return i;return-1};Object.getPrototypeOf||(Object.getPrototypeOf=function(t){return t.__proto__||(t.constructor?t.constructor.prototype:o)});if(!Object.getOwnPropertyDescriptor){var y=\"Object.getOwnPropertyDescriptor called on a non-object: \";Object.getOwnPropertyDescriptor=function(t,n){if(typeof t!=\"object\"&&typeof t!=\"function\"||t===null)throw new TypeError(y+t);if(!f(t,n))return;var r,i,s;r={enumerable:!0,configurable:!0};if(d){var u=t.__proto__;t.__proto__=o;var i=h(t,n),s=p(t,n);t.__proto__=u;if(i||s)return i&&(r.get=i),s&&(r.set=s),r}return r.value=t[n],r}}Object.getOwnPropertyNames||(Object.getOwnPropertyNames=function(t){return Object.keys(t)});if(!Object.create){var b;Object.prototype.__proto__===null?b=function(){return{__proto__:null}}:b=function(){var e={};for(var t in e)e[t]=null;return e.constructor=e.hasOwnProperty=e.propertyIsEnumerable=e.isPrototypeOf=e.toLocaleString=e.toString=e.valueOf=e.__proto__=null,e},Object.create=function(t,n){var r;if(t===null)r=b();else{if(typeof t!=\"object\")throw new TypeError(\"typeof prototype[\"+typeof t+\"] != 'object'\");var i=function(){};i.prototype=t,r=new i,r.__proto__=t}return n!==void 0&&Object.defineProperties(r,n),r}}if(Object.defineProperty){var E=w({}),S=typeof document==\"undefined\"||w(document.createElement(\"div\"));if(!E||!S)var x=Object.defineProperty}if(!Object.defineProperty||x){var T=\"Property description must be an object: \",N=\"Object.defineProperty called on non-object: \",C=\"getters & setters can not be defined on this javascript engine\";Object.defineProperty=function(t,n,r){if(typeof t!=\"object\"&&typeof t!=\"function\"||t===null)throw new TypeError(N+t);if(typeof r!=\"object\"&&typeof r!=\"function\"||r===null)throw new TypeError(T+r);if(x)try{return x.call(Object,t,n,r)}catch(i){}if(f(r,\"value\"))if(d&&(h(t,n)||p(t,n))){var s=t.__proto__;t.__proto__=o,delete t[n],t[n]=r.value,t.__proto__=s}else t[n]=r.value;else{if(!d)throw new TypeError(C);f(r,\"get\")&&l(t,n,r.get),f(r,\"set\")&&c(t,n,r.set)}return t}}Object.defineProperties||(Object.defineProperties=function(t,n){for(var r in n)f(n,r)&&Object.defineProperty(t,r,n[r]);return t}),Object.seal||(Object.seal=function(t){return t}),Object.freeze||(Object.freeze=function(t){return t});try{Object.freeze(function(){})}catch(k){Object.freeze=function(t){return function(n){return typeof n==\"function\"?n:t(n)}}(Object.freeze)}Object.preventExtensions||(Object.preventExtensions=function(t){return t}),Object.isSealed||(Object.isSealed=function(t){return!1}),Object.isFrozen||(Object.isFrozen=function(t){return!1}),Object.isExtensible||(Object.isExtensible=function(t){if(Object(t)===t)throw new TypeError;var n=\"\";while(f(t,n))n+=\"?\";t[n]=!0;var r=f(t,n);return delete t[n],r});if(!Object.keys){var L=!0,A=[\"toString\",\"toLocaleString\",\"valueOf\",\"hasOwnProperty\",\"isPrototypeOf\",\"propertyIsEnumerable\",\"constructor\"],O=A.length;for(var M in{toString:null})L=!1;Object.keys=function R(e){if(typeof e!=\"object\"&&typeof e!=\"function\"||e===null)throw new TypeError(\"Object.keys called on a non-object\");var R=[];for(var t in e)f(e,t)&&R.push(t);if(L)for(var n=0,r=O;n<r;n++){var i=A[n];f(e,i)&&R.push(i)}return R}}Date.now||(Date.now=function(){return(new Date).getTime()});if(\"0\".split(void 0,0).length){var _=String.prototype.split;String.prototype.split=function(e,t){return e===void 0&&t===0?[]:_.apply(this,arguments)}}if(\"\".substr&&\"0b\".substr(-1)!==\"b\"){var D=String.prototype.substr;String.prototype.substr=function(e,t){return D.call(this,e<0?(e=this.length+e)<0?0:e:e,t)}}var P=\"\t\\n\u000b\\f\\r   ᠎             　\\u2028\\u2029﻿\";if(!String.prototype.trim||P.trim()){P=\"[\"+P+\"]\";var H=new RegExp(\"^\"+P+P+\"*\"),B=new RegExp(P+P+\"*$\");String.prototype.trim=function(){if(this===undefined||this===null)throw new TypeError(\"can't convert \"+this+\" to object\");return String(this).replace(H,\"\").replace(B,\"\")}}var q=function(e){if(e==null)throw new TypeError(\"can't convert \"+e+\" to object\");return Object(e)}}),define(\"ace/lib/event_emitter\",[\"require\",\"exports\",\"module\"],function(e,t,n){var r={};r._emit=r._dispatchEvent=function(e,t){this._eventRegistry=this._eventRegistry||{},this._defaultHandlers=this._defaultHandlers||{};var n=this._eventRegistry[e]||[],r=this._defaultHandlers[e];if(!n.length&&!r)return;if(typeof t!=\"object\"||!t)t={};t.type||(t.type=e),t.stopPropagation||(t.stopPropagation=function(){this.propagationStopped=!0}),t.preventDefault||(t.preventDefault=function(){this.defaultPrevented=!0});for(var i=0;i<n.length;i++){n[i](t);if(t.propagationStopped)break}if(r&&!t.defaultPrevented)return r(t)},r.setDefaultHandler=function(e,t){this._defaultHandlers=this._defaultHandlers||{};if(this._defaultHandlers[e])throw new Error(\"The default handler for '\"+e+\"' is already set\");this._defaultHandlers[e]=t},r.on=r.addEventListener=function(e,t){this._eventRegistry=this._eventRegistry||{};var n=this._eventRegistry[e];n||(n=this._eventRegistry[e]=[]),n.indexOf(t)==-1&&n.push(t)},r.removeListener=r.removeEventListener=function(e,t){this._eventRegistry=this._eventRegistry||{};var n=this._eventRegistry[e];if(!n)return;var r=n.indexOf(t);r!==-1&&n.splice(r,1)},r.removeAllListeners=function(e){this._eventRegistry&&(this._eventRegistry[e]=[])},t.EventEmitter=r}),define(\"ace/lib/oop\",[\"require\",\"exports\",\"module\"],function(e,t,n){t.inherits=function(){var e=function(){};return function(t,n){e.prototype=n.prototype,t.super_=n.prototype,t.prototype=new e,t.prototype.constructor=t}}(),t.mixin=function(e,t){for(var n in t)e[n]=t[n]},t.implement=function(e,n){t.mixin(e,n)}}),define(\"ace/mode/php_worker\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/worker/mirror\",\"ace/mode/php/php\"],function(e,t,n){var r=e(\"../lib/oop\"),i=e(\"../worker/mirror\").Mirror,s=e(\"./php/php\").PHP,o=t.PhpWorker=function(e){i.call(this,e),this.setTimeout(500)};r.inherits(o,i),function(){this.onUpdate=function(){var e=this.doc.getValue(),t=[],n=s.Lexer(e,{short_open_tag:1});try{new s.Parser(n)}catch(r){t.push({row:r.line-1,column:null,text:r.message.charAt(0).toUpperCase()+r.message.substring(1),type:\"error\"})}t.length?this.sender.emit(\"error\",t):this.sender.emit(\"ok\")}}.call(o.prototype)}),define(\"ace/worker/mirror\",[\"require\",\"exports\",\"module\",\"ace/document\",\"ace/lib/lang\"],function(e,t,n){var r=e(\"../document\").Document,i=e(\"../lib/lang\"),s=t.Mirror=function(e){this.sender=e;var t=this.doc=new r(\"\"),n=this.deferredUpdate=i.deferredCall(this.onUpdate.bind(this)),s=this;e.on(\"change\",function(e){t.applyDeltas([e.data]),n.schedule(s.$timeout)})};(function(){this.$timeout=500,this.setTimeout=function(e){this.$timeout=e},this.setValue=function(e){this.doc.setValue(e),this.deferredUpdate.schedule(this.$timeout)},this.getValue=function(e){this.sender.callback(this.doc.getValue(),e)},this.onUpdate=function(){}}).call(s.prototype)}),define(\"ace/document\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/event_emitter\",\"ace/range\",\"ace/anchor\"],function(e,t,n){var r=e(\"./lib/oop\"),i=e(\"./lib/event_emitter\").EventEmitter,s=e(\"./range\").Range,o=e(\"./anchor\").Anchor,u=function(e){this.$lines=[],e.length==0?this.$lines=[\"\"]:Array.isArray(e)?this.insertLines(0,e):this.insert({row:0,column:0},e)};(function(){r.implement(this,i),this.setValue=function(e){var t=this.getLength();this.remove(new s(0,0,t,this.getLine(t-1).length)),this.insert({row:0,column:0},e)},this.getValue=function(){return this.getAllLines().join(this.getNewLineCharacter())},this.createAnchor=function(e,t){return new o(this,e,t)},\"aaa\".split(/a/).length==0?this.$split=function(e){return e.replace(/\\r\\n|\\r/g,\"\\n\").split(\"\\n\")}:this.$split=function(e){return e.split(/\\r\\n|\\r|\\n/)},this.$detectNewLine=function(e){var t=e.match(/^.*?(\\r\\n|\\r|\\n)/m);t?this.$autoNewLine=t[1]:this.$autoNewLine=\"\\n\"},this.getNewLineCharacter=function(){switch(this.$newLineMode){case\"windows\":return\"\\r\\n\";case\"unix\":return\"\\n\";default:return this.$autoNewLine}},this.$autoNewLine=\"\\n\",this.$newLineMode=\"auto\",this.setNewLineMode=function(e){if(this.$newLineMode===e)return;this.$newLineMode=e},this.getNewLineMode=function(){return this.$newLineMode},this.isNewLine=function(e){return e==\"\\r\\n\"||e==\"\\r\"||e==\"\\n\"},this.getLine=function(e){return this.$lines[e]||\"\"},this.getLines=function(e,t){return this.$lines.slice(e,t+1)},this.getAllLines=function(){return this.getLines(0,this.getLength())},this.getLength=function(){return this.$lines.length},this.getTextRange=function(e){if(e.start.row==e.end.row)return this.$lines[e.start.row].substring(e.start.column,e.end.column);var t=this.getLines(e.start.row+1,e.end.row-1);return t.unshift((this.$lines[e.start.row]||\"\").substring(e.start.column)),t.push((this.$lines[e.end.row]||\"\").substring(0,e.end.column)),t.join(this.getNewLineCharacter())},this.$clipPosition=function(e){var t=this.getLength();return e.row>=t&&(e.row=Math.max(0,t-1),e.column=this.getLine(t-1).length),e},this.insert=function(e,t){if(!t||t.length===0)return e;e=this.$clipPosition(e),this.getLength()<=1&&this.$detectNewLine(t);var n=this.$split(t),r=n.splice(0,1)[0],i=n.length==0?null:n.splice(n.length-1,1)[0];return e=this.insertInLine(e,r),i!==null&&(e=this.insertNewLine(e),e=this.insertLines(e.row,n),e=this.insertInLine(e,i||\"\")),e},this.insertLines=function(e,t){if(t.length==0)return{row:e,column:0};if(t.length>65535){var n=this.insertLines(e,t.slice(65535));t=t.slice(0,65535)}var r=[e,0];r.push.apply(r,t),this.$lines.splice.apply(this.$lines,r);var i=new s(e,0,e+t.length,0),o={action:\"insertLines\",range:i,lines:t};return this._emit(\"change\",{data:o}),n||i.end},this.insertNewLine=function(e){e=this.$clipPosition(e);var t=this.$lines[e.row]||\"\";this.$lines[e.row]=t.substring(0,e.column),this.$lines.splice(e.row+1,0,t.substring(e.column,t.length));var n={row:e.row+1,column:0},r={action:\"insertText\",range:s.fromPoints(e,n),text:this.getNewLineCharacter()};return this._emit(\"change\",{data:r}),n},this.insertInLine=function(e,t){if(t.length==0)return e;var n=this.$lines[e.row]||\"\";this.$lines[e.row]=n.substring(0,e.column)+t+n.substring(e.column);var r={row:e.row,column:e.column+t.length},i={action:\"insertText\",range:s.fromPoints(e,r),text:t};return this._emit(\"change\",{data:i}),r},this.remove=function(e){e.start=this.$clipPosition(e.start),e.end=this.$clipPosition(e.end);if(e.isEmpty())return e.start;var t=e.start.row,n=e.end.row;if(e.isMultiLine()){var r=e.start.column==0?t:t+1,i=n-1;e.end.column>0&&this.removeInLine(n,0,e.end.column),i>=r&&this.removeLines(r,i),r!=t&&(this.removeInLine(t,e.start.column,this.getLine(t).length),this.removeNewLine(e.start.row))}else this.removeInLine(t,e.start.column,e.end.column);return e.start},this.removeInLine=function(e,t,n){if(t==n)return;var r=new s(e,t,e,n),i=this.getLine(e),o=i.substring(t,n),u=i.substring(0,t)+i.substring(n,i.length);this.$lines.splice(e,1,u);var a={action:\"removeText\",range:r,text:o};return this._emit(\"change\",{data:a}),r.start},this.removeLines=function(e,t){var n=new s(e,0,t+1,0),r=this.$lines.splice(e,t-e+1),i={action:\"removeLines\",range:n,nl:this.getNewLineCharacter(),lines:r};return this._emit(\"change\",{data:i}),r},this.removeNewLine=function(e){var t=this.getLine(e),n=this.getLine(e+1),r=new s(e,t.length,e+1,0),i=t+n;this.$lines.splice(e,2,i);var o={action:\"removeText\",range:r,text:this.getNewLineCharacter()};this._emit(\"change\",{data:o})},this.replace=function(e,t){if(t.length==0&&e.isEmpty())return e.start;if(t==this.getTextRange(e))return e.end;this.remove(e);if(t)var n=this.insert(e.start,t);else n=e.start;return n},this.applyDeltas=function(e){for(var t=0;t<e.length;t++){var n=e[t],r=s.fromPoints(n.range.start,n.range.end);n.action==\"insertLines\"?this.insertLines(r.start.row,n.lines):n.action==\"insertText\"?this.insert(r.start,n.text):n.action==\"removeLines\"?this.removeLines(r.start.row,r.end.row-1):n.action==\"removeText\"&&this.remove(r)}},this.revertDeltas=function(e){for(var t=e.length-1;t>=0;t--){var n=e[t],r=s.fromPoints(n.range.start,n.range.end);n.action==\"insertLines\"?this.removeLines(r.start.row,r.end.row-1):n.action==\"insertText\"?this.remove(r):n.action==\"removeLines\"?this.insertLines(r.start.row,n.lines):n.action==\"removeText\"&&this.insert(r.start,n.text)}},this.indexToPosition=function(e,t){var n=this.$lines||this.getAllLines(),r=this.getNewLineCharacter().length;for(var i=t||0,s=n.length;i<s;i++){e-=n[i].length+r;if(e<0)return{row:i,column:e+n[i].length+r}}return{row:s-1,column:n[s-1].length}},this.positionToIndex=function(e,t){var n=this.$lines||this.getAllLines(),r=this.getNewLineCharacter().length,i=0,s=Math.min(e.row,n.length);for(var o=t||0;o<s;++o)i+=n[o].length;return i+r*o+e.column}}).call(u.prototype),t.Document=u}),define(\"ace/range\",[\"require\",\"exports\",\"module\"],function(e,t,n){var r=function(e,t,n,r){this.start={row:e,column:t},this.end={row:n,column:r}};(function(){this.isEqual=function(e){return this.start.row==e.start.row&&this.end.row==e.end.row&&this.start.column==e.start.column&&this.end.column==e.end.column},this.toString=function(){return\"Range: [\"+this.start.row+\"/\"+this.start.column+\"] -> [\"+this.end.row+\"/\"+this.end.column+\"]\"},this.contains=function(e,t){return this.compare(e,t)==0},this.compareRange=function(e){var t,n=e.end,r=e.start;return t=this.compare(n.row,n.column),t==1?(t=this.compare(r.row,r.column),t==1?2:t==0?1:0):t==-1?-2:(t=this.compare(r.row,r.column),t==-1?-1:t==1?42:0)},this.comparePoint=function(e){return this.compare(e.row,e.column)},this.containsRange=function(e){return this.comparePoint(e.start)==0&&this.comparePoint(e.end)==0},this.intersects=function(e){var t=this.compareRange(e);return t==-1||t==0||t==1},this.isEnd=function(e,t){return this.end.row==e&&this.end.column==t},this.isStart=function(e,t){return this.start.row==e&&this.start.column==t},this.setStart=function(e,t){typeof e==\"object\"?(this.start.column=e.column,this.start.row=e.row):(this.start.row=e,this.start.column=t)},this.setEnd=function(e,t){typeof e==\"object\"?(this.end.column=e.column,this.end.row=e.row):(this.end.row=e,this.end.column=t)},this.inside=function(e,t){return this.compare(e,t)==0?this.isEnd(e,t)||this.isStart(e,t)?!1:!0:!1},this.insideStart=function(e,t){return this.compare(e,t)==0?this.isEnd(e,t)?!1:!0:!1},this.insideEnd=function(e,t){return this.compare(e,t)==0?this.isStart(e,t)?!1:!0:!1},this.compare=function(e,t){return!this.isMultiLine()&&e===this.start.row?t<this.start.column?-1:t>this.end.column?1:0:e<this.start.row?-1:e>this.end.row?1:this.start.row===e?t>=this.start.column?0:-1:this.end.row===e?t<=this.end.column?0:1:0},this.compareStart=function(e,t){return this.start.row==e&&this.start.column==t?-1:this.compare(e,t)},this.compareEnd=function(e,t){return this.end.row==e&&this.end.column==t?1:this.compare(e,t)},this.compareInside=function(e,t){return this.end.row==e&&this.end.column==t?1:this.start.row==e&&this.start.column==t?-1:this.compare(e,t)},this.clipRows=function(e,t){if(this.end.row>t)var n={row:t+1,column:0};if(this.start.row>t)var i={row:t+1,column:0};if(this.start.row<e)var i={row:e,column:0};if(this.end.row<e)var n={row:e,column:0};return r.fromPoints(i||this.start,n||this.end)},this.extend=function(e,t){var n=this.compare(e,t);if(n==0)return this;if(n==-1)var i={row:e,column:t};else var s={row:e,column:t};return r.fromPoints(i||this.start,s||this.end)},this.isEmpty=function(){return this.start.row==this.end.row&&this.start.column==this.end.column},this.isMultiLine=function(){return this.start.row!==this.end.row},this.clone=function(){return r.fromPoints(this.start,this.end)},this.collapseRows=function(){return this.end.column==0?new r(this.start.row,0,Math.max(this.start.row,this.end.row-1),0):new r(this.start.row,0,this.end.row,0)},this.toScreenRange=function(e){var t=e.documentToScreenPosition(this.start),n=e.documentToScreenPosition(this.end);return new r(t.row,t.column,n.row,n.column)}}).call(r.prototype),r.fromPoints=function(e,t){return new r(e.row,e.column,t.row,t.column)},t.Range=r}),define(\"ace/anchor\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/event_emitter\"],function(e,t,n){var r=e(\"./lib/oop\"),i=e(\"./lib/event_emitter\").EventEmitter,s=t.Anchor=function(e,t,n){this.document=e,typeof n==\"undefined\"?this.setPosition(t.row,t.column):this.setPosition(t,n),this.$onChange=this.onChange.bind(this),e.on(\"change\",this.$onChange)};(function(){r.implement(this,i),this.getPosition=function(){return this.$clipPositionToDocument(this.row,this.column)},this.getDocument=function(){return this.document},this.onChange=function(e){var t=e.data,n=t.range;if(n.start.row==n.end.row&&n.start.row!=this.row)return;if(n.start.row>this.row)return;if(n.start.row==this.row&&n.start.column>this.column)return;var r=this.row,i=this.column;t.action===\"insertText\"?n.start.row===r&&n.start.column<=i?n.start.row===n.end.row?i+=n.end.column-n.start.column:(i-=n.start.column,r+=n.end.row-n.start.row):n.start.row!==n.end.row&&n.start.row<r&&(r+=n.end.row-n.start.row):t.action===\"insertLines\"?n.start.row<=r&&(r+=n.end.row-n.start.row):t.action==\"removeText\"?n.start.row==r&&n.start.column<i?n.end.column>=i?i=n.start.column:i=Math.max(0,i-(n.end.column-n.start.column)):n.start.row!==n.end.row&&n.start.row<r?(n.end.row==r&&(i=Math.max(0,i-n.end.column)+n.start.column),r-=n.end.row-n.start.row):n.end.row==r&&(r-=n.end.row-n.start.row,i=Math.max(0,i-n.end.column)+n.start.column):t.action==\"removeLines\"&&n.start.row<=r&&(n.end.row<=r?r-=n.end.row-n.start.row:(r=n.start.row,i=0)),this.setPosition(r,i,!0)},this.setPosition=function(e,t,n){var r;n?r={row:e,column:t}:r=this.$clipPositionToDocument(e,t);if(this.row==r.row&&this.column==r.column)return;var i={row:this.row,column:this.column};this.row=r.row,this.column=r.column,this._emit(\"change\",{old:i,value:r})},this.detach=function(){this.document.removeEventListener(\"change\",this.$onChange)},this.$clipPositionToDocument=function(e,t){var n={};return e>=this.document.getLength()?(n.row=Math.max(0,this.document.getLength()-1),n.column=this.document.getLine(n.row).length):e<0?(n.row=0,n.column=0):(n.row=e,n.column=Math.min(this.document.getLine(n.row).length,Math.max(0,t))),t<0&&(n.column=0),n}}).call(s.prototype)}),define(\"ace/lib/lang\",[\"require\",\"exports\",\"module\"],function(e,t,n){t.stringReverse=function(e){return e.split(\"\").reverse().join(\"\")},t.stringRepeat=function(e,t){var n=\"\";while(t>0){t&1&&(n+=e);if(t>>=1)e+=e}return n};var r=/^\\s\\s*/,i=/\\s\\s*$/;t.stringTrimLeft=function(e){return e.replace(r,\"\")},t.stringTrimRight=function(e){return e.replace(i,\"\")},t.copyObject=function(e){var t={};for(var n in e)t[n]=e[n];return t},t.copyArray=function(e){var t=[];for(var n=0,r=e.length;n<r;n++)e[n]&&typeof e[n]==\"object\"?t[n]=this.copyObject(e[n]):t[n]=e[n];return t},t.deepCopy=function(e){if(typeof e!=\"object\")return e;var t=e.constructor();for(var n in e)typeof e[n]==\"object\"?t[n]=this.deepCopy(e[n]):t[n]=e[n];return t},t.arrayToMap=function(e){var t={};for(var n=0;n<e.length;n++)t[e[n]]=1;return t},t.createMap=function(e){var t=Object.create(null);for(var n in e)t[n]=e[n];return t},t.arrayRemove=function(e,t){for(var n=0;n<=e.length;n++)t===e[n]&&e.splice(n,1)},t.escapeRegExp=function(e){return e.replace(/([.*+?^${}()|[\\]\\/\\\\])/g,\"\\\\$1\")},t.escapeHTML=function(e){return e.replace(/&/g,\"&#38;\").replace(/\"/g,\"&#34;\").replace(/'/g,\"&#39;\").replace(/</g,\"&#60;\")},t.getMatchOffsets=function(e,t){var n=[];return e.replace(t,function(e){n.push({offset:arguments[arguments.length-2],length:e.length})}),n},t.deferredCall=function(e){var t=null,n=function(){t=null,e()},r=function(e){return r.cancel(),t=setTimeout(n,e||0),r};return r.schedule=r,r.call=function(){return this.cancel(),e(),r},r.cancel=function(){return clearTimeout(t),t=null,r},r},t.delayedCall=function(e,t){var n=null,r=function(){n=null,e()},i=function(e){n&&clearTimeout(n),n=setTimeout(r,e||t)};return i.delay=i,i.schedule=function(e){n==null&&(n=setTimeout(r,e||0))},i.call=function(){this.cancel(),e()},i.cancel=function(){n&&clearTimeout(n),n=null},i.isPending=function(){return n},i}}),define(\"ace/mode/php/php\",[\"require\",\"exports\",\"module\"],function(e,t,n){var r={Constants:{}};r.Constants.T_INCLUDE=262,r.Constants.T_INCLUDE_ONCE=261,r.Constants.T_EVAL=260,r.Constants.T_REQUIRE=259,r.Constants.T_REQUIRE_ONCE=258,r.Constants.T_LOGICAL_OR=263,r.Constants.T_LOGICAL_XOR=264,r.Constants.T_LOGICAL_AND=265,r.Constants.T_PRINT=266,r.Constants.T_PLUS_EQUAL=277,r.Constants.T_MINUS_EQUAL=276,r.Constants.T_MUL_EQUAL=275,r.Constants.T_DIV_EQUAL=274,r.Constants.T_CONCAT_EQUAL=273,r.Constants.T_MOD_EQUAL=272,r.Constants.T_AND_EQUAL=271,r.Constants.T_OR_EQUAL=270,r.Constants.T_XOR_EQUAL=269,r.Constants.T_SL_EQUAL=268,r.Constants.T_SR_EQUAL=267,r.Constants.T_BOOLEAN_OR=278,r.Constants.T_BOOLEAN_AND=279,r.Constants.T_IS_EQUAL=283,r.Constants.T_IS_NOT_EQUAL=282,r.Constants.T_IS_IDENTICAL=281,r.Constants.T_IS_NOT_IDENTICAL=280,r.Constants.T_IS_SMALLER_OR_EQUAL=285,r.Constants.T_IS_GREATER_OR_EQUAL=284,r.Constants.T_SL=287,r.Constants.T_SR=286,r.Constants.T_INSTANCEOF=288,r.Constants.T_INC=297,r.Constants.T_DEC=296,r.Constants.T_INT_CAST=295,r.Constants.T_DOUBLE_CAST=294,r.Constants.T_STRING_CAST=293,r.Constants.T_ARRAY_CAST=292,r.Constants.T_OBJECT_CAST=291,r.Constants.T_BOOL_CAST=290,r.Constants.T_UNSET_CAST=289,r.Constants.T_NEW=299,r.Constants.T_CLONE=298,r.Constants.T_EXIT=300,r.Constants.T_IF=301,r.Constants.T_ELSEIF=302,r.Constants.T_ELSE=303,r.Constants.T_ENDIF=304,r.Constants.T_LNUMBER=305,r.Constants.T_DNUMBER=306,r.Constants.T_STRING=307,r.Constants.T_STRING_VARNAME=308,r.Constants.T_VARIABLE=309,r.Constants.T_NUM_STRING=310,r.Constants.T_INLINE_HTML=311,r.Constants.T_CHARACTER=312,r.Constants.T_BAD_CHARACTER=313,r.Constants.T_ENCAPSED_AND_WHITESPACE=314,r.Constants.T_CONSTANT_ENCAPSED_STRING=315,r.Constants.T_ECHO=316,r.Constants.T_DO=317,r.Constants.T_WHILE=318,r.Constants.T_ENDWHILE=319,r.Constants.T_FOR=320,r.Constants.T_ENDFOR=321,r.Constants.T_FOREACH=322,r.Constants.T_ENDFOREACH=323,r.Constants.T_DECLARE=324,r.Constants.T_ENDDECLARE=325,r.Constants.T_AS=326,r.Constants.T_SWITCH=327,r.Constants.T_ENDSWITCH=328,r.Constants.T_CASE=329,r.Constants.T_DEFAULT=330,r.Constants.T_BREAK=331,r.Constants.T_CONTINUE=332,r.Constants.T_GOTO=333,r.Constants.T_FUNCTION=334,r.Constants.T_CONST=335,r.Constants.T_RETURN=336,r.Constants.T_TRY=337,r.Constants.T_CATCH=338,r.Constants.T_THROW=339,r.Constants.T_USE=340,r.Constants.T_GLOBAL=341,r.Constants.T_STATIC=347,r.Constants.T_ABSTRACT=346,r.Constants.T_FINAL=345,r.Constants.T_PRIVATE=344,r.Constants.T_PROTECTED=343,r.Constants.T_PUBLIC=342,r.Constants.T_VAR=348,r.Constants.T_UNSET=349,r.Constants.T_ISSET=350,r.Constants.T_EMPTY=351,r.Constants.T_HALT_COMPILER=352,r.Constants.T_CLASS=353,r.Constants.T_INTERFACE=354,r.Constants.T_EXTENDS=355,r.Constants.T_IMPLEMENTS=356,r.Constants.T_OBJECT_OPERATOR=357,r.Constants.T_DOUBLE_ARROW=358,r.Constants.T_LIST=359,r.Constants.T_ARRAY=360,r.Constants.T_CLASS_C=361,r.Constants.T_TRAIT_C=381,r.Constants.T_METHOD_C=362,r.Constants.T_FUNC_C=363,r.Constants.T_LINE=364,r.Constants.T_FILE=365,r.Constants.T_COMMENT=366,r.Constants.T_DOC_COMMENT=367,r.Constants.T_OPEN_TAG=368,r.Constants.T_OPEN_TAG_WITH_ECHO=369,r.Constants.T_CLOSE_TAG=370,r.Constants.T_WHITESPACE=371,r.Constants.T_START_HEREDOC=372,r.Constants.T_END_HEREDOC=373,r.Constants.T_DOLLAR_OPEN_CURLY_BRACES=374,r.Constants.T_CURLY_OPEN=375,r.Constants.T_PAAMAYIM_NEKUDOTAYIM=376,r.Constants.T_DOUBLE_COLON=376,r.Constants.T_NAMESPACE=377,r.Constants.T_NS_C=378,r.Constants.T_DIR=379,r.Constants.T_NS_SEPARATOR=380,r.Lexer=function(e,t){var n,i=function(e){if(e.match(/\\n/)!==null){var t=e.substring(0,1);e=\"[\"+e.split(/\\n/).join(t+\",\"+t)+'].join(\"\\\\n\")'}return e},s,o=t===undefined||/^(on|true|1)$/i.test(t.short_open_tag)?/(\\<\\?php\\s|\\<\\?|\\<\\%|\\<script language\\=('|\")?php('|\")?\\>)/i:/(\\<\\?php\\s|<\\?=|\\<script language\\=('|\")?php('|\")?\\>)/i,u=t===undefined||/^(on|true|1)$/i.test(t.short_open_tag)?/^(\\<\\?php\\s|\\<\\?|\\<\\%|\\<script language\\=('|\")?php('|\")?\\>)/i:/^(\\<\\?php\\s|<\\?=|\\<script language\\=('|\")?php('|\")?\\>)/i,a=[{value:r.Constants.T_ABSTRACT,re:/^abstract(?=\\s)/i},{value:r.Constants.T_IMPLEMENTS,re:/^implements(?=\\s)/i},{value:r.Constants.T_INTERFACE,re:/^interface(?=\\s)/i},{value:r.Constants.T_CONST,re:/^const(?=\\s)/i},{value:r.Constants.T_STATIC,re:/^static(?=\\s)/i},{value:r.Constants.T_FINAL,re:/^final(?=\\s)/i},{value:r.Constants.T_VAR,re:/^var(?=\\s)/i},{value:r.Constants.T_GLOBAL,re:/^global(?=\\s)/i},{value:r.Constants.T_CLONE,re:/^clone(?=\\s)/i},{value:r.Constants.T_THROW,re:/^throw(?=\\s)/i},{value:r.Constants.T_EXTENDS,re:/^extends(?=\\s)/i},{value:r.Constants.T_AND_EQUAL,re:/^&=/},{value:r.Constants.T_AS,re:/^as(?=\\s)/i},{value:r.Constants.T_ARRAY_CAST,re:/^\\(array\\)/i},{value:r.Constants.T_BOOL_CAST,re:/^\\((bool|boolean)\\)/i},{value:r.Constants.T_DOUBLE_CAST,re:/^\\((real|float|double)\\)/i},{value:r.Constants.T_INT_CAST,re:/^\\((int|integer)\\)/i},{value:r.Constants.T_OBJECT_CAST,re:/^\\(object\\)/i},{value:r.Constants.T_STRING_CAST,re:/^\\(string\\)/i},{value:r.Constants.T_UNSET_CAST,re:/^\\(unset\\)/i},{value:r.Constants.T_TRY,re:/^try(?=\\s*{)/i},{value:r.Constants.T_CATCH,re:/^catch(?=\\s*\\()/i},{value:r.Constants.T_INSTANCEOF,re:/^instanceof(?=\\s)/i},{value:r.Constants.T_LOGICAL_OR,re:/^or(?=\\s)/i},{value:r.Constants.T_LOGICAL_AND,re:/^and(?=\\s)/i},{value:r.Constants.T_LOGICAL_XOR,re:/^xor(?=\\s)/i},{value:r.Constants.T_BOOLEAN_AND,re:/^&&/},{value:r.Constants.T_BOOLEAN_OR,re:/^\\|\\|/},{value:r.Constants.T_CONTINUE,re:/^continue(?=\\s|;)/i},{value:r.Constants.T_BREAK,re:/^break(?=\\s|;)/i},{value:r.Constants.T_ENDDECLARE,re:/^enddeclare(?=\\s|;)/i},{value:r.Constants.T_ENDFOR,re:/^endfor(?=\\s|;)/i},{value:r.Constants.T_ENDFOREACH,re:/^endforeach(?=\\s|;)/i},{value:r.Constants.T_ENDIF,re:/^endif(?=\\s|;)/i},{value:r.Constants.T_ENDSWITCH,re:/^endswitch(?=\\s|;)/i},{value:r.Constants.T_ENDWHILE,re:/^endwhile(?=\\s|;)/i},{value:r.Constants.T_CASE,re:/^case(?=\\s)/i},{value:r.Constants.T_DEFAULT,re:/^default(?=\\s|:)/i},{value:r.Constants.T_SWITCH,re:/^switch(?=[ (])/i},{value:r.Constants.T_EXIT,re:/^(exit|die)(?=[ \\(;])/i},{value:r.Constants.T_CLOSE_TAG,re:/^(\\?\\>|\\%\\>|\\<\\/script\\>)\\s?\\s?/i,func:function(e){return c=!1,e}},{value:r.Constants.T_DOUBLE_ARROW,re:/^\\=\\>/},{value:r.Constants.T_DOUBLE_COLON,re:/^\\:\\:/},{value:r.Constants.T_METHOD_C,re:/^__METHOD__/},{value:r.Constants.T_LINE,re:/^__LINE__/},{value:r.Constants.T_FILE,re:/^__FILE__/},{value:r.Constants.T_FUNC_C,re:/^__FUNCTION__/},{value:r.Constants.T_NS_C,re:/^__NAMESPACE__/},{value:r.Constants.T_TRAIT_C,re:/^__TRAIT__/},{value:r.Constants.T_DIR,re:/^__DIR__/},{value:r.Constants.T_CLASS_C,re:/^__CLASS__/},{value:r.Constants.T_INC,re:/^\\+\\+/},{value:r.Constants.T_DEC,re:/^\\-\\-/},{value:r.Constants.T_CONCAT_EQUAL,re:/^\\.\\=/},{value:r.Constants.T_DIV_EQUAL,re:/^\\/\\=/},{value:r.Constants.T_XOR_EQUAL,re:/^\\^\\=/},{value:r.Constants.T_MUL_EQUAL,re:/^\\*\\=/},{value:r.Constants.T_MOD_EQUAL,re:/^\\%\\=/},{value:r.Constants.T_SL_EQUAL,re:/^<<=/},{value:r.Constants.T_START_HEREDOC,re:/^<<<[A-Z_0-9]+\\s/i,func:function(e){return n=e.substring(3,e.length-1),e}},{value:r.Constants.T_SL,re:/^<</},{value:r.Constants.T_IS_SMALLER_OR_EQUAL,re:/^<=/},{value:r.Constants.T_SR_EQUAL,re:/^>>=/},{value:r.Constants.T_SR,re:/^>>/},{value:r.Constants.T_IS_GREATER_OR_EQUAL,re:/^>=/},{value:r.Constants.T_OR_EQUAL,re:/^\\|\\=/},{value:r.Constants.T_PLUS_EQUAL,re:/^\\+\\=/},{value:r.Constants.T_MINUS_EQUAL,re:/^-\\=/},{value:r.Constants.T_OBJECT_OPERATOR,re:/^\\-\\>/i},{value:r.Constants.T_CLASS,re:/^class(?=[\\s\\{])/i,afterWhitespace:!0},{value:r.Constants.T_PUBLIC,re:/^public(?=[\\s])/i},{value:r.Constants.T_PRIVATE,re:/^private(?=[\\s])/i},{value:r.Constants.T_PROTECTED,re:/^protected(?=[\\s])/i},{value:r.Constants.T_ARRAY,re:/^array(?=\\s*?\\()/i},{value:r.Constants.T_EMPTY,re:/^empty(?=[ \\(])/i},{value:r.Constants.T_ISSET,re:/^isset(?=[ \\(])/i},{value:r.Constants.T_UNSET,re:/^unset(?=[ \\(])/i},{value:r.Constants.T_RETURN,re:/^return(?=[ \"'(;])/i},{value:r.Constants.T_FUNCTION,re:/^function(?=[ \"'(;])/i},{value:r.Constants.T_ECHO,re:/^echo(?=[ \"'(;])/i},{value:r.Constants.T_LIST,re:/^list(?=\\s*?\\()/i},{value:r.Constants.T_PRINT,re:/^print(?=[ \"'(;])/i},{value:r.Constants.T_INCLUDE,re:/^include(?=[ \"'(;])/i},{value:r.Constants.T_INCLUDE_ONCE,re:/^include_once(?=[ \"'(;])/i},{value:r.Constants.T_REQUIRE,re:/^require(?=[ \"'(;])/i},{value:r.Constants.T_REQUIRE_ONCE,re:/^require_once(?=[ \"'(;])/i},{value:r.Constants.T_NEW,re:/^new(?=[ ])/i},{value:r.Constants.T_COMMENT,re:/^\\/\\*([\\S\\s]*?)(?:\\*\\/|$)/},{value:r.Constants.T_COMMENT,re:/^\\/\\/.*(\\s)?/},{value:r.Constants.T_COMMENT,re:/^\\#.*(\\s)?/},{value:r.Constants.T_ELSEIF,re:/^elseif(?=[\\s(])/i},{value:r.Constants.T_GOTO,re:/^goto(?=[\\s(])/i},{value:r.Constants.T_ELSE,re:/^else(?=[\\s{:])/i},{value:r.Constants.T_IF,re:/^if(?=[\\s(])/i},{value:r.Constants.T_DO,re:/^do(?=[ {])/i},{value:r.Constants.T_WHILE,re:/^while(?=[ (])/i},{value:r.Constants.T_FOREACH,re:/^foreach(?=[ (])/i},{value:r.Constants.T_ISSET,re:/^isset(?=[ (])/i},{value:r.Constants.T_IS_IDENTICAL,re:/^===/},{value:r.Constants.T_IS_EQUAL,re:/^==/},{value:r.Constants.T_IS_NOT_IDENTICAL,re:/^\\!==/},{value:r.Constants.T_IS_NOT_EQUAL,re:/^(\\!=|\\<\\>)/},{value:r.Constants.T_FOR,re:/^for(?=[ (])/i},{value:r.Constants.T_DNUMBER,re:/^[0-9]*\\.[0-9]+([eE][-]?[0-9]*)?/},{value:r.Constants.T_LNUMBER,re:/^(0x[0-9A-F]+|[0-9]+)/i},{value:r.Constants.T_OPEN_TAG_WITH_ECHO,re:/^(\\<\\?=|\\<\\%=)/i},{value:r.Constants.T_OPEN_TAG,re:u},{value:r.Constants.T_VARIABLE,re:/^\\$[a-zA-Z_\\x7f-\\xff][a-zA-Z0-9_\\x7f-\\xff]*/},{value:r.Constants.T_WHITESPACE,re:/^\\s+/},{value:r.Constants.T_CONSTANT_ENCAPSED_STRING,re:/^(\"(?:[^\"\\\\]|\\\\[\\s\\S])*\"|'(?:[^'\\\\]|\\\\[\\s\\S])*')/,func:function(e,t){var n=0,i,s=0;if(e.substring(0,1)===\"'\")return e;var o=e.match(/(?:[^\\\\]|\\\\.)*[^\\\\]\\$[a-zA-Z_\\x7f-\\xff][a-zA-Z0-9_\\x7f-\\xff]*/g);if(o!==null){while(e.length>0){i=e.length,o=e.match(/^[\\[\\]\\;\\:\\?\\(\\)\\!\\.\\,\\>\\<\\=\\+\\-\\/\\*\\|\\&\\@\\^\\%\\\"\\'\\{\\}]/),o!==null&&(f.push(o[0]),e=e.substring(1),n>0&&o[0]===\"}\"&&n--,o[0]===\"[\"&&s++,o[0]===\"]\"&&s--),o=e.match(/^\\$[a-zA-Z_\\x7f-\\xff][a-zA-Z0-9_\\x7f-\\xff]*/);if(o!==null){f.push([parseInt(r.Constants.T_VARIABLE,10),o[0],l]),e=e.substring(o[0].length),o=e.match(/^(\\-\\>)([a-zA-Z0-9_\\x7f-\\xff]*)/),o!==null&&(f.push([parseInt(r.Constants.T_OBJECT_OPERATOR,10),o[1],l]),f.push([parseInt(r.Constants.T_STRING,10),o[2],l]),e=e.substring(o[0].length));if(e.match(/^\\[/g)!==null)continue}var u;n>0?u=/^([^\\\\\\$\"{}\\]]|\\\\.)+/g:u=/^([^\\\\\\$\"{]|\\\\.|{[^\\$])+/g;while((o=e.match(u))!==null){if(e.length===1)throw new Error(o);f.push([parseInt(n>0?r.Constants.T_CONSTANT_ENCAPSED_STRING:r.Constants.T_ENCAPSED_AND_WHITESPACE,10),o[0],l]),l+=o[0].split(\"\\n\").length-1,e=e.substring(o[0].length)}e.match(/^{\\$/)!==null&&(f.push([parseInt(r.Constants.T_CURLY_OPEN,10),\"{\",l]),e=e.substring(1),n++);if(i===e.length&&(o=e.match(/^(([^\\\\]|\\\\.)*?[^\\\\]\\$[a-zA-Z_\\x7f-\\xff][a-zA-Z0-9_\\x7f-\\xff]*)/g))!==null)return}return undefined}return e}},{value:r.Constants.T_STRING,re:/^[a-zA-Z_\\x7f-\\xff][a-zA-Z0-9_\\x7f-\\xff]*/},{value:-1,re:/^[\\[\\]\\;\\:\\?\\(\\)\\!\\.\\,\\>\\<\\=\\+\\-\\/\\*\\|\\&\\{\\}\\@\\^\\%\\\"\\'\\$\\~]/}],f=[],l=1,c=!1,h=!0;if(e===null)return f;typeof e!=\"string\"&&(e=e.toString());while(e.length>0&&h===!0)if(c===!0)if(n!==undefined){var p=new RegExp(\"([\\\\S\\\\s]*)(\\\\r\\\\n|\\\\n|\\\\r)(\"+n+\")(;|\\\\r\\\\n|\\\\n)\",\"i\"),d=e.match(p);d!==null&&(f.push([parseInt(r.Constants.T_ENCAPSED_AND_WHITESPACE,10),d[1].replace(/^\\n/g,\"\").replace(/\\\\\\$/g,\"$\")+\"\\n\",l]),l+=d[1].split(\"\\n\").length,f.push([parseInt(r.Constants.T_END_HEREDOC,10),d[3],l]),e=e.substring(d[1].length+d[2].length+d[3].length),n=undefined);if(d===null)throw Error(\"sup\")}else h=a.some(function(t){if(t.afterWhitespace===!0){var n=f[f.length-1];if(!Array.isArray(n)||n[0]!==r.Constants.T_WHITESPACE&&n[0]!==r.Constants.T_OPEN_TAG&&n[0]!==r.Constants.T_COMMENT)return!1}var i=e.match(t.re);if(i!==null){if(t.value!==-1){var s=i[0];t.func!==undefined&&(s=t.func(s,t)),s!==undefined&&(f.push([parseInt(t.value,10),s,l]),l+=s.split(\"\\n\").length-1)}else f.push(i[0]);return e=e.substring(i[0].length),!0}return!1});else{var d=o.exec(e);if(d===null)return f.push([parseInt(r.Constants.T_INLINE_HTML,10),e.replace(/^\\n/,\"\"),l]),f;if(d.index>0){var v=e.substring(0,d.index);f.push([parseInt(r.Constants.T_INLINE_HTML,10),v,l]),l+=v.split(\"\\n\").length-1,e=e.substring(d.index)}c=!0}return f},r.Parser=function(e,t){var n=this.yybase,i=this.yydefault,s=this.yycheck,o=this.yyaction,u=this.yylen,a=this.yygbase,f=this.yygcheck,l=this.yyp,c=this.yygoto,h=this.yylhs,p=this.terminals,d=this.translate,v=this.yygdefault;this.pos=-1,this.line=1,this.tokenMap=this.createTokenMap(),this.dropTokens={},this.dropTokens[r.Constants.T_WHITESPACE]=1,this.dropTokens[r.Constants.T_OPEN_TAG]=1;var m=[];e.forEach(function(e,t){typeof e==\"object\"&&e[0]===r.Constants.T_OPEN_TAG_WITH_ECHO?(m.push([r.Constants.T_OPEN_TAG,e[1],e[2]]),m.push([r.Constants.T_ECHO,e[1],e[2]])):m.push(e)}),this.tokens=m;var g=this.TOKEN_NONE;this.startAttributes={startLine:1},this.endAttributes={};var y=[this.startAttributes],b=0,w=[b];this.yyastk=[],this.stackPos=0;var E,S;for(;;){if(n[b]===0)E=i[b];else{g===this.TOKEN_NONE&&(S=this.getNextToken(),g=S>=0&&S<this.TOKEN_MAP_SIZE?d[S]:this.TOKEN_INVALID,y[this.stackPos]=this.startAttributes);if(((E=n[b]+g)>=0&&E<this.YYLAST&&s[E]===g||b<this.YY2TBLSTATE&&(E=n[b+this.YYNLSTATES]+g)>=0&&E<this.YYLAST&&s[E]===g)&&(E=o[E])!==this.YYDEFAULT)if(E>0){++this.stackPos,w[this.stackPos]=b=E,this.yyastk[this.stackPos]=this.tokenValue,y[this.stackPos]=this.startAttributes,g=this.TOKEN_NONE;if(E<this.YYNLSTATES)continue;E-=this.YYNLSTATES}else E=-E;else E=i[b]}for(;;){if(E===0)return this.yyval;if(E===this.YYUNEXPECTED){if(t!==!0){var N=[];for(var C=0;C<this.TOKEN_MAP_SIZE;++C)if((E=n[b]+C)>=0&&E<this.YYLAST&&s[E]==C||b<this.YY2TBLSTATE&&(E=n[b+this.YYNLSTATES]+C)&&E<this.YYLAST&&s[E]==C)if(o[E]!=this.YYUNEXPECTED){if(N.length==4){N=[];break}N.push(this.terminals[C])}var k=\"\";throw N.length&&(k=\", expecting \"+N.join(\" or \")),new r.ParseError(\"syntax error, unexpected \"+p[g]+k,this.startAttributes.startLine)}return this.startAttributes.startLine}for(var x in this.endAttributes)y[this.stackPos-u[E]][x]=this.endAttributes[x];try{this[\"yyn\"+E](y[this.stackPos-u[E]])}catch(T){throw T}this.stackPos-=u[E],E=h[E],(l=a[E]+w[this.stackPos])>=0&&l<this.YYGLAST&&f[l]===E?b=c[l]:b=v[E],++this.stackPos,w[this.stackPos]=b,this.yyastk[this.stackPos]=this.yyval,y[this.stackPos]=this.startAttributes;if(b<this.YYNLSTATES)break;E=b-this.YYNLSTATES}}},r.ParseError=function(e,t){this.message=e,this.line=t},r.Parser.prototype.MODIFIER_PUBLIC=1,r.Parser.prototype.MODIFIER_PROTECTED=2,r.Parser.prototype.MODIFIER_PRIVATE=4,r.Parser.prototype.MODIFIER_STATIC=8,r.Parser.prototype.MODIFIER_ABSTRACT=16,r.Parser.prototype.MODIFIER_FINAL=32,r.Parser.prototype.getNextToken=function(){this.startAttributes={},this.endAttributes={};var e,t;while(this.tokens[++this.pos]!==undefined){e=this.tokens[this.pos];if(typeof e==\"string\")return this.startAttributes.startLine=this.line,this.endAttributes.endLine=this.line,this.tokenValue=e,e.charCodeAt(0);this.line+=(t=e[1].match(/\\n/g))===null?0:t.length;if(r.Constants.T_COMMENT===e[0])Array.isArray(this.startAttributes.comments)||(this.startAttributes.comments=[]),this.startAttributes.comments.push({type:\"comment\",comment:e[1],line:e[2]});else if(r.Constants.T_DOC_COMMENT===e[0])this.startAttributes.comments.push(new PHPParser_Comment_Doc(e[1],e[2]));else if(this.dropTokens[e[0]]===undefined)return this.tokenValue=e[1],this.startAttributes.startLine=e[2],this.endAttributes.endLine=this.line,this.tokenMap[e[0]]}return this.startAttributes.startLine=this.line,0},r.Parser.prototype.tokenName=function(e){var t=[\"T_INCLUDE\",\"T_INCLUDE_ONCE\",\"T_EVAL\",\"T_REQUIRE\",\"T_REQUIRE_ONCE\",\"T_LOGICAL_OR\",\"T_LOGICAL_XOR\",\"T_LOGICAL_AND\",\"T_PRINT\",\"T_PLUS_EQUAL\",\"T_MINUS_EQUAL\",\"T_MUL_EQUAL\",\"T_DIV_EQUAL\",\"T_CONCAT_EQUAL\",\"T_MOD_EQUAL\",\"T_AND_EQUAL\",\"T_OR_EQUAL\",\"T_XOR_EQUAL\",\"T_SL_EQUAL\",\"T_SR_EQUAL\",\"T_BOOLEAN_OR\",\"T_BOOLEAN_AND\",\"T_IS_EQUAL\",\"T_IS_NOT_EQUAL\",\"T_IS_IDENTICAL\",\"T_IS_NOT_IDENTICAL\",\"T_IS_SMALLER_OR_EQUAL\",\"T_IS_GREATER_OR_EQUAL\",\"T_SL\",\"T_SR\",\"T_INSTANCEOF\",\"T_INC\",\"T_DEC\",\"T_INT_CAST\",\"T_DOUBLE_CAST\",\"T_STRING_CAST\",\"T_ARRAY_CAST\",\"T_OBJECT_CAST\",\"T_BOOL_CAST\",\"T_UNSET_CAST\",\"T_NEW\",\"T_CLONE\",\"T_EXIT\",\"T_IF\",\"T_ELSEIF\",\"T_ELSE\",\"T_ENDIF\",\"T_LNUMBER\",\"T_DNUMBER\",\"T_STRING\",\"T_STRING_VARNAME\",\"T_VARIABLE\",\"T_NUM_STRING\",\"T_INLINE_HTML\",\"T_CHARACTER\",\"T_BAD_CHARACTER\",\"T_ENCAPSED_AND_WHITESPACE\",\"T_CONSTANT_ENCAPSED_STRING\",\"T_ECHO\",\"T_DO\",\"T_WHILE\",\"T_ENDWHILE\",\"T_FOR\",\"T_ENDFOR\",\"T_FOREACH\",\"T_ENDFOREACH\",\"T_DECLARE\",\"T_ENDDECLARE\",\"T_AS\",\"T_SWITCH\",\"T_ENDSWITCH\",\"T_CASE\",\"T_DEFAULT\",\"T_BREAK\",\"T_CONTINUE\",\"T_GOTO\",\"T_FUNCTION\",\"T_CONST\",\"T_RETURN\",\"T_TRY\",\"T_CATCH\",\"T_THROW\",\"T_USE\",\"T_INSTEADOF\",\"T_GLOBAL\",\"T_STATIC\",\"T_ABSTRACT\",\"T_FINAL\",\"T_PRIVATE\",\"T_PROTECTED\",\"T_PUBLIC\",\"T_VAR\",\"T_UNSET\",\"T_ISSET\",\"T_EMPTY\",\"T_HALT_COMPILER\",\"T_CLASS\",\"T_TRAIT\",\"T_INTERFACE\",\"T_EXTENDS\",\"T_IMPLEMENTS\",\"T_OBJECT_OPERATOR\",\"T_DOUBLE_ARROW\",\"T_LIST\",\"T_ARRAY\",\"T_CALLABLE\",\"T_CLASS_C\",\"T_TRAIT_C\",\"T_METHOD_C\",\"T_FUNC_C\",\"T_LINE\",\"T_FILE\",\"T_COMMENT\",\"T_DOC_COMMENT\",\"T_OPEN_TAG\",\"T_OPEN_TAG_WITH_ECHO\",\"T_CLOSE_TAG\",\"T_WHITESPACE\",\"T_START_HEREDOC\",\"T_END_HEREDOC\",\"T_DOLLAR_OPEN_CURLY_BRACES\",\"T_CURLY_OPEN\",\"T_PAAMAYIM_NEKUDOTAYIM\",\"T_DOUBLE_COLON\",\"T_NAMESPACE\",\"T_NS_C\",\"T_DIR\",\"T_NS_SEPARATOR\"],n=\"UNKNOWN\";return t.some(function(t){return r.Constants[t]===e?(n=t,!0):!1}),n},r.Parser.prototype.createTokenMap=function(){var e={},t,n,i=r.Constants.T_PAAMAYIM_NEKUDOTAYIM;for(n=256;n<1e3;++n)i===n?e[n]=this.T_PAAMAYIM_NEKUDOTAYIM:r.Constants.T_OPEN_TAG_WITH_ECHO===n?e[n]=r.Constants.T_ECHO:r.Constants.T_CLOSE_TAG===n?e[n]=59:\"UNKNOWN\"!==(t=this.tokenName(n))&&(e[n]=this[t]);return e},r.Parser.prototype.TOKEN_NONE=-1,r.Parser.prototype.TOKEN_INVALID=149,r.Parser.prototype.TOKEN_MAP_SIZE=384,r.Parser.prototype.YYLAST=913,r.Parser.prototype.YY2TBLSTATE=328,r.Parser.prototype.YYGLAST=415,r.Parser.prototype.YYNLSTATES=544,r.Parser.prototype.YYUNEXPECTED=32767,r.Parser.prototype.YYDEFAULT=-32766,r.Parser.prototype.YYERRTOK=256,r.Parser.prototype.T_INCLUDE=257,r.Parser.prototype.T_INCLUDE_ONCE=258,r.Parser.prototype.T_EVAL=259,r.Parser.prototype.T_REQUIRE=260,r.Parser.prototype.T_REQUIRE_ONCE=261,r.Parser.prototype.T_LOGICAL_OR=262,r.Parser.prototype.T_LOGICAL_XOR=263,r.Parser.prototype.T_LOGICAL_AND=264,r.Parser.prototype.T_PRINT=265,r.Parser.prototype.T_PLUS_EQUAL=266,r.Parser.prototype.T_MINUS_EQUAL=267,r.Parser.prototype.T_MUL_EQUAL=268,r.Parser.prototype.T_DIV_EQUAL=269,r.Parser.prototype.T_CONCAT_EQUAL=270,r.Parser.prototype.T_MOD_EQUAL=271,r.Parser.prototype.T_AND_EQUAL=272,r.Parser.prototype.T_OR_EQUAL=273,r.Parser.prototype.T_XOR_EQUAL=274,r.Parser.prototype.T_SL_EQUAL=275,r.Parser.prototype.T_SR_EQUAL=276,r.Parser.prototype.T_BOOLEAN_OR=277,r.Parser.prototype.T_BOOLEAN_AND=278,r.Parser.prototype.T_IS_EQUAL=279,r.Parser.prototype.T_IS_NOT_EQUAL=280,r.Parser.prototype.T_IS_IDENTICAL=281,r.Parser.prototype.T_IS_NOT_IDENTICAL=282,r.Parser.prototype.T_IS_SMALLER_OR_EQUAL=283,r.Parser.prototype.T_IS_GREATER_OR_EQUAL=284,r.Parser.prototype.T_SL=285,r.Parser.prototype.T_SR=286,r.Parser.prototype.T_INSTANCEOF=287,r.Parser.prototype.T_INC=288,r.Parser.prototype.T_DEC=289,r.Parser.prototype.T_INT_CAST=290,r.Parser.prototype.T_DOUBLE_CAST=291,r.Parser.prototype.T_STRING_CAST=292,r.Parser.prototype.T_ARRAY_CAST=293,r.Parser.prototype.T_OBJECT_CAST=294,r.Parser.prototype.T_BOOL_CAST=295,r.Parser.prototype.T_UNSET_CAST=296,r.Parser.prototype.T_NEW=297,r.Parser.prototype.T_CLONE=298,r.Parser.prototype.T_EXIT=299,r.Parser.prototype.T_IF=300,r.Parser.prototype.T_ELSEIF=301,r.Parser.prototype.T_ELSE=302,r.Parser.prototype.T_ENDIF=303,r.Parser.prototype.T_LNUMBER=304,r.Parser.prototype.T_DNUMBER=305,r.Parser.prototype.T_STRING=306,r.Parser.prototype.T_STRING_VARNAME=307,r.Parser.prototype.T_VARIABLE=308,r.Parser.prototype.T_NUM_STRING=309,r.Parser.prototype.T_INLINE_HTML=310,r.Parser.prototype.T_CHARACTER=311,r.Parser.prototype.T_BAD_CHARACTER=312,r.Parser.prototype.T_ENCAPSED_AND_WHITESPACE=313,r.Parser.prototype.T_CONSTANT_ENCAPSED_STRING=314,r.Parser.prototype.T_ECHO=315,r.Parser.prototype.T_DO=316,r.Parser.prototype.T_WHILE=317,r.Parser.prototype.T_ENDWHILE=318,r.Parser.prototype.T_FOR=319,r.Parser.prototype.T_ENDFOR=320,r.Parser.prototype.T_FOREACH=321,r.Parser.prototype.T_ENDFOREACH=322,r.Parser.prototype.T_DECLARE=323,r.Parser.prototype.T_ENDDECLARE=324,r.Parser.prototype.T_AS=325,r.Parser.prototype.T_SWITCH=326,r.Parser.prototype.T_ENDSWITCH=327,r.Parser.prototype.T_CASE=328,r.Parser.prototype.T_DEFAULT=329,r.Parser.prototype.T_BREAK=330,r.Parser.prototype.T_CONTINUE=331,r.Parser.prototype.T_GOTO=332,r.Parser.prototype.T_FUNCTION=333,r.Parser.prototype.T_CONST=334,r.Parser.prototype.T_RETURN=335,r.Parser.prototype.T_TRY=336,r.Parser.prototype.T_CATCH=337,r.Parser.prototype.T_THROW=338,r.Parser.prototype.T_USE=339,r.Parser.prototype.T_INSTEADOF=340,r.Parser.prototype.T_GLOBAL=341,r.Parser.prototype.T_STATIC=342,r.Parser.prototype.T_ABSTRACT=343,r.Parser.prototype.T_FINAL=344,r.Parser.prototype.T_PRIVATE=345,r.Parser.prototype.T_PROTECTED=346,r.Parser.prototype.T_PUBLIC=347,r.Parser.prototype.T_VAR=348,r.Parser.prototype.T_UNSET=349,r.Parser.prototype.T_ISSET=350,r.Parser.prototype.T_EMPTY=351,r.Parser.prototype.T_HALT_COMPILER=352,r.Parser.prototype.T_CLASS=353,r.Parser.prototype.T_TRAIT=354,r.Parser.prototype.T_INTERFACE=355,r.Parser.prototype.T_EXTENDS=356,r.Parser.prototype.T_IMPLEMENTS=357,r.Parser.prototype.T_OBJECT_OPERATOR=358,r.Parser.prototype.T_DOUBLE_ARROW=359,r.Parser.prototype.T_LIST=360,r.Parser.prototype.T_ARRAY=361,r.Parser.prototype.T_CALLABLE=362,r.Parser.prototype.T_CLASS_C=363,r.Parser.prototype.T_TRAIT_C=364,r.Parser.prototype.T_METHOD_C=365,r.Parser.prototype.T_FUNC_C=366,r.Parser.prototype.T_LINE=367,r.Parser.prototype.T_FILE=368,r.Parser.prototype.T_COMMENT=369,r.Parser.prototype.T_DOC_COMMENT=370,r.Parser.prototype.T_OPEN_TAG=371,r.Parser.prototype.T_OPEN_TAG_WITH_ECHO=372,r.Parser.prototype.T_CLOSE_TAG=373,r.Parser.prototype.T_WHITESPACE=374,r.Parser.prototype.T_START_HEREDOC=375,r.Parser.prototype.T_END_HEREDOC=376,r.Parser.prototype.T_DOLLAR_OPEN_CURLY_BRACES=377,r.Parser.prototype.T_CURLY_OPEN=378,r.Parser.prototype.T_PAAMAYIM_NEKUDOTAYIM=379,r.Parser.prototype.T_NAMESPACE=380,r.Parser.prototype.T_NS_C=381,r.Parser.prototype.T_DIR=382,r.Parser.prototype.T_NS_SEPARATOR=383,r.Parser.prototype.terminals=[\"$EOF\",\"error\",\"T_INCLUDE\",\"T_INCLUDE_ONCE\",\"T_EVAL\",\"T_REQUIRE\",\"T_REQUIRE_ONCE\",\"','\",\"T_LOGICAL_OR\",\"T_LOGICAL_XOR\",\"T_LOGICAL_AND\",\"T_PRINT\",\"'='\",\"T_PLUS_EQUAL\",\"T_MINUS_EQUAL\",\"T_MUL_EQUAL\",\"T_DIV_EQUAL\",\"T_CONCAT_EQUAL\",\"T_MOD_EQUAL\",\"T_AND_EQUAL\",\"T_OR_EQUAL\",\"T_XOR_EQUAL\",\"T_SL_EQUAL\",\"T_SR_EQUAL\",\"'?'\",\"':'\",\"T_BOOLEAN_OR\",\"T_BOOLEAN_AND\",\"'|'\",\"'^'\",\"'&'\",\"T_IS_EQUAL\",\"T_IS_NOT_EQUAL\",\"T_IS_IDENTICAL\",\"T_IS_NOT_IDENTICAL\",\"'<'\",\"T_IS_SMALLER_OR_EQUAL\",\"'>'\",\"T_IS_GREATER_OR_EQUAL\",\"T_SL\",\"T_SR\",\"'+'\",\"'-'\",\"'.'\",\"'*'\",\"'/'\",\"'%'\",\"'!'\",\"T_INSTANCEOF\",\"'~'\",\"T_INC\",\"T_DEC\",\"T_INT_CAST\",\"T_DOUBLE_CAST\",\"T_STRING_CAST\",\"T_ARRAY_CAST\",\"T_OBJECT_CAST\",\"T_BOOL_CAST\",\"T_UNSET_CAST\",\"'@'\",\"'['\",\"T_NEW\",\"T_CLONE\",\"T_EXIT\",\"T_IF\",\"T_ELSEIF\",\"T_ELSE\",\"T_ENDIF\",\"T_LNUMBER\",\"T_DNUMBER\",\"T_STRING\",\"T_STRING_VARNAME\",\"T_VARIABLE\",\"T_NUM_STRING\",\"T_INLINE_HTML\",\"T_ENCAPSED_AND_WHITESPACE\",\"T_CONSTANT_ENCAPSED_STRING\",\"T_ECHO\",\"T_DO\",\"T_WHILE\",\"T_ENDWHILE\",\"T_FOR\",\"T_ENDFOR\",\"T_FOREACH\",\"T_ENDFOREACH\",\"T_DECLARE\",\"T_ENDDECLARE\",\"T_AS\",\"T_SWITCH\",\"T_ENDSWITCH\",\"T_CASE\",\"T_DEFAULT\",\"T_BREAK\",\"T_CONTINUE\",\"T_GOTO\",\"T_FUNCTION\",\"T_CONST\",\"T_RETURN\",\"T_TRY\",\"T_CATCH\",\"T_THROW\",\"T_USE\",\"T_INSTEADOF\",\"T_GLOBAL\",\"T_STATIC\",\"T_ABSTRACT\",\"T_FINAL\",\"T_PRIVATE\",\"T_PROTECTED\",\"T_PUBLIC\",\"T_VAR\",\"T_UNSET\",\"T_ISSET\",\"T_EMPTY\",\"T_HALT_COMPILER\",\"T_CLASS\",\"T_TRAIT\",\"T_INTERFACE\",\"T_EXTENDS\",\"T_IMPLEMENTS\",\"T_OBJECT_OPERATOR\",\"T_DOUBLE_ARROW\",\"T_LIST\",\"T_ARRAY\",\"T_CALLABLE\",\"T_CLASS_C\",\"T_TRAIT_C\",\"T_METHOD_C\",\"T_FUNC_C\",\"T_LINE\",\"T_FILE\",\"T_START_HEREDOC\",\"T_END_HEREDOC\",\"T_DOLLAR_OPEN_CURLY_BRACES\",\"T_CURLY_OPEN\",\"T_PAAMAYIM_NEKUDOTAYIM\",\"T_NAMESPACE\",\"T_NS_C\",\"T_DIR\",\"T_NS_SEPARATOR\",\"';'\",\"'{'\",\"'}'\",\"'('\",\"')'\",\"'$'\",\"']'\",\"'`'\",\"'\\\"'\",\"???\"],r.Parser.prototype.translate=[0,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,47,148,149,145,46,30,149,143,144,44,41,7,42,43,45,149,149,149,149,149,149,149,149,149,149,25,140,35,12,37,24,59,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,60,149,146,29,149,147,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,141,28,142,49,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,1,2,3,4,5,6,8,9,10,11,13,14,15,16,17,18,19,20,21,22,23,26,27,31,32,33,34,36,38,39,40,48,50,51,52,53,54,55,56,57,58,61,62,63,64,65,66,67,68,69,70,71,72,73,74,149,149,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,149,149,149,149,149,149,131,132,133,134,135,136,137,138,139],r.Parser.prototype.yyaction=[61,62,363,63,64,-32766,-32766,-32766,509,65,708,709,710,707,706,705,-32766,-32766,-32766,-32766,-32766,-32766,132,-32766,-32766,-32766,-32766,-32766,-32767,-32767,-32767,-32767,-32766,335,-32766,-32766,-32766,-32766,-32766,66,67,351,663,664,40,68,548,69,232,233,70,71,72,73,74,75,76,77,30,246,78,336,364,-112,0,469,833,834,365,641,890,436,590,41,835,53,27,366,294,367,687,368,921,369,923,922,370,-32766,-32766,-32766,42,43,371,339,126,44,372,337,79,297,349,292,293,-32766,918,-32766,-32766,373,374,375,376,377,391,199,361,338,573,613,378,379,380,381,845,839,840,841,842,836,837,253,-32766,87,88,89,391,843,838,338,597,519,128,80,129,273,332,257,261,47,673,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,799,247,884,108,109,110,226,247,21,-32766,310,-32766,-32766,-32766,642,548,-32766,-32766,-32766,-32766,56,353,-32766,-32766,-32766,55,-32766,-32766,-32766,-32766,-32766,58,-32766,-32766,-32766,-32766,-32766,-32766,-32766,-32766,-32766,557,-32766,-32766,518,-32766,548,890,-32766,390,-32766,228,252,-32766,-32766,-32766,-32766,-32766,275,-32766,234,-32766,587,588,-32766,-32766,-32766,-32766,-32766,-32766,-32766,46,236,-32766,-32766,281,-32766,682,348,-32766,390,-32766,346,333,521,-32766,-32766,-32766,271,911,262,237,446,911,-32766,894,59,700,358,135,548,123,538,35,-32766,333,122,-32766,-32766,-32766,271,-32766,124,-32766,692,-32766,-32766,-32766,-32766,700,273,22,-32766,-32766,-32766,-32766,239,-32766,-32766,612,-32766,548,134,-32766,390,-32766,462,354,-32766,-32766,-32766,-32766,-32766,227,-32766,238,-32766,845,542,-32766,856,611,200,-32766,-32766,-32766,259,280,-32766,-32766,201,-32766,855,129,-32766,390,130,202,333,206,-32766,-32766,-32766,271,-32766,-32766,-32766,125,601,-32766,136,299,700,489,28,548,105,106,107,-32766,498,499,-32766,-32766,-32766,207,-32766,133,-32766,525,-32766,-32766,-32766,-32766,663,664,527,-32766,-32766,-32766,-32766,528,-32766,-32766,610,-32766,548,427,-32766,390,-32766,532,539,-32766,-32766,-32766,-32766,-32766,240,-32766,247,-32766,697,543,-32766,554,523,608,-32766,-32766,-32766,686,535,-32766,-32766,54,-32766,57,60,-32766,390,246,-155,278,345,-32766,-32766,-32766,506,347,-152,471,402,403,-32766,405,404,272,493,416,548,318,417,505,-32766,517,548,-32766,-32766,-32766,549,-32766,562,-32766,916,-32766,-32766,-32766,-32766,564,826,848,-32766,-32766,-32766,-32766,694,-32766,-32766,485,-32766,548,487,-32766,390,-32766,504,802,-32766,-32766,-32766,-32766,-32766,279,-32766,911,-32766,502,492,-32766,413,483,269,-32766,-32766,-32766,243,337,-32766,-32766,418,-32766,454,229,-32766,390,274,373,374,344,-32766,-32766,-32766,360,614,-32766,573,613,378,379,-274,548,615,-332,844,-32766,258,51,-32766,-32766,-32766,270,-32766,346,-32766,52,-32766,260,0,-32766,-333,-32766,-32766,-32766,-32766,-32766,-32766,205,-32766,-32766,49,-32766,548,424,-32766,390,-32766,-266,264,-32766,-32766,-32766,-32766,-32766,409,-32766,343,-32766,265,312,-32766,470,513,-275,-32766,-32766,-32766,920,337,-32766,-32766,530,-32766,531,600,-32766,390,592,373,374,578,581,-32766,-32766,644,629,-32766,573,613,378,379,635,548,636,576,627,-32766,625,693,-32766,-32766,-32766,691,-32766,591,-32766,582,-32766,203,204,-32766,584,583,-32766,-32766,-32766,-32766,586,599,-32766,-32766,589,-32766,690,558,-32766,390,197,683,919,86,520,522,-32766,524,833,834,529,533,-32766,534,537,541,835,48,111,112,113,114,115,116,117,118,119,120,121,127,31,633,337,330,634,585,-32766,32,291,337,330,478,373,374,917,291,891,889,875,373,374,553,613,378,379,737,739,887,553,613,378,379,824,451,675,839,840,841,842,836,837,320,895,277,885,23,33,843,838,556,277,337,330,-32766,34,-32766,555,291,36,37,38,373,374,39,45,50,81,82,83,84,553,613,378,379,-32767,-32767,-32767,-32767,103,104,105,106,107,337,85,131,137,337,138,198,224,225,277,373,374,-332,230,373,374,24,337,231,573,613,378,379,573,613,378,379,373,374,235,248,249,250,337,251,0,573,613,378,379,276,329,331,373,374,-32766,337,574,490,792,337,609,573,613,378,379,373,374,25,300,373,374,319,337,795,573,613,378,379,573,613,378,379,373,374,516,355,359,445,482,796,507,573,613,378,379,508,548,337,890,775,791,337,604,803,808,806,698,373,374,888,807,373,374,-32766,-32766,-32766,573,613,378,379,573,613,378,379,873,832,804,872,851,-32766,809,-32766,-32766,-32766,-32766,805,20,26,29,298,480,515,770,778,827,457,0,900,455,774,0,0,0,874,870,886,823,915,852,869,488,0,391,793,0,338,0,0,0,340,0,273],r.Parser.prototype.yycheck=[2,3,4,5,6,8,9,10,70,11,104,105,106,107,108,109,8,9,10,8,9,24,60,26,27,28,29,30,31,32,33,34,24,7,26,27,28,29,30,41,42,7,123,124,7,47,70,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,144,0,75,68,69,70,25,72,70,74,7,76,77,78,79,7,81,142,83,70,85,72,73,88,8,9,10,92,93,94,95,7,97,98,95,100,7,7,103,104,24,142,26,27,105,106,111,112,113,136,7,7,139,114,115,116,117,122,123,132,125,126,127,128,129,130,131,8,8,9,10,136,137,138,139,140,141,25,143,141,145,142,147,148,24,72,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,144,48,72,44,45,46,30,48,144,64,72,8,9,10,140,70,8,9,10,74,60,25,77,78,79,60,81,24,83,26,85,60,24,88,26,27,28,92,93,94,64,140,97,98,70,100,70,72,103,104,74,145,7,77,78,79,111,81,7,83,30,85,140,140,88,8,9,10,92,93,94,133,134,97,98,145,100,140,7,103,104,24,139,96,141,140,141,111,101,75,75,30,70,75,64,70,60,110,121,12,70,141,25,143,74,96,141,77,78,79,101,81,141,83,140,85,140,141,88,110,145,144,92,93,94,64,7,97,98,142,100,70,141,103,104,74,145,141,77,78,79,111,81,7,83,30,85,132,25,88,132,142,12,92,93,94,120,60,97,98,12,100,148,141,103,104,141,12,96,12,140,141,111,101,8,9,10,141,25,64,90,91,110,65,66,70,41,42,43,74,65,66,77,78,79,12,81,25,83,25,85,140,141,88,123,124,25,92,93,94,64,25,97,98,142,100,70,120,103,104,74,25,25,77,78,79,111,81,30,83,48,85,140,141,88,140,141,30,92,93,94,140,141,97,98,60,100,60,60,103,104,61,72,75,70,140,141,111,67,70,87,99,70,70,64,70,72,102,89,70,70,71,70,70,74,70,70,77,78,79,70,81,70,83,70,85,140,141,88,70,144,70,92,93,94,64,70,97,98,72,100,70,72,103,104,74,72,72,77,78,79,111,81,75,83,75,85,89,86,88,79,101,118,92,93,94,87,95,97,98,87,100,87,87,103,104,118,105,106,95,140,141,111,95,115,64,114,115,116,117,135,70,115,120,132,74,120,140,77,78,79,119,81,139,83,140,85,120,-1,88,120,140,141,92,93,94,64,121,97,98,121,100,70,122,103,104,74,135,135,77,78,79,111,81,139,83,139,85,135,135,88,135,135,135,92,93,94,142,95,97,98,140,100,140,140,103,104,140,105,106,140,140,141,111,140,140,64,114,115,116,117,140,70,140,140,140,74,140,140,77,78,79,140,81,140,83,140,85,41,42,88,140,140,141,92,93,94,140,140,97,98,140,100,140,140,103,104,60,140,142,141,141,141,111,141,68,69,141,141,72,141,141,141,76,12,13,14,15,16,17,18,19,20,21,22,23,141,143,142,95,96,142,140,141,143,101,95,96,142,105,106,142,101,142,142,142,105,106,114,115,116,117,50,51,142,114,115,116,117,142,123,142,125,126,127,128,129,130,131,142,136,142,144,143,137,138,142,136,95,96,143,143,145,142,101,143,143,143,105,106,143,143,143,143,143,143,143,114,115,116,117,35,36,37,38,39,40,41,42,43,95,143,143,143,95,143,143,143,143,136,105,106,120,143,105,106,144,95,143,114,115,116,117,114,115,116,117,105,106,143,143,143,143,95,143,-1,114,115,116,117,143,143,143,105,106,143,95,142,80,146,95,142,114,115,116,117,105,106,144,144,105,106,144,95,142,114,115,116,117,114,115,116,117,105,106,82,144,144,144,144,142,84,114,115,116,117,144,70,95,72,144,144,95,142,144,146,144,142,105,106,146,144,105,106,8,9,10,114,115,116,117,114,115,116,117,144,144,144,144,144,24,104,26,27,28,29,144,144,144,144,144,144,144,144,144,144,144,-1,144,144,144,-1,-1,-1,146,146,146,146,146,146,146,146,-1,136,147,-1,139,-1,-1,-1,143,-1,145],r.Parser.prototype.yybase=[0,574,581,623,655,2,718,402,747,659,672,688,743,701,705,483,483,483,483,483,351,356,366,366,367,366,344,-2,-2,-2,200,200,231,231,231,231,231,231,231,231,200,231,451,482,532,316,370,115,146,285,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,44,474,429,476,481,487,488,739,740,741,734,733,416,736,539,541,342,542,543,552,557,559,536,567,737,755,569,735,738,123,123,123,123,123,123,123,123,123,122,11,336,336,336,336,336,336,336,336,336,336,336,336,336,336,336,227,227,173,577,577,577,577,577,577,577,577,577,577,577,79,178,846,8,-3,-3,-3,-3,642,706,706,706,706,157,179,242,431,431,360,431,525,368,767,767,767,767,767,767,767,767,767,767,767,767,350,375,315,315,652,652,-81,-81,-81,-81,251,185,188,184,-62,348,195,195,195,408,392,410,1,192,129,129,129,-24,-24,-24,-24,499,-24,-24,-24,113,108,108,12,161,349,526,271,398,529,438,130,206,265,427,76,414,427,288,295,76,166,44,262,422,141,491,372,494,413,71,92,93,267,135,100,34,415,745,746,742,-38,420,-10,135,147,744,498,107,26,493,144,377,363,369,332,363,400,377,588,377,376,377,360,37,582,376,377,374,376,388,363,364,412,369,377,441,443,390,106,332,377,390,377,400,64,590,591,323,592,589,593,649,608,362,500,399,407,620,625,636,365,354,614,524,425,359,355,423,570,578,357,406,414,394,352,403,531,433,403,653,434,385,417,411,444,310,318,501,425,668,757,380,637,684,403,609,387,87,325,638,382,403,639,403,696,503,615,403,697,384,435,425,352,352,352,700,66,699,583,702,707,704,748,721,749,584,750,358,583,722,751,682,215,613,422,436,389,447,221,257,752,403,403,506,499,403,395,685,397,426,753,392,391,647,683,403,418,754,221,723,587,724,450,568,507,648,509,327,725,353,497,610,454,622,455,461,404,510,373,732,612,247,361,664,463,405,692,641,464,465,511,343,437,335,409,396,665,293,467,468,472,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,0,0,0,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,0,0,0,0,0,0,0,0,0,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,767,767,767,767,767,767,767,767,767,767,767,123,123,123,123,123,123,123,123,0,129,129,129,129,-94,-94,-94,767,767,767,767,767,767,0,0,0,0,0,0,0,0,0,0,0,0,-94,-94,129,129,767,767,-24,-24,-24,-24,-24,108,108,108,-24,108,145,145,145,108,108,108,100,100,0,0,0,0,0,0,0,145,0,0,0,376,0,0,0,145,260,260,221,260,260,135,0,0,425,376,0,364,376,0,0,0,0,0,0,531,0,87,637,241,425,0,0,0,0,0,0,0,425,289,289,306,0,358,0,0,0,306,241,0,0,221],r.Parser.prototype.yydefault=[3,32767,32767,1,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,104,96,110,95,106,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,358,358,122,122,122,122,122,122,122,122,316,32767,32767,32767,32767,32767,32767,32767,32767,32767,173,173,173,32767,348,348,348,348,348,348,348,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,363,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,232,233,235,236,172,125,349,362,171,199,201,250,200,177,182,183,184,185,186,187,188,189,190,191,192,176,229,228,197,313,313,316,32767,32767,32767,32767,32767,32767,32767,32767,198,202,204,203,219,220,217,218,175,221,222,223,224,157,157,157,357,357,32767,357,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,158,32767,211,212,276,276,117,117,117,117,117,32767,32767,32767,32767,284,32767,32767,32767,32767,32767,286,32767,32767,206,207,205,32767,32767,32767,32767,32767,32767,32767,32767,32767,285,32767,32767,32767,32767,32767,32767,32767,32767,334,321,272,32767,32767,32767,265,32767,107,109,32767,32767,32767,32767,302,339,32767,32767,32767,17,32767,32767,32767,370,334,32767,32767,19,32767,32767,32767,32767,227,32767,338,332,32767,32767,32767,32767,32767,32767,63,32767,32767,32767,32767,32767,63,281,63,32767,63,32767,315,287,32767,63,74,32767,72,32767,32767,76,32767,63,93,93,254,315,54,63,254,63,32767,32767,32767,32767,4,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,267,32767,323,32767,337,336,324,32767,265,32767,215,194,266,32767,196,32767,32767,270,273,32767,32767,32767,134,32767,268,180,32767,32767,32767,32767,365,32767,32767,174,32767,32767,32767,130,32767,61,332,32767,32767,355,32767,32767,332,269,208,209,210,32767,121,32767,310,32767,32767,32767,32767,32767,32767,327,32767,333,32767,32767,32767,32767,111,32767,302,32767,32767,32767,75,32767,32767,178,126,32767,32767,364,32767,32767,32767,320,32767,32767,32767,32767,32767,62,32767,32767,77,32767,32767,32767,32767,332,32767,32767,32767,115,32767,169,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,332,32767,32767,32767,32767,32767,32767,32767,4,32767,151,32767,32767,32767,32767,32767,32767,32767,25,25,3,137,3,137,25,101,25,25,137,93,93,25,25,25,144,25,25,25,25,25,25,25,25],r.Parser.prototype.yygoto=[141,141,173,173,173,173,173,173,173,173,141,173,142,143,144,148,153,155,181,175,172,172,172,172,174,174,174,174,174,174,174,168,169,170,171,179,757,758,392,760,781,782,783,784,785,786,787,789,725,145,146,147,149,150,151,152,154,177,178,180,196,208,209,210,211,212,213,214,215,217,218,219,220,244,245,266,267,268,430,431,432,182,183,184,185,186,187,188,189,190,191,192,156,157,158,159,176,160,194,161,162,163,164,195,165,193,139,166,167,452,452,452,452,452,452,452,452,452,452,452,453,453,453,453,453,453,453,453,453,453,453,551,551,551,464,491,394,394,394,394,394,394,394,394,394,394,394,394,394,394,394,394,394,394,407,552,552,552,810,810,662,662,662,662,662,594,283,595,510,399,399,567,679,632,849,850,863,660,714,426,222,622,622,622,622,223,617,623,494,395,395,395,395,395,395,395,395,395,395,395,395,395,395,395,395,395,395,465,472,514,904,398,398,425,425,459,425,419,322,421,421,393,396,412,422,428,460,463,473,481,501,5,476,284,327,1,15,2,6,7,550,550,550,8,9,10,668,16,11,17,12,18,13,19,14,704,328,881,881,643,628,626,626,624,626,526,401,652,647,847,847,847,847,847,847,847,847,847,847,847,437,438,441,447,477,479,497,290,910,910,400,400,486,880,880,263,913,910,303,255,723,306,822,821,306,896,896,896,861,304,323,410,913,913,897,316,420,769,658,559,879,671,536,324,466,565,311,311,311,801,241,676,496,439,440,442,444,448,475,631,858,311,285,286,603,495,712,0,406,321,0,0,0,314,0,0,429,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,411],r.Parser.prototype.yygcheck=[15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,35,35,35,35,35,35,35,35,35,35,35,86,86,86,86,86,86,86,86,86,86,86,6,6,6,21,21,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,71,7,7,7,35,35,35,35,35,35,35,29,44,29,35,86,86,12,12,12,12,12,12,12,12,75,40,35,35,35,35,40,35,35,35,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,36,36,36,104,82,82,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,13,42,42,42,2,13,2,13,13,5,5,5,13,13,13,54,13,13,13,13,13,13,13,13,67,67,83,83,5,5,5,5,5,5,5,5,5,5,93,93,93,93,93,93,93,93,93,93,93,52,52,52,52,52,52,52,4,105,105,89,89,94,84,84,92,105,105,26,92,71,4,91,91,4,84,84,84,97,30,70,30,105,105,102,27,30,72,50,10,84,55,46,9,30,11,90,90,90,80,30,56,30,85,85,85,85,85,85,43,96,90,44,44,34,77,69,-1,4,90,-1,-1,-1,4,-1,-1,4,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,71],r.Parser.prototype.yygbase=[0,0,-286,0,10,239,130,154,0,-10,25,-23,-29,-289,0,-30,0,0,0,0,0,83,0,0,0,0,245,84,-11,142,-28,0,0,0,-13,-88,-42,0,0,0,-344,0,-38,-12,-188,0,23,0,0,0,66,0,247,0,205,24,-18,0,0,0,0,0,0,0,0,0,0,13,0,-15,85,74,70,0,0,148,0,-14,0,0,-6,0,-35,11,47,278,-77,0,0,44,68,43,38,72,94,0,-16,109,0,0,0,0,87,0,170,34,0],r.Parser.prototype.yygdefault=[-32768,362,3,546,382,570,571,572,307,305,560,566,467,4,568,140,295,575,296,500,577,414,579,580,308,309,415,315,216,593,503,313,596,357,602,301,449,383,350,461,221,423,456,630,282,638,540,646,649,450,657,352,433,434,667,672,677,680,334,325,474,684,685,256,689,511,512,703,242,711,317,724,342,788,790,397,408,484,797,326,800,384,385,386,387,435,818,815,289,866,287,443,254,853,468,356,903,862,288,388,389,302,898,341,905,912,458],r.Parser.prototype.yylhs=[0,1,2,2,4,4,3,3,3,3,3,3,3,3,3,8,8,10,10,10,10,9,9,11,13,13,14,14,14,14,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,33,33,34,27,27,30,30,6,7,7,7,37,37,37,38,38,41,41,39,39,42,42,22,22,29,29,32,32,31,31,43,23,23,23,23,44,44,45,45,46,46,20,20,16,16,47,18,18,48,17,17,19,19,36,36,49,49,50,50,51,51,51,51,52,52,53,53,54,54,24,24,55,55,55,25,25,56,56,40,40,57,57,57,57,62,62,63,63,64,64,64,64,65,66,66,61,61,58,58,60,60,68,68,67,67,67,67,67,67,59,59,69,69,26,26,21,21,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,71,77,77,79,79,80,81,81,81,81,81,81,86,86,35,35,35,72,72,87,87,82,82,88,88,88,88,88,73,73,73,76,76,76,78,78,93,93,93,93,93,93,93,93,93,93,93,93,93,93,12,12,12,12,12,12,74,74,74,74,94,94,96,96,95,95,97,97,28,28,28,28,99,99,98,98,98,98,98,100,100,84,84,89,89,83,83,101,101,101,101,90,90,90,90,85,85,91,91,91,70,70,102,102,102,75,75,103,103,104,104,104,104,92,92,92,92,105,105,105,105,105,105,105,106,106,106],r.Parser.prototype.yylen=[1,1,2,0,1,3,1,1,1,1,3,5,4,3,3,3,1,1,3,2,4,3,1,3,2,0,1,1,1,1,3,7,10,5,7,9,5,2,3,2,3,2,3,3,3,3,1,2,5,7,8,10,5,1,5,3,3,2,1,2,8,1,3,0,1,9,7,6,5,1,2,2,0,2,0,2,0,2,1,3,1,4,1,4,1,4,1,3,3,3,4,4,5,0,2,4,3,1,1,1,4,0,2,5,0,2,6,0,2,0,3,1,0,1,3,3,5,0,1,1,1,1,0,1,3,1,2,3,1,1,2,4,3,1,1,3,2,0,3,3,8,3,1,3,0,2,4,5,4,4,3,1,1,1,3,1,1,0,1,1,2,1,1,1,1,1,1,1,3,1,3,3,1,0,1,1,6,3,4,4,1,2,3,3,3,3,3,3,3,3,3,3,3,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,5,4,4,4,2,2,4,2,2,2,2,2,2,2,2,2,2,2,1,4,3,3,2,9,10,3,0,4,1,3,2,4,6,8,4,4,4,1,1,1,2,3,1,1,1,1,1,1,0,3,3,4,4,0,2,3,0,1,1,0,3,1,1,1,1,1,1,1,1,1,1,1,3,2,1,1,3,2,2,4,3,1,3,3,3,0,2,0,1,3,1,3,1,1,1,1,1,6,4,3,6,4,4,4,1,3,1,2,1,1,4,1,3,6,4,4,4,4,1,4,0,1,1,3,1,3,1,1,4,0,0,2,3,1,3,1,4,2,2,2,1,2,1,4,3,3,3,6,3,1,1,1],r.Parser.prototype.yyn0=function(){this.yyval=this.yyastk[this.stackPos]},r.Parser.prototype.yyn1=function(e){this.yyval=this.Stmt_Namespace_postprocess(this.yyastk[this.stackPos-0])},r.Parser.prototype.yyn2=function(e){Array.isArray(this.yyastk[this.stackPos-0])?this.yyval=this.yyastk[this.stackPos-1].concat(this.yyastk[this.stackPos-0]):(this.yyastk[this.stackPos-1].push(this.yyastk[this.stackPos-0]),this.yyval=this.yyastk[this.stackPos-1])},r.Parser.prototype.yyn3=function(e){this.yyval=[]},r.Parser.prototype.yyn4=function(e){this.yyval=[this.yyastk[this.stackPos-0]]},r.Parser.prototype.yyn5=function(e){this.yyastk[this.stackPos-2].push(this.yyastk[this.stackPos-0]),this.yyval=this.yyastk[this.stackPos-2]},r.Parser.prototype.yyn6=function(e){this.yyval=this.yyastk[this.stackPos-0]},r.Parser.prototype.yyn7=function(e){this.yyval=this.yyastk[this.stackPos-0]},r.Parser.prototype.yyn8=function(e){this.yyval=this.yyastk[this.stackPos-0]},r.Parser.prototype.yyn9=function(e){this.yyval=this.Node_Stmt_HaltCompiler(e)},r.Parser.prototype.yyn10=function(e){this.yyval=this.Node_Stmt_Namespace(this.Node_Name(this.yyastk[this.stackPos-1],e),null,e)},r.Parser.prototype.yyn11=function(e){this.yyval=this.Node_Stmt_Namespace(this.Node_Name(this.yyastk[this.stackPos-3],e),this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn12=function(e){this.yyval=this.Node_Stmt_Namespace(null,this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn13=function(e){this.yyval=this.Node_Stmt_Use(this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn14=function(e){this.yyval=this.Node_Stmt_Const(this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn15=function(e){this.yyastk[this.stackPos-2].push(this.yyastk[this.stackPos-0]),this.yyval=this.yyastk[this.stackPos-2]},r.Parser.prototype.yyn16=function(e){this.yyval=[this.yyastk[this.stackPos-0]]},r.Parser.prototype.yyn17=function(e){this.yyval=this.Node_Stmt_UseUse(this.Node_Name(this.yyastk[this.stackPos-0],e),null,e)},r.Parser.prototype.yyn18=function(e){this.yyval=this.Node_Stmt_UseUse(this.Node_Name(this.yyastk[this.stackPos-2],e),this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn19=function(e){this.yyval=this.Node_Stmt_UseUse(this.Node_Name(this.yyastk[this.stackPos-0],e),null,e)},r.Parser.prototype.yyn20=function(e){this.yyval=this.Node_Stmt_UseUse(this.Node_Name(this.yyastk[this.stackPos-2],e),this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn21=function(e){this.yyastk[this.stackPos-2].push(this.yyastk[this.stackPos-0]),this.yyval=this.yyastk[this.stackPos-2]},r.Parser.prototype.yyn22=function(e){this.yyval=[this.yyastk[this.stackPos-0]]},r.Parser.prototype.yyn23=function(e){this.yyval=this.Node_Const(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn24=function(e){Array.isArray(this.yyastk[this.stackPos-0])?this.yyval=this.yyastk[this.stackPos-1].concat(this.yyastk[this.stackPos-0]):(this.yyastk[this.stackPos-1].push(this.yyastk[this.stackPos-0]),this.yyval=this.yyastk[this.stackPos-1])},r.Parser.prototype.yyn25=function(e){this.yyval=[]},r.Parser.prototype.yyn26=function(e){this.yyval=this.yyastk[this.stackPos-0]},r.Parser.prototype.yyn27=function(e){this.yyval=this.yyastk[this.stackPos-0]},r.Parser.prototype.yyn28=function(e){this.yyval=this.yyastk[this.stackPos-0]},r.Parser.prototype.yyn29=function(e){throw new Error(\"__halt_compiler() can only be used from the outermost scope\")},r.Parser.prototype.yyn30=function(e){this.yyval=this.yyastk[this.stackPos-1]},r.Parser.prototype.yyn31=function(e){this.yyval=this.Node_Stmt_If(this.yyastk[this.stackPos-4],{stmts:Array.isArray(this.yyastk[this.stackPos-2])?this.yyastk[this.stackPos-2]:[this.yyastk[this.stackPos-2]],elseifs:this.yyastk[this.stackPos-1],Else:this.yyastk[this.stackPos-0]},e)},r.Parser.prototype.yyn32=function(e){this.yyval=this.Node_Stmt_If(this.yyastk[this.stackPos-7],{stmts:this.yyastk[this.stackPos-4],elseifs:this.yyastk[this.stackPos-3],\"else\":this.yyastk[this.stackPos-2]},e)},r.Parser.prototype.yyn33=function(e){this.yyval=this.Node_Stmt_While(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn34=function(e){this.yyval=this.Node_Stmt_Do(this.yyastk[this.stackPos-2],Array.isArray(this.yyastk[this.stackPos-5])?this.yyastk[this.stackPos-5]:[this.yyastk[this.stackPos-5]],e)},r.Parser.prototype.yyn35=function(e){this.yyval=this.Node_Stmt_For({init:this.yyastk[this.stackPos-6],cond:this.yyastk[this.stackPos-4],loop:this.yyastk[this.stackPos-2],stmts:this.yyastk[this.stackPos-0]},e)},r.Parser.prototype.yyn36=function(e){this.yyval=this.Node_Stmt_Switch(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn37=function(e){this.yyval=this.Node_Stmt_Break(null,e)},r.Parser.prototype.yyn38=function(e){this.yyval=this.Node_Stmt_Break(this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn39=function(e){this.yyval=this.Node_Stmt_Continue(null,e)},r.Parser.prototype.yyn40=function(e){this.yyval=this.Node_Stmt_Continue(this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn41=function(e){this.yyval=this.Node_Stmt_Return(null,e)},r.Parser.prototype.yyn42=function(e){this.yyval=this.Node_Stmt_Return(this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn43=function(e){this.yyval=this.Node_Stmt_Global(this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn44=function(e){this.yyval=this.Node_Stmt_Static(this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn45=function(e){this.yyval=this.Node_Stmt_Echo(this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn46=function(e){this.yyval=this.Node_Stmt_InlineHTML(this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn47=function(e){this.yyval=this.yyastk[this.stackPos-1]},r.Parser.prototype.yyn48=function(e){this.yyval=this.Node_Stmt_Unset(this.yyastk[this.stackPos-2],e)},r.Parser.prototype.yyn49=function(e){this.yyval=this.Node_Stmt_Foreach(this.yyastk[this.stackPos-4],this.yyastk[this.stackPos-2],{keyVar:null,byRef:!1,stmts:this.yyastk[this.stackPos-0]},e)},r.Parser.prototype.yyn50=function(e){this.yyval=this.Node_Stmt_Foreach(this.yyastk[this.stackPos-5],this.yyastk[this.stackPos-2],{keyVar:null,byRef:!0,stmts:this.yyastk[this.stackPos-0]},e)},r.Parser.prototype.yyn51=function(e){this.yyval=this.Node_Stmt_Foreach(this.yyastk[this.stackPos-7],this.yyastk[this.stackPos-2],{keyVar:this.yyastk[this.stackPos-5],byRef:this.yyastk[this.stackPos-3],stmts:this.yyastk[this.stackPos-0]},e)},r.Parser.prototype.yyn52=function(e){this.yyval=this.Node_Stmt_Declare(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn53=function(e){this.yyval=[]},r.Parser.prototype.yyn54=function(e){this.yyval=this.Node_Stmt_TryCatch(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn55=function(e){this.yyval=this.Node_Stmt_Throw(this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn56=function(e){this.yyval=this.Node_Stmt_Goto(this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn57=function(e){this.yyval=this.Node_Stmt_Label(this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn58=function(e){this.yyval=[this.yyastk[this.stackPos-0]]},r.Parser.prototype.yyn59=function(e){this.yyastk[this.stackPos-1].push(this.yyastk[this.stackPos-0]),this.yyval=this.yyastk[this.stackPos-1]},r.Parser.prototype.yyn60=function(e){this.yyval=this.Node_Stmt_Catch(this.yyastk[this.stackPos-5],this.yyastk[this.stackPos-4].substring(1),this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn61=function(e){this.yyval=[this.yyastk[this.stackPos-0]]},r.Parser.prototype.yyn62=function(e){this.yyastk[this.stackPos-2].push(this.yyastk[this.stackPos-0]),this.yyval=this.yyastk[this.stackPos-2]},r.Parser.prototype.yyn63=function(e){this.yyval=!1},r.Parser.prototype.yyn64=function(e){this.yyval=!0},r.Parser.prototype.yyn65=function(e){this.yyval=this.Node_Stmt_Function(this.yyastk[this.stackPos-6],{byRef:this.yyastk[this.stackPos-7],params:this.yyastk[this.stackPos-4],stmts:this.yyastk[this.stackPos-1]},e)},r.Parser.prototype.yyn66=function(e){this.yyval=this.Node_Stmt_Class(this.yyastk[this.stackPos-5],{type:this.yyastk[this.stackPos-6],Extends:this.yyastk[this.stackPos-4],Implements:this.yyastk[this.stackPos-3],stmts:this.yyastk[this.stackPos-1]},e)},r.Parser.prototype.yyn67=function(e){this.yyval=this.Node_Stmt_Interface(this.yyastk[this.stackPos-4],{Extends:this.yyastk[this.stackPos-3],stmts:this.yyastk[this.stackPos-1]},e)},r.Parser.prototype.yyn68=function(e){this.yyval=this.Node_Stmt_Trait(this.yyastk[this.stackPos-3],this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn69=function(e){this.yyval=0},r.Parser.prototype.yyn70=function(e){this.yyval=this.MODIFIER_ABSTRACT},r.Parser.prototype.yyn71=function(e){this.yyval=this.MODIFIER_FINAL},r.Parser.prototype.yyn72=function(e){this.yyval=null},r.Parser.prototype.yyn73=function(e){this.yyval=this.yyastk[this.stackPos-0]},r.Parser.prototype.yyn74=function(e){this.yyval=[]},r.Parser.prototype.yyn75=function(e){this.yyval=this.yyastk[this.stackPos-0]},r.Parser.prototype.yyn76=function(e){this.yyval=[]},r.Parser.prototype.yyn77=function(e){this.yyval=this.yyastk[this.stackPos-0]},r.Parser.prototype.yyn78=function(e){this.yyval=[this.yyastk[this.stackPos-0]]},r.Parser.prototype.yyn79=function(e){this.yyastk[this.stackPos-2].push(this.yyastk[this.stackPos-0]),this.yyval=this.yyastk[this.stackPos-2]},r.Parser.prototype.yyn80=function(e){this.yyval=Array.isArray(this.yyastk[this.stackPos-0])?this.yyastk[this.stackPos-0]:[this.yyastk[this.stackPos-0]]},r.Parser.prototype.yyn81=function(e){this.yyval=this.yyastk[this.stackPos-2]},r.Parser.prototype.yyn82=function(e){this.yyval=Array.isArray(this.yyastk[this.stackPos-0])?this.yyastk[this.stackPos-0]:[this.yyastk[this.stackPos-0]]},r.Parser.prototype.yyn83=function(e){this.yyval=this.yyastk[this.stackPos-2]},r.Parser.prototype.yyn84=function(e){this.yyval=Array.isArray(this.yyastk[this.stackPos-0])?this.yyastk[this.stackPos-0]:[this.yyastk[this.stackPos-0]]},r.Parser.prototype.yyn85=function(e){this.yyval=this.yyastk[this.stackPos-2]},r.Parser.prototype.yyn86=function(e){this.yyval=[this.yyastk[this.stackPos-0]]},r.Parser.prototype.yyn87=function(e){this.yyastk[this.stackPos-2].push(this.yyastk[this.stackPos-0]),this.yyval=this.yyastk[this.stackPos-2]},r.Parser.prototype.yyn88=function(e){this.yyval=this.Node_Stmt_DeclareDeclare(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn89=function(e){this.yyval=this.yyastk[this.stackPos-1]},r.Parser.prototype.yyn90=function(e){this.yyval=this.yyastk[this.stackPos-1]},r.Parser.prototype.yyn91=function(e){this.yyval=this.yyastk[this.stackPos-2]},r.Parser.prototype.yyn92=function(e){this.yyval=this.yyastk[this.stackPos-2]},r.Parser.prototype.yyn93=function(e){this.yyval=[]},r.Parser.prototype.yyn94=function(e){this.yyastk[this.stackPos-1].push(this.yyastk[this.stackPos-0]),this.yyval=this.yyastk[this.stackPos-1]},r.Parser.prototype.yyn95=function(e){this.yyval=this.Node_Stmt_Case(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn96=function(e){this.yyval=this.Node_Stmt_Case(null,this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn97=function(){this.yyval=this.yyastk[this.stackPos]},r.Parser.prototype.yyn98=function(){this.yyval=this.yyastk[this.stackPos]},r.Parser.prototype.yyn99=function(e){this.yyval=Array.isArray(this.yyastk[this.stackPos-0])?this.yyastk[this.stackPos-0]:[this.yyastk[this.stackPos-0]]},r.Parser.prototype.yyn100=function(e){this.yyval=this.yyastk[this.stackPos-2]},r.Parser.prototype.yyn101=function(e){this.yyval=[]},r.Parser.prototype.yyn102=function(e){this.yyastk[this.stackPos-1].push(this.yyastk[this.stackPos-0]),this.yyval=this.yyastk[this.stackPos-1]},r.Parser.prototype.yyn103=function(e){this.yyval=this.Node_Stmt_ElseIf(this.yyastk[this.stackPos-2],Array.isArray(this.yyastk[this.stackPos-0])?this.yyastk[this.stackPos-0]:[this.yyastk[this.stackPos-0]],e)},r.Parser.prototype.yyn104=function(e){this.yyval=[]},r.Parser.prototype.yyn105=function(e){this.yyastk[this.stackPos-1].push(this.yyastk[this.stackPos-0]),this.yyval=this.yyastk[this.stackPos-1]},r.Parser.prototype.yyn106=function(e){this.yyval=this.Node_Stmt_ElseIf(this.yyastk[this.stackPos-3],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn107=function(e){this.yyval=null},r.Parser.prototype.yyn108=function(e){this.yyval=this.Node_Stmt_Else(Array.isArray(this.yyastk[this.stackPos-0])?this.yyastk[this.stackPos-0]:[this.yyastk[this.stackPos-0]],e)},r.Parser.prototype.yyn109=function(e){this.yyval=null},r.Parser.prototype.yyn110=function(e){this.yyval=this.Node_Stmt_Else(this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn111=function(e){this.yyval=this.yyastk[this.stackPos-0]},r.Parser.prototype.yyn112=function(e){this.yyval=[]},r.Parser.prototype.yyn113=function(e){this.yyval=[this.yyastk[this.stackPos-0]]},r.Parser.prototype.yyn114=function(e){this.yyastk[this.stackPos-2].push(this.yyastk[this.stackPos-0]),this.yyval=this.yyastk[this.stackPos-2]},r.Parser.prototype.yyn115=function(e){this.yyval=this.Node_Param(this.yyastk[this.stackPos-0].substring(1),null,this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn116=function(e){this.yyval=this.Node_Param(this.yyastk[this.stackPos-2].substring(1),this.yyastk[this.stackPos-0],this.yyastk[this.stackPos-4],this.yyastk[this.stackPos-3],e)},r.Parser.prototype.yyn117=function(e){this.yyval=null},r.Parser.prototype.yyn118=function(e){this.yyval=this.yyastk[this.stackPos-0]},r.Parser.prototype.yyn119=function(e){this.yyval=\"array\"},r.Parser.prototype.yyn120=function(e){this.yyval=\"callable\"},r.Parser.prototype.yyn121=function(e){this.yyval=this.yyastk[this.stackPos-0]},r.Parser.prototype.yyn122=function(e){this.yyval=[]},r.Parser.prototype.yyn123=function(e){this.yyval=[this.yyastk[this.stackPos-0]]},r.Parser.prototype.yyn124=function(e){this.yyastk[this.stackPos-2].push(this.yyastk[this.stackPos-0]),this.yyval=this.yyastk[this.stackPos-2]},r.Parser.prototype.yyn125=function(e){this.yyval=this.Node_Arg(this.yyastk[this.stackPos-0],!1,e)},r.Parser.prototype.yyn126=function(e){this.yyval=this.Node_Arg(this.yyastk[this.stackPos-0],!0,e)},r.Parser.prototype.yyn127=function(e){this.yyastk[this.stackPos-2].push(this.yyastk[this.stackPos-0]),this.yyval=this.yyastk[this.stackPos-2]},r.Parser.prototype.yyn128=function(e){this.yyval=[this.yyastk[this.stackPos-0]]},r.Parser.prototype.yyn129=function(e){this.yyval=this.Node_Expr_Variable(this.yyastk[this.stackPos-0].substring(1),e)},r.Parser.prototype.yyn130=function(e){this.yyval=this.Node_Expr_Variable(this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn131=function(e){this.yyval=this.Node_Expr_Variable(this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn132=function(e){this.yyastk[this.stackPos-2].push(this.yyastk[this.stackPos-0]),this.yyval=this.yyastk[this.stackPos-2]},r.Parser.prototype.yyn133=function(e){this.yyval=[this.yyastk[this.stackPos-0]]},r.Parser.prototype.yyn134=function(e){this.yyval=this.Node_Stmt_StaticVar(this.yyastk[this.stackPos-0].substring(1),null,e)},r.Parser.prototype.yyn135=function(e){this.yyval=this.Node_Stmt_StaticVar(this.yyastk[this.stackPos-2].substring(1),this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn136=function(e){this.yyastk[this.stackPos-1].push(this.yyastk[this.stackPos-0]),this.yyval=this.yyastk[this.stackPos-1]},r.Parser.prototype.yyn137=function(e){this.yyval=[]},r.Parser.prototype.yyn138=function(e){this.yyval=this.Node_Stmt_Property(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn139=function(e){this.yyval=this.Node_Stmt_ClassConst(this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn140=function(e){this.yyval=this.Node_Stmt_ClassMethod(this.yyastk[this.stackPos-4],{type:this.yyastk[this.stackPos-7],byRef:this.yyastk[this.stackPos-5],params:this.yyastk[this.stackPos-2],stmts:this.yyastk[this.stackPos-0]},e)},r.Parser.prototype.yyn141=function(e){this.yyval=this.Node_Stmt_TraitUse(this.yyastk[this.stackPos-1],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn142=function(e){this.yyval=[]},r.Parser.prototype.yyn143=function(e){this.yyval=this.yyastk[this.stackPos-1]},r.Parser.prototype.yyn144=function(e){this.yyval=[]},r.Parser.prototype.yyn145=function(e){this.yyastk[this.stackPos-1].push(this.yyastk[this.stackPos-0]),this.yyval=this.yyastk[this.stackPos-1]},r.Parser.prototype.yyn146=function(e){this.yyval=this.Node_Stmt_TraitUseAdaptation_Precedence(this.yyastk[this.stackPos-3][0],this.yyastk[this.stackPos-3][1],this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn147=function(e){this.yyval=this.Node_Stmt_TraitUseAdaptation_Alias(this.yyastk[this.stackPos-4][0],this.yyastk[this.stackPos-4][1],this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn148=function(e){this.yyval=this.Node_Stmt_TraitUseAdaptation_Alias(this.yyastk[this.stackPos-3][0],this.yyastk[this.stackPos-3][1],this.yyastk[this.stackPos-1],null,e)},r.Parser.prototype.yyn149=function(e){this.yyval=this.Node_Stmt_TraitUseAdaptation_Alias(this.yyastk[this.stackPos-3][0],this.yyastk[this.stackPos-3][1],null,this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn150=function(e){this.yyval=array(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0])},r.Parser.prototype.yyn151=function(e){this.yyval=this.yyastk[this.stackPos-0]},r.Parser.prototype.yyn152=function(e){this.yyval=array(null,this.yyastk[this.stackPos-0])},r.Parser.prototype.yyn153=function(e){this.yyval=null},r.Parser.prototype.yyn154=function(e){this.yyval=this.yyastk[this.stackPos-1]},r.Parser.prototype.yyn155=function(e){this.yyval=this.yyastk[this.stackPos-0]},r.Parser.prototype.yyn156=function(e){this.yyval=this.MODIFIER_PUBLIC},r.Parser.prototype.yyn157=function(e){this.yyval=this.MODIFIER_PUBLIC},r.Parser.prototype.yyn158=function(e){this.yyval=this.yyastk[this.stackPos-0]},r.Parser.prototype.yyn159=function(e){this.yyval=this.yyastk[this.stackPos-0]},r.Parser.prototype.yyn160=function(e){this.Stmt_Class_verifyModifier(this.yyastk[this.stackPos-1],this.yyastk[this.stackPos-0]),this.yyval=this.yyastk[this.stackPos-1]|this.yyastk[this.stackPos-0]},r.Parser.prototype.yyn161=function(e){this.yyval=this.MODIFIER_PUBLIC},r.Parser.prototype.yyn162=function(e){this.yyval=this.MODIFIER_PROTECTED},r.Parser.prototype.yyn163=function(e){this.yyval=this.MODIFIER_PRIVATE},r.Parser.prototype.yyn164=function(e){this.yyval=this.MODIFIER_STATIC},r.Parser.prototype.yyn165=function(e){this.yyval=this.MODIFIER_ABSTRACT},r.Parser.prototype.yyn166=function(e){this.yyval=this.MODIFIER_FINAL},r.Parser.prototype.yyn167=function(e){this.yyval=[this.yyastk[this.stackPos-0]]},r.Parser.prototype.yyn168=function(e){this.yyastk[this.stackPos-2].push(this.yyastk[this.stackPos-0]),this.yyval=this.yyastk[this.stackPos-2]},r.Parser.prototype.yyn169=function(e){this.yyval=this.Node_Stmt_PropertyProperty(this.yyastk[this.stackPos-0].substring(1),null,e)},r.Parser.prototype.yyn170=function(e){this.yyval=this.Node_Stmt_PropertyProperty(this.yyastk[this.stackPos-2].substring(1),this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn171=function(e){this.yyastk[this.stackPos-2].push(this.yyastk[this.stackPos-0]),this.yyval=this.yyastk[this.stackPos-2]},r.Parser.prototype.yyn172=function(e){this.yyval=[this.yyastk[this.stackPos-0]]},r.Parser.prototype.yyn173=function(e){this.yyval=[]},r.Parser.prototype.yyn174=function(e){this.yyval=this.yyastk[this.stackPos-0]},r.Parser.prototype.yyn175=function(e){this.yyval=this.yyastk[this.stackPos-0]},r.Parser.prototype.yyn176=function(e){this.yyval=this.Node_Expr_AssignList(this.yyastk[this.stackPos-3],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn177=function(e){this.yyval=this.Node_Expr_Assign(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn178=function(e){this.yyval=this.Node_Expr_AssignRef(this.yyastk[this.stackPos-3],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn179=function(e){this.yyval=this.Node_Expr_AssignRef(this.yyastk[this.stackPos-3],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn180=function(e){this.yyval=this.yyastk[this.stackPos-0]},r.Parser.prototype.yyn181=function(e){this.yyval=this.Node_Expr_Clone(this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn182=function(e){this.yyval=this.Node_Expr_AssignPlus(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn183=function(e){this.yyval=this.Node_Expr_AssignMinus(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn184=function(e){this.yyval=this.Node_Expr_AssignMul(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn185=function(e){this.yyval=this.Node_Expr_AssignDiv(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn186=function(e){this.yyval=this.Node_Expr_AssignConcat(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn187=function(e){this.yyval=this.Node_Expr_AssignMod(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn188=function(e){this.yyval=this.Node_Expr_AssignBitwiseAnd(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn189=function(e){this.yyval=this.Node_Expr_AssignBitwiseOr(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn190=function(e){this.yyval=this.Node_Expr_AssignBitwiseXor(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn191=function(e){this.yyval=this.Node_Expr_AssignShiftLeft(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn192=function(e){this.yyval=this.Node_Expr_AssignShiftRight(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn193=function(e){this.yyval=this.Node_Expr_PostInc(this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn194=function(e){this.yyval=this.Node_Expr_PreInc(this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn195=function(e){this.yyval=this.Node_Expr_PostDec(this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn196=function(e){this.yyval=this.Node_Expr_PreDec(this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn197=function(e){this.yyval=this.Node_Expr_BooleanOr(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn198=function(e){this.yyval=this.Node_Expr_BooleanAnd(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn199=function(e){this.yyval=this.Node_Expr_LogicalOr(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn200=function(e){this.yyval=this.Node_Expr_LogicalAnd(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn201=function(e){this.yyval=this.Node_Expr_LogicalXor(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn202=function(e){this.yyval=this.Node_Expr_BitwiseOr(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn203=function(e){this.yyval=this.Node_Expr_BitwiseAnd(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn204=function(e){this.yyval=this.Node_Expr_BitwiseXor(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn205=function(e){this.yyval=this.Node_Expr_Concat(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn206=function(e){this.yyval=this.Node_Expr_Plus(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn207=function(e){this.yyval=this.Node_Expr_Minus(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn208=function(e){this.yyval=this.Node_Expr_Mul(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn209=function(e){this.yyval=this.Node_Expr_Div(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn210=function(e){this.yyval=this.Node_Expr_Mod(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn211=function(e){this.yyval=this.Node_Expr_ShiftLeft(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn212=function(e){this.yyval=this.Node_Expr_ShiftRight(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn213=function(e){this.yyval=this.Node_Expr_UnaryPlus(this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn214=function(e){this.yyval=this.Node_Expr_UnaryMinus(this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn215=function(e){this.yyval=this.Node_Expr_BooleanNot(this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn216=function(e){this.yyval=this.Node_Expr_BitwiseNot(this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn217=function(e){this.yyval=this.Node_Expr_Identical(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn218=function(e){this.yyval=this.Node_Expr_NotIdentical(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn219=function(e){this.yyval=this.Node_Expr_Equal(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn220=function(e){this.yyval=this.Node_Expr_NotEqual(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn221=function(e){this.yyval=this.Node_Expr_Smaller(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn222=function(e){this.yyval=this.Node_Expr_SmallerOrEqual(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn223=function(e){this.yyval=this.Node_Expr_Greater(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn224=function(e){this.yyval=this.Node_Expr_GreaterOrEqual(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn225=function(e){this.yyval=this.Node_Expr_Instanceof(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn226=function(e){this.yyval=this.yyastk[this.stackPos-1]},r.Parser.prototype.yyn227=function(e){this.yyval=this.yyastk[this.stackPos-1]},r.Parser.prototype.yyn228=function(e){this.yyval=this.Node_Expr_Ternary(this.yyastk[this.stackPos-4],this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn229=function(e){this.yyval=this.Node_Expr_Ternary(this.yyastk[this.stackPos-3],null,this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn230=function(e){this.yyval=this.Node_Expr_Isset(this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn231=function(e){this.yyval=this.Node_Expr_Empty(this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn232=function(e){this.yyval=this.Node_Expr_Include(this.yyastk[this.stackPos-0],\"Node_Expr_Include\",e)},r.Parser.prototype.yyn233=function(e){this.yyval=this.Node_Expr_Include(this.yyastk[this.stackPos-0],\"Node_Expr_IncludeOnce\",e)},r.Parser.prototype.yyn234=function(e){this.yyval=this.Node_Expr_Eval(this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn235=function(e){this.yyval=this.Node_Expr_Include(this.yyastk[this.stackPos-0],\"Node_Expr_Require\",e)},r.Parser.prototype.yyn236=function(e){this.yyval=this.Node_Expr_Include(this.yyastk[this.stackPos-0],\"Node_Expr_RequireOnce\",e)},r.Parser.prototype.yyn237=function(e){this.yyval=this.Node_Expr_Cast_Int(this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn238=function(e){this.yyval=this.Node_Expr_Cast_Double(this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn239=function(e){this.yyval=this.Node_Expr_Cast_String(this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn240=function(e){this.yyval=this.Node_Expr_Cast_Array(this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn241=function(e){this.yyval=this.Node_Expr_Cast_Object(this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn242=function(e){this.yyval=this.Node_Expr_Cast_Bool(this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn243=function(e){this.yyval=this.Node_Expr_Cast_Unset(this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn244=function(e){this.yyval=this.Node_Expr_Exit(this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn245=function(e){this.yyval=this.Node_Expr_ErrorSuppress(this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn246=function(e){this.yyval=this.yyastk[this.stackPos-0]},r.Parser.prototype.yyn247=function(e){this.yyval=this.Node_Expr_Array(this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn248=function(e){this.yyval=this.Node_Expr_Array(this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn249=function(e){this.yyval=this.Node_Expr_ShellExec(this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn250=function(e){this.yyval=this.Node_Expr_Print(this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn251=function(e){this.yyval=this.Node_Expr_Closure({\"static\":!1,byRef:this.yyastk[this.stackPos-7],params:this.yyastk[this.stackPos-5],uses:this.yyastk[this.stackPos-3],stmts:this.yyastk[this.stackPos-1]},e)},r.Parser.prototype.yyn252=function(e){this.yyval=this.Node_Expr_Closure({\"static\":!0,byRef:this.yyastk[this.stackPos-7],params:this.yyastk[this.stackPos-5],uses:this.yyastk[this.stackPos-3],stmts:this.yyastk[this.stackPos-1]},e)},r.Parser.prototype.yyn253=function(e){this.yyval=this.Node_Expr_New(this.yyastk[this.stackPos-1],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn254=function(e){this.yyval=[]},r.Parser.prototype.yyn255=function(e){this.yyval=this.yyastk[this.stackPos-1]},r.Parser.prototype.yyn256=function(e){this.yyval=[this.yyastk[this.stackPos-0]]},r.Parser.prototype.yyn257=function(e){this.yyastk[this.stackPos-2].push(this.yyastk[this.stackPos-0]),this.yyval=this.yyastk[this.stackPos-2]},r.Parser.prototype.yyn258=function(e){this.yyval=this.Node_Expr_ClosureUse(this.yyastk[this.stackPos-0].substring(1),this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn259=function(e){this.yyval=this.Node_Expr_FuncCall(this.yyastk[this.stackPos-3],this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn260=function(e){this.yyval=this.Node_Expr_StaticCall(this.yyastk[this.stackPos-5],this.yyastk[this.stackPos-3],this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn261=function(e){this.yyval=this.Node_Expr_StaticCall(this.yyastk[this.stackPos-7],this.yyastk[this.stackPos-4],this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn262=function(e){if(this.yyastk[this.stackPos-3].type===\"Node_Expr_StaticPropertyFetch\")this.yyval=this.Node_Expr_StaticCall(this.yyastk[this.stackPos-3].Class,this.Node_Expr_Variable(this.yyastk[this.stackPos-3].name,e),this.yyastk[this.stackPos-1],e);else{if(this.yyastk[this.stackPos-3].type!==\"Node_Expr_ArrayDimFetch\")throw new Exception;var t=this.yyastk[this.stackPos-3];while(t.variable.type===\"Node_Expr_ArrayDimFetch\")t=t.variable;this.yyval=this.Node_Expr_StaticCall(t.variable.Class,this.yyastk[this.stackPos-3],this.yyastk[this.stackPos-1],e),t.variable=this.Node_Expr_Variable(t.variable.name,e)}},r.Parser.prototype.yyn263=function(e){this.yyval=this.Node_Expr_FuncCall(this.yyastk[this.stackPos-3],this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn264=function(e){this.yyval=this.Node_Expr_ArrayDimFetch(this.yyastk[this.stackPos-3],this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn265=function(e){this.yyval=this.Node_Name(\"static\",e)},r.Parser.prototype.yyn266=function(e){this.yyval=this.yyastk[this.stackPos-0]},r.Parser.prototype.yyn267=function(e){this.yyval=this.Node_Name(this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn268=function(e){this.yyval=this.Node_Name_FullyQualified(this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn269=function(e){this.yyval=this.Node_Name_Relative(this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn270=function(e){this.yyval=this.yyastk[this.stackPos-0]},r.Parser.prototype.yyn271=function(e){this.yyval=this.yyastk[this.stackPos-0]},r.Parser.prototype.yyn272=function(e){this.yyval=this.yyastk[this.stackPos-0]},r.Parser.prototype.yyn273=function(e){this.yyval=this.yyastk[this.stackPos-0]},r.Parser.prototype.yyn274=function(e){this.yyval=this.yyastk[this.stackPos-0]},r.Parser.prototype.yyn275=function(e){this.yyval=this.yyastk[this.stackPos-0]},r.Parser.prototype.yyn276=function(){this.yyval=this.yyastk[this.stackPos]},r.Parser.prototype.yyn277=function(e){this.yyval=this.Node_Expr_PropertyFetch(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn278=function(e){this.yyval=this.Node_Expr_PropertyFetch(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn279=function(e){this.yyval=this.Node_Expr_ArrayDimFetch(this.yyastk[this.stackPos-3],this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn280=function(e){this.yyval=this.Node_Expr_ArrayDimFetch(this.yyastk[this.stackPos-3],this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn281=function(e){this.yyval=null},r.Parser.prototype.yyn282=function(e){this.yyval=null},r.Parser.prototype.yyn283=function(e){this.yyval=this.yyastk[this.stackPos-1]},r.Parser.prototype.yyn284=function(e){this.yyval=[]},r.Parser.prototype.yyn285=function(e){this.yyval=[this.Scalar_String_parseEscapeSequences(this.yyastk[this.stackPos-0],\"`\")]},r.Parser.prototype.yyn286=function(e){this.yyval=this.yyastk[this.stackPos-0]},r.Parser.prototype.yyn287=function(e){this.yyval=[]},r.Parser.prototype.yyn288=function(e){this.yyval=this.yyastk[this.stackPos-1]},r.Parser.prototype.yyn289=function(e){this.yyval=this.Node_Scalar_LNumber(this.Scalar_LNumber_parse(this.yyastk[this.stackPos-0]),e)},r.Parser.prototype.yyn290=function(e){this.yyval=this.Node_Scalar_DNumber(this.Scalar_DNumber_parse(this.yyastk[this.stackPos-0]),e)},r.Parser.prototype.yyn291=function(e){this.yyval=this.Scalar_String_create(this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn292=function(e){this.yyval={type:\"Node_Scalar_LineConst\",attributes:e}},r.Parser.prototype.yyn293=function(e){this.yyval={type:\"Node_Scalar_FileConst\",attributes:e}},r.Parser.prototype.yyn294=function(e){this.yyval={type:\"Node_Scalar_DirConst\",attributes:e}},r.Parser.prototype.yyn295=function(e){this.yyval={type:\"Node_Scalar_ClassConst\",attributes:e}},r.Parser.prototype.yyn296=function(e){this.yyval={type:\"Node_Scalar_TraitConst\",attributes:e}},r.Parser.prototype.yyn297=function(e){this.yyval={type:\"Node_Scalar_MethodConst\",attributes:e}},r.Parser.prototype.yyn298=function(e){this.yyval={type:\"Node_Scalar_FuncConst\",attributes:e}},r.Parser.prototype.yyn299=function(e){this.yyval={type:\"Node_Scalar_NSConst\",attributes:e}},r.Parser.prototype.yyn300=function(e){this.yyval=this.Node_Scalar_String(this.Scalar_String_parseDocString(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-1]),e)},r.Parser.prototype.yyn301=function(e){this.yyval=this.Node_Scalar_String(\"\",e)},r.Parser.prototype.yyn302=function(e){this.yyval=this.Node_Expr_ConstFetch(this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn303=function(e){this.yyval=this.yyastk[this.stackPos-0]},r.Parser.prototype.yyn304=function(e){this.yyval=this.Node_Expr_ClassConstFetch(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn305=function(e){this.yyval=this.Node_Expr_UnaryPlus(this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn306=function(e){this.yyval=this.Node_Expr_UnaryMinus(this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn307=function(e){this.yyval=this.Node_Expr_Array(this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn308=function(e){this.yyval=this.Node_Expr_Array(this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn309=function(e){this.yyval=this.yyastk[this.stackPos-0]},r.Parser.prototype.yyn310=function(e){this.yyval=this.Node_Expr_ClassConstFetch(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn311=function(e){this.yyval=this.Node_Scalar_Encapsed(this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn312=function(e){this.yyval=this.Node_Scalar_Encapsed(this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn313=function(e){this.yyval=[]},r.Parser.prototype.yyn314=function(e){this.yyval=this.yyastk[this.stackPos-1]},r.Parser.prototype.yyn315=function(){this.yyval=this.yyastk[this.stackPos]},r.Parser.prototype.yyn316=function(){this.yyval=this.yyastk[this.stackPos]},r.Parser.prototype.yyn317=function(e){this.yyastk[this.stackPos-2].push(this.yyastk[this.stackPos-0]),this.yyval=this.yyastk[this.stackPos-2]},r.Parser.prototype.yyn318=function(e){this.yyval=[this.yyastk[this.stackPos-0]]},r.Parser.prototype.yyn319=function(e){this.yyval=this.Node_Expr_ArrayItem(this.yyastk[this.stackPos-0],this.yyastk[this.stackPos-2],!1,e)},r.Parser.prototype.yyn320=function(e){this.yyval=this.Node_Expr_ArrayItem(this.yyastk[this.stackPos-0],null,!1,e)},r.Parser.prototype.yyn321=function(e){this.yyval=this.yyastk[this.stackPos-0]},r.Parser.prototype.yyn322=function(e){this.yyval=this.yyastk[this.stackPos-0]},r.Parser.prototype.yyn323=function(e){this.yyval=this.yyastk[this.stackPos-0]},r.Parser.prototype.yyn324=function(e){this.yyval=this.yyastk[this.stackPos-0]},r.Parser.prototype.yyn325=function(e){this.yyval=this.Node_Expr_ArrayDimFetch(this.yyastk[this.stackPos-4],this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn326=function(e){this.yyval=this.Node_Expr_ArrayDimFetch(this.yyastk[this.stackPos-3],this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn327=function(e){this.yyval=this.Node_Expr_PropertyFetch(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn328=function(e){this.yyval=this.Node_Expr_MethodCall(this.yyastk[this.stackPos-5],this.yyastk[this.stackPos-3],this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn329=function(e){this.yyval=this.Node_Expr_FuncCall(this.yyastk[this.stackPos-3],this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn330=function(e){this.yyval=this.Node_Expr_ArrayDimFetch(this.yyastk[this.stackPos-3],this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn331=function(e){this.yyval=this.Node_Expr_ArrayDimFetch(this.yyastk[this.stackPos-3],this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn332=function(e){this.yyval=this.yyastk[this.stackPos-0]},r.Parser.prototype.yyn333=function(e){this.yyval=this.yyastk[this.stackPos-1]},r.Parser.prototype.yyn334=function(e){this.yyval=this.yyastk[this.stackPos-0]},r.Parser.prototype.yyn335=function(e){this.yyval=this.Node_Expr_Variable(this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn336=function(e){this.yyval=this.yyastk[this.stackPos-0]},r.Parser.prototype.yyn337=function(e){this.yyval=this.yyastk[this.stackPos-0]},r.Parser.prototype.yyn338=function(e){this.yyval=this.Node_Expr_StaticPropertyFetch(this.yyastk[this.stackPos-3],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn339=function(e){this.yyval=this.yyastk[this.stackPos-0]},r.Parser.prototype.yyn340=function(e){this.yyval=this.Node_Expr_StaticPropertyFetch(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0].substring(1),e)},r.Parser.prototype.yyn341=function(e){this.yyval=this.Node_Expr_StaticPropertyFetch(this.yyastk[this.stackPos-5],this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn342=function(e){this.yyval=this.Node_Expr_ArrayDimFetch(this.yyastk[this.stackPos-3],this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn343=function(e){this.yyval=this.Node_Expr_ArrayDimFetch(this.yyastk[this.stackPos-3],this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn344=function(e){this.yyval=this.Node_Expr_ArrayDimFetch(this.yyastk[this.stackPos-3],this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn345=function(e){this.yyval=this.Node_Expr_ArrayDimFetch(this.yyastk[this.stackPos-3],this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn346=function(e){this.yyval=this.Node_Expr_Variable(this.yyastk[this.stackPos-0].substring(1),e)},r.Parser.prototype.yyn347=function(e){this.yyval=this.Node_Expr_Variable(this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn348=function(e){this.yyval=null},r.Parser.prototype.yyn349=function(e){this.yyval=this.yyastk[this.stackPos-0]},r.Parser.prototype.yyn350=function(e){this.yyval=this.yyastk[this.stackPos-0]},r.Parser.prototype.yyn351=function(e){this.yyval=this.yyastk[this.stackPos-1]},r.Parser.prototype.yyn352=function(e){this.yyval=this.yyastk[this.stackPos-0]},r.Parser.prototype.yyn353=function(e){this.yyastk[this.stackPos-2].push(this.yyastk[this.stackPos-0]),this.yyval=this.yyastk[this.stackPos-2]},r.Parser.prototype.yyn354=function(e){this.yyval=[this.yyastk[this.stackPos-0]]},r.Parser.prototype.yyn355=function(e){this.yyval=this.yyastk[this.stackPos-0]},r.Parser.prototype.yyn356=function(e){this.yyval=this.yyastk[this.stackPos-1]},r.Parser.prototype.yyn357=function(e){this.yyval=null},r.Parser.prototype.yyn358=function(e){this.yyval=[]},r.Parser.prototype.yyn359=function(e){this.yyval=this.yyastk[this.stackPos-1]},r.Parser.prototype.yyn360=function(e){this.yyastk[this.stackPos-2].push(this.yyastk[this.stackPos-0]),this.yyval=this.yyastk[this.stackPos-2]},r.Parser.prototype.yyn361=function(e){this.yyval=[this.yyastk[this.stackPos-0]]},r.Parser.prototype.yyn362=function(e){this.yyval=this.Node_Expr_ArrayItem(this.yyastk[this.stackPos-0],this.yyastk[this.stackPos-2],!1,e)},r.Parser.prototype.yyn363=function(e){this.yyval=this.Node_Expr_ArrayItem(this.yyastk[this.stackPos-0],null,!1,e)},r.Parser.prototype.yyn364=function(e){this.yyval=this.Node_Expr_ArrayItem(this.yyastk[this.stackPos-0],this.yyastk[this.stackPos-3],!0,e)},r.Parser.prototype.yyn365=function(e){this.yyval=this.Node_Expr_ArrayItem(this.yyastk[this.stackPos-0],null,!0,e)},r.Parser.prototype.yyn366=function(e){this.yyastk[this.stackPos-1].push(this.yyastk[this.stackPos-0]),this.yyval=this.yyastk[this.stackPos-1]},r.Parser.prototype.yyn367=function(e){this.yyastk[this.stackPos-1].push(this.yyastk[this.stackPos-0]),this.yyval=this.yyastk[this.stackPos-1]},r.Parser.prototype.yyn368=function(e){this.yyval=[this.yyastk[this.stackPos-0]]},r.Parser.prototype.yyn369=function(e){this.yyval=[this.yyastk[this.stackPos-1],this.yyastk[this.stackPos-0]]},r.Parser.prototype.yyn370=function(e){this.yyval=this.Node_Expr_Variable(this.yyastk[this.stackPos-0].substring(1),e)},r.Parser.prototype.yyn371=function(e){this.yyval=this.Node_Expr_ArrayDimFetch(this.Node_Expr_Variable(this.yyastk[this.stackPos-3].substring(1),e),this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn372=function(e){this.yyval=this.Node_Expr_PropertyFetch(this.Node_Expr_Variable(this.yyastk[this.stackPos-2].substring(1),e),this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn373=function(e){this.yyval=this.Node_Expr_Variable(this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn374=function(e){this.yyval=this.Node_Expr_Variable(this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn375=function(e){this.yyval=this.Node_Expr_ArrayDimFetch(this.Node_Expr_Variable(this.yyastk[this.stackPos-4],e),this.yyastk[this.stackPos-2],e)},r.Parser.prototype.yyn376=function(e){this.yyval=this.yyastk[this.stackPos-1]},r.Parser.prototype.yyn377=function(e){this.yyval=this.Node_Scalar_String(this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn378=function(e){this.yyval=this.Node_Scalar_String(this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn379=function(e){this.yyval=this.Node_Expr_Variable(this.yyastk[this.stackPos-0].substring(1),e)},r.Parser.prototype.Stmt_Namespace_postprocess=function(e){return e},r.Parser.prototype.Node_Stmt_Echo=function(){return{type:\"Node_Stmt_Echo\",exprs:arguments[0],attributes:arguments[1]}},r.Parser.prototype.Node_Stmt_If=function(){return{type:\"Node_Stmt_If\",cond:arguments[0],stmts:arguments[1].stmts,elseifs:arguments[1].elseifs,Else:arguments[1].Else||null,attributes:arguments[2]}},r.Parser.prototype.Node_Stmt_For=function(){return{type:\"Node_Stmt_For\",init:arguments[0].init,cond:arguments[0].cond,loop:arguments[0].loop,stmts:arguments[0].stmts,attributes:arguments[1]}},r.Parser.prototype.Node_Stmt_Function=function(){return{type:\"Node_Stmt_Function\",name:arguments[0],byRef:arguments[1].byRef,params:arguments[1].params,stmts:arguments[1].stmts,attributes:arguments[2]}},r.Parser.prototype.Stmt_Class_verifyModifier=function(){},r.Parser.prototype.Node_Stmt_Class=function(){return{type:\"Node_Stmt_Class\",name:arguments[0],Type:arguments[1].type,Extends:arguments[1].Extends,Implements:arguments[1].Implements,stmts:arguments[1].stmts,attributes:arguments[2]}},r.Parser.prototype.Node_Stmt_ClassMethod=function(){return{type:\"Node_Stmt_ClassMethod\",name:arguments[0],Type:arguments[1].type,byRef:arguments[1].byRef,params:arguments[1].params,stmts:arguments[1].stmts,attributes:arguments[2]}},r.Parser.prototype.Node_Stmt_ClassConst=function(){return{type:\"Node_Stmt_ClassConst\",consts:arguments[0],attributes:arguments[1]}},r.Parser.prototype.Node_Stmt_Interface=function(){return{type:\"Node_Stmt_Interface\",name:arguments[0],Extends:arguments[1].Extends,stmts:arguments[1].stmts,attributes:arguments[2]}},r.Parser.prototype.Node_Stmt_Throw=function(){return{type:\"Node_Stmt_Throw\",expr:arguments[0],attributes:arguments[1]}},r.Parser.prototype.Node_Stmt_Catch=function(){return{type:\"Node_Stmt_Catch\",Type:arguments[0],variable:arguments[1],stmts:arguments[2],attributes:arguments[3]}},r.Parser.prototype.Node_Stmt_TryCatch=function(){return{type:\"Node_Stmt_TryCatch\",stmts:arguments[0],catches:arguments[1],attributes:arguments[2]}},r.Parser.prototype.Node_Stmt_Foreach=function(){return{type:\"Node_Stmt_Foreach\",expr:arguments[0],valueVar:arguments[1],keyVar:arguments[2].keyVar,byRef:arguments[2].byRef,stmts:arguments[2].stmts,attributes:arguments[3]}},r.Parser.prototype.Node_Stmt_While=function(){return{type:\"Node_Stmt_While\",cond:arguments[0],stmts:arguments[1],attributes:arguments[2]}},r.Parser.prototype.Node_Stmt_Do=function(){return{type:\"Node_Stmt_Do\",cond:arguments[0],stmts:arguments[1],attributes:arguments[2]}},r.Parser.prototype.Node_Stmt_Break=function(){return{type:\"Node_Stmt_Break\",num:arguments[0],attributes:arguments[1]}},r.Parser.prototype.Node_Stmt_Continue=function(){return{type:\"Node_Stmt_Continue\",num:arguments[0],attributes:arguments[1]}},r.Parser.prototype.Node_Stmt_Return=function(){return{type:\"Node_Stmt_Return\",expr:arguments[0],attributes:arguments[1]}},r.Parser.prototype.Node_Stmt_Case=function(){return{type:\"Node_Stmt_Case\",cond:arguments[0],stmts:arguments[1],attributes:arguments[2]}},r.Parser.prototype.Node_Stmt_Switch=function(){return{type:\"Node_Stmt_Switch\",cond:arguments[0],cases:arguments[1],attributes:arguments[2]}},r.Parser.prototype.Node_Stmt_Else=function(){return{type:\"Node_Stmt_Else\",stmts:arguments[0],attributes:arguments[1]}},r.Parser.prototype.Node_Stmt_ElseIf=function(){return{type:\"Node_Stmt_ElseIf\",cond:arguments[0],stmts:arguments[1],attributes:arguments[1]}},r.Parser.prototype.Node_Stmt_InlineHTML=function(){return{type:\"Node_Stmt_InlineHTML\",value:arguments[0],attributes:arguments[1]}},r.Parser.prototype.Node_Stmt_StaticVar=function(){return{type:\"Node_Stmt_StaticVar\",name:arguments[0],def:arguments[1],attributes:arguments[2]}},r.Parser.prototype.Node_Stmt_Static=function(){return{type:\"Node_Stmt_Static\",vars:arguments[0],attributes:arguments[1]}},r.Parser.prototype.Node_Stmt_Global=function(){return{type:\"Node_Stmt_Global\",vars:arguments[0],attributes:arguments[1]}},r.Parser.prototype.Node_Stmt_PropertyProperty=function(){return{type:\"Node_Stmt_PropertyProperty\",name:arguments[0],def:arguments[1],attributes:arguments[2]}},r.Parser.prototype.Node_Stmt_Property=function(){return{type:\"Node_Stmt_Property\",Type:arguments[0],props:arguments[1],attributes:arguments[2]}},r.Parser.prototype.Node_Stmt_Unset=function(){return{type:\"Node_Stmt_Unset\",variables:arguments[0],attributes:arguments[1]}},r.Parser.prototype.Node_Expr_Variable=function(e){return{type:\"Node_Expr_Variable\",name:arguments[0],attributes:arguments[1]}},r.Parser.prototype.Node_Expr_FuncCall=function(){return{type:\"Node_Expr_FuncCall\",func:arguments[0],args:arguments[1],attributes:arguments[2]}},r.Parser.prototype.Node_Expr_MethodCall=function(){return{type:\"Node_Expr_MethodCall\",variable:arguments[0],name:arguments[1],args:arguments[2],attributes:arguments[3]}},r.Parser.prototype.Node_Expr_StaticCall=function(){return{type:\"Node_Expr_StaticCall\",Class:arguments[0],func:arguments[1],args:arguments[2],attributes:arguments[3]}},r.Parser.prototype.Node_Expr_Ternary=function(){return{type:\"Node_Expr_Ternary\",cond:arguments[0],If:arguments[1],Else:arguments[2],attributes:arguments[3]}},r.Parser.prototype.Node_Expr_AssignList=function(){return{type:\"Node_Expr_AssignList\",assignList:arguments[0],expr:arguments[1],attributes:arguments[2]}},r.Parser.prototype.Node_Expr_Assign=function(){return{type:\"Node_Expr_Assign\",variable:arguments[0],expr:arguments[1],attributes:arguments[2]}},r.Parser.prototype.Node_Expr_AssignConcat=function(){return{type:\"Node_Expr_AssignConcat\",variable:arguments[0],expr:arguments[1],attributes:arguments[2]}},r.Parser.prototype.Node_Expr_AssignMinus=function(){return{type:\"Node_Expr_AssignMinus\",variable:arguments[0],expr:arguments[1],attributes:arguments[2]}},r.Parser.prototype.Node_Expr_AssignPlus=function(){return{type:\"Node_Expr_AssignPlus\",variable:arguments[0],expr:arguments[1],attributes:arguments[2]}},r.Parser.prototype.Node_Expr_AssignDiv=function(){return{type:\"Node_Expr_AssignDiv\",variable:arguments[0],expr:arguments[1],attributes:arguments[2]}},r.Parser.prototype.Node_Expr_AssignRef=function(){return{type:\"Node_Expr_AssignRef\",variable:arguments[0],refVar:arguments[1],attributes:arguments[2]}},r.Parser.prototype.Node_Expr_AssignMul=function(){return{type:\"Node_Expr_AssignMul\",variable:arguments[0],expr:arguments[1],attributes:arguments[2]}},r.Parser.prototype.Node_Expr_AssignMod=function(){return{type:\"Node_Expr_AssignMod\",variable:arguments[0],expr:arguments[1],attributes:arguments[2]}},r.Parser.prototype.Node_Expr_Plus=function(){return{type:\"Node_Expr_Plus\",left:arguments[0],right:arguments[1],attributes:arguments[2]}},r.Parser.prototype.Node_Expr_Minus=function(){return{type:\"Node_Expr_Minus\",left:arguments[0],right:arguments[1],attributes:arguments[2]}},r.Parser.prototype.Node_Expr_Mul=function(){return{type:\"Node_Expr_Mul\",left:arguments[0],right:arguments[1],attributes:arguments[2]}},r.Parser.prototype.Node_Expr_Div=function(){return{type:\"Node_Expr_Div\",left:arguments[0],right:arguments[1],attributes:arguments[2]}},r.Parser.prototype.Node_Expr_Mod=function(){return{type:\"Node_Expr_Mod\",left:arguments[0],right:arguments[1],attributes:arguments[2]}},r.Parser.prototype.Node_Expr_Greater=function(){return{type:\"Node_Expr_Greater\",left:arguments[0],right:arguments[1],attributes:arguments[2]}},r.Parser.prototype.Node_Expr_Equal=function(){return{type:\"Node_Expr_Equal\",left:arguments[0],right:arguments[1],attributes:arguments[2]}},r.Parser.prototype.Node_Expr_NotEqual=function(){return{type:\"Node_Expr_NotEqual\",left:arguments[0],right:arguments[1],attributes:arguments[2]}},r.Parser.prototype.Node_Expr_Identical=function(){return{type:\"Node_Expr_Identical\",left:arguments[0],right:arguments[1],attributes:arguments[2]}},r.Parser.prototype.Node_Expr_NotIdentical=function(){return{type:\"Node_Expr_NotIdentical\",left:arguments[0],right:arguments[1],attributes:arguments[2]}},r.Parser.prototype.Node_Expr_GreaterOrEqual=function(){return{type:\"Node_Expr_GreaterOrEqual\",left:arguments[0],right:arguments[1],attributes:arguments[2]}},r.Parser.prototype.Node_Expr_SmallerOrEqual=function(){return{type:\"Node_Expr_SmallerOrEqual\",left:arguments[0],right:arguments[1],attributes:arguments[2]}},r.Parser.prototype.Node_Expr_Concat=function(){return{type:\"Node_Expr_Concat\",left:arguments[0],right:arguments[1],attributes:arguments[2]}},r.Parser.prototype.Node_Expr_Smaller=function(){return{type:\"Node_Expr_Smaller\",left:arguments[0],right:arguments[1],attributes:arguments[2]}},r.Parser.prototype.Node_Expr_PostInc=function(){return{type:\"Node_Expr_PostInc\",variable:arguments[0],attributes:arguments[1]}},r.Parser.prototype.Node_Expr_PostDec=function(){return{type:\"Node_Expr_PostDec\",variable:arguments[0],attributes:arguments[1]}},r.Parser.prototype.Node_Expr_PreInc=function(){return{type:\"Node_Expr_PreInc\",variable:arguments[0],attributes:arguments[1]}},r.Parser.prototype.Node_Expr_PreDec=function(){return{type:\"Node_Expr_PreDec\",variable:arguments[0],attributes:arguments[1]}},r.Parser.prototype.Node_Expr_Include=function(){return{expr:arguments[0],type:arguments[1],attributes:arguments[2]}},r.Parser.prototype.Node_Expr_ArrayDimFetch=function(){return{type:\"Node_Expr_ArrayDimFetch\",variable:arguments[0],dim:arguments[1],attributes:arguments[2]}},r.Parser.prototype.Node_Expr_StaticPropertyFetch=function(){return{type:\"Node_Expr_StaticPropertyFetch\",Class:arguments[0],name:arguments[1],attributes:arguments[2]}},r.Parser.prototype.Node_Expr_ClassConstFetch=function(){return{type:\"Node_Expr_ClassConstFetch\",Class:arguments[0],name:arguments[1],attributes:arguments[2]}},r.Parser.prototype.Node_Expr_StaticPropertyFetch=function(){return{type:\"Node_Expr_StaticPropertyFetch\",Class:arguments[0],name:arguments[1],attributes:arguments[2]}},r.Parser.prototype.Node_Expr_ConstFetch=function(){return{type:\"Node_Expr_ConstFetch\",name:arguments[0],attributes:arguments[1]}},r.Parser.prototype.Node_Expr_ArrayItem=function(){return{type:\"Node_Expr_ArrayItem\",value:arguments[0],key:arguments[1],byRef:arguments[2],attributes:arguments[3]}},r.Parser.prototype.Node_Expr_Array=function(){return{type:\"Node_Expr_Array\",items:arguments[0],attributes:arguments[1]}},r.Parser.prototype.Node_Expr_PropertyFetch=function(){return{type:\"Node_Expr_PropertyFetch\",variable:arguments[0],name:arguments[1],attributes:arguments[2]}},r.Parser.prototype.Node_Expr_New=function(){return{type:\"Node_Expr_New\",Class:arguments[0],args:arguments[1],attributes:arguments[2]}},r.Parser.prototype.Node_Expr_Print=function(){return{type:\"Node_Expr_Print\",expr:arguments[0],attributes:arguments[1]}},r.Parser.prototype.Node_Expr_Exit=function(){return{type:\"Node_Expr_Exit\",expr:arguments[0],attributes:arguments[1]}},r.Parser.prototype.Node_Expr_Cast_Bool=function(){return{type:\"Node_Expr_Cast_Bool\",expr:arguments[0],attributes:arguments[1]}},r.Parser.prototype.Node_Expr_Cast_Int=function(){return{type:\"Node_Expr_Cast_Int\",expr:arguments[0],attributes:arguments[1]}},r.Parser.prototype.Node_Expr_Cast_String=function(){return{type:\"Node_Expr_Cast_String\",expr:arguments[0],attributes:arguments[1]}},r.Parser.prototype.Node_Expr_Cast_Double=function(){return{type:\"Node_Expr_Cast_Double\",expr:arguments[0],attributes:arguments[1]}},r.Parser.prototype.Node_Expr_Cast_Array=function(){return{type:\"Node_Expr_Cast_Array\",expr:arguments[0],attributes:arguments[1]}},r.Parser.prototype.Node_Expr_Cast_Object=function(){return{type:\"Node_Expr_Cast_Object\",expr:arguments[0],attributes:arguments[1]}},r.Parser.prototype.Node_Expr_ErrorSuppress=function(){return{type:\"Node_Expr_ErrorSuppress\",expr:arguments[0],attributes:arguments[1]}},r.Parser.prototype.Node_Expr_Isset=function(){return{type:\"Node_Expr_Isset\",variables:arguments[0],attributes:arguments[1]}},r.Parser.prototype.Node_Expr_UnaryMinus=function(){return{type:\"Node_Expr_UnaryMinus\",expr:arguments[0],attributes:arguments[1]}},r.Parser.prototype.Node_Expr_UnaryPlus=function(){return{type:\"Node_Expr_UnaryPlus\",expr:arguments[0],attributes:arguments[1]}},r.Parser.prototype.Node_Expr_Empty=function(){return{type:\"Node_Expr_Empty\",variable:arguments[0],attributes:arguments[1]}},r.Parser.prototype.Node_Expr_BooleanOr=function(){return{type:\"Node_Expr_BooleanOr\",left:arguments[0],right:arguments[1],attributes:arguments[2]}},r.Parser.prototype.Node_Expr_LogicalOr=function(){return{type:\"Node_Expr_LogicalOr\",left:arguments[0],right:arguments[1],attributes:arguments[2]}},r.Parser.prototype.Node_Expr_LogicalAnd=function(){return{type:\"Node_Expr_LogicalAnd\",left:arguments[0],right:arguments[1],attributes:arguments[2]}},r.Parser.prototype.Node_Expr_LogicalXor=function(){return{type:\"Node_Expr_LogicalXor\",left:arguments[0],right:arguments[1],attributes:arguments[2]}},r.Parser.prototype.Node_Expr_BitwiseAnd=function(){return{type:\"Node_Expr_BitwiseAnd\",left:arguments[0],right:arguments[1],attributes:arguments[2]}},r.Parser.prototype.Node_Expr_BitwiseOr=function(){return{type:\"Node_Expr_BitwiseOr\",left:arguments[0],right:arguments[1],attributes:arguments[2]}},r.Parser.prototype.Node_Expr_BitwiseNot=function(){return{type:\"Node_Expr_BitwiseNot\",expr:arguments[0],attributes:arguments[1]}},r.Parser.prototype.Node_Expr_BooleanNot=function(){return{type:\"Node_Expr_BooleanNot\",expr:arguments[0],attributes:arguments[1]}},r.Parser.prototype.Node_Expr_BooleanAnd=function(){return{type:\"Node_Expr_BooleanAnd\",left:arguments[0],right:arguments[1],attributes:arguments[2]}},r.Parser.prototype.Node_Expr_Instanceof=function(){return{type:\"Node_Expr_Instanceof\",left:arguments[0],right:arguments[1],attributes:arguments[2]}},r.Parser.prototype.Node_Expr_Clone=function(){return{type:\"Node_Expr_Clone\",expr:arguments[0],attributes:arguments[1]}},r.Parser.prototype.Scalar_LNumber_parse=function(e){return e},r.Parser.prototype.Scalar_DNumber_parse=function(e){return e},r.Parser.prototype.Scalar_String_parseDocString=function(){return'\"'+arguments[1].replace(/([^\"\\\\]*(?:\\\\.[^\"\\\\]*)*)\"/g,'$1\\\\\"')+'\"'},r.Parser.prototype.Node_Scalar_String=function(){return{type:\"Node_Scalar_String\",value:arguments[0],attributes:arguments[1]}},r.Parser.prototype.Scalar_String_create=function(){return{type:\"Node_Scalar_String\",value:arguments[0],attributes:arguments[1]}},r.Parser.prototype.Node_Scalar_LNumber=function(){return{type:\"Node_Scalar_LNumber\",value:arguments[0],attributes:arguments[1]}},r.Parser.prototype.Node_Scalar_DNumber=function(){return{type:\"Node_Scalar_DNumber\",value:arguments[0],attributes:arguments[1]}},r.Parser.prototype.Node_Scalar_Encapsed=function(){return{type:\"Node_Scalar_Encapsed\",parts:arguments[0],attributes:arguments[1]}},r.Parser.prototype.Node_Name=function(){return{type:\"Node_Name\",parts:arguments[0],attributes:arguments[1]}},r.Parser.prototype.Node_Param=function(){return{type:\"Node_Param\",name:arguments[0],def:arguments[1],Type:arguments[2],byRef:arguments[3],attributes:arguments[4]}},r.Parser.prototype.Node_Arg=function(){return{type:\"Node_Name\",value:arguments[0],byRef:arguments[1],attributes:arguments[2]}},r.Parser.prototype.Node_Const=function(){return{type:\"Node_Const\",name:arguments[0],value:arguments[1],attributes:arguments[2]}},t.PHP=r})"
  },
  {
    "path": "public/js/vendor/bootstrap-colorpicker.js",
    "content": "/* =========================================================\n * bootstrap-colorpicker.js \n * http://www.eyecon.ro/bootstrap-colorpicker\n * =========================================================\n * Copyright 2012 Stefan Petre\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * ========================================================= */\n\n!function($) {\n\n    // Color object\n\n    var Color = function(val) {\n        this.value = {\n            h: 1,\n            s: 1,\n            b: 1,\n            a: 1\n        };\n        this.setColor(val);\n    };\n\n    Color.prototype = {\n        constructor: Color,\n\n        //parse a string to HSB\n        setColor: function(val) {\n            val = val.toLowerCase();\n            var that = this;\n            $.each(CPGlobal.stringParsers, function(i, parser) {\n                var match = parser.re.exec(val),\n                    values = match && parser.parse(match),\n                    space = parser.space || 'rgba';\n                if (values) {\n                    if (space === 'hsla') {\n                        that.value = CPGlobal.RGBtoHSB.apply(null, CPGlobal.HSLtoRGB.apply(null, values));\n                    } else {\n                        that.value = CPGlobal.RGBtoHSB.apply(null, values);\n                    }\n                    return false;\n                }\n                return true;\n            });\n        },\n\n        setHue: function(h) {\n            this.value.h = 1 - h;\n        },\n\n        setSaturation: function(s) {\n            this.value.s = s;\n        },\n\n        setLightness: function(b) {\n            this.value.b = 1 - b;\n        },\n\n        setAlpha: function(a) {\n            this.value.a = parseInt((1 - a) * 100, 10) / 100;\n        },\n\n        // HSBtoRGB from RaphaelJS\n        // https://github.com/DmitryBaranovskiy/raphael/\n        toRGB: function(h, s, b, a) {\n            if (!h) {\n                h = this.value.h;\n                s = this.value.s;\n                b = this.value.b;\n            }\n            h *= 360;\n            var R, G, B, X, C;\n            h = (h % 360) / 60;\n            C = b * s;\n            X = C * (1 - Math.abs(h % 2 - 1));\n            R = G = B = b - C;\n\n            h = ~~h;\n            R += [C, X, 0, 0, X, C][h];\n            G += [X, C, C, X, 0, 0][h];\n            B += [0, 0, X, C, C, X][h];\n            return {\n                r: Math.round(R * 255),\n                g: Math.round(G * 255),\n                b: Math.round(B * 255),\n                a: a || this.value.a\n            };\n        },\n\n        toHex: function(h, s, b, a) {\n            var rgb = this.toRGB(h, s, b, a);\n            return '#' + ((1 << 24) | (parseInt(rgb.r) << 16) | (parseInt(rgb.g) << 8) | parseInt(rgb.b)).toString(16).substr(1);\n        },\n\n        toHSL: function(h, s, b, a) {\n            if (!h) {\n                h = this.value.h;\n                s = this.value.s;\n                b = this.value.b;\n            }\n            var H = h,\n                L = (2 - s) * b,\n                S = s * b;\n            if (L > 0 && L <= 1) {\n                S /= L;\n            } else {\n                S /= 2 - L;\n            }\n            L /= 2;\n            if (S > 1) {\n                S = 1;\n            }\n            return {\n                h: H,\n                s: S,\n                l: L,\n                a: a || this.value.a\n            };\n        }\n    };\n\n    // Picker object\n\n    var Colorpicker = function(element, options) {\n        this.element = $(element);\n        var format = options.format || this.element.data('color-format') || 'hex';\n        this.format = CPGlobal.translateFormats[format];\n        this.isInput = this.element.is('input');\n        this.component = this.element.is('.color') ? this.element.find('.add-on') : false;\n\n        this.picker = $(CPGlobal.template)\n            .appendTo('body')\n            .on('mousedown', $.proxy(this.mousedown, this));\n\n        if (this.isInput) {\n            this.element.on({\n                'focus': $.proxy(this.show, this),\n                'keyup': $.proxy(this.update, this)\n            });\n        } else if (this.component) {\n            this.component.on({\n                'click': $.proxy(this.show, this)\n            });\n        } else {\n            this.element.on({\n                'click': $.proxy(this.show, this)\n            });\n        }\n        if (format === 'rgba' || format === 'hsla') {\n            this.picker.addClass('alpha');\n            this.alpha = this.picker.find('.colorpicker-alpha')[0].style;\n        }\n\n        if (this.component) {\n            this.picker.find('.colorpicker-color').hide();\n            this.preview = this.element.find('i')[0].style;\n        } else {\n            this.preview = this.picker.find('div:last')[0].style;\n        }\n\n        this.base = this.picker.find('div:first')[0].style;\n        this.update();\n    };\n\n    Colorpicker.prototype = {\n        constructor: Colorpicker,\n\n        show: function(e) {\n            this.picker.show();\n            this.height = this.component ? this.component.outerHeight() : this.element.outerHeight();\n            this.place();\n            $(window).on('resize', $.proxy(this.place, this));\n            if (!this.isInput) {\n                if (e) {\n                    e.stopPropagation();\n                    e.preventDefault();\n                }\n            }\n            $(document).on({\n                'mousedown': $.proxy(this.hide, this)\n            });\n            this.element.trigger({\n                type: 'show',\n                color: this.color\n            });\n        },\n\n        update: function() {\n            var color = this.isInput ? this.element.prop('value') : this.element.data('color');\n            if (typeof color === \"undefined\" || color === null) {\n                color = '#ffffff';\n            }\n            this.color = new Color(color);\n            this.picker.find('i')\n                .eq(0).css({left: this.color.value.s * 100, top: 100 - this.color.value.b * 100}).end()\n                .eq(1).css('top', 100 * (1 - this.color.value.h)).end()\n                .eq(2).css('top', 100 * (1 - this.color.value.a));\n            this.previewColor();\n        },\n\n        hide: function() {\n            this.picker.hide();\n            $(window).off('resize', this.place);\n            if (!this.isInput) {\n                $(document).off({\n                    'mousedown': this.hide\n                });\n                if (this.component) {\n                    this.element.find('input').prop('value', this.format.call(this));\n                }\n                this.element.data('color', this.format.call(this));\n            } else {\n                //if the input value is empty, do not set any color\n                if (this.element.val() != '') {\n                    this.element.prop('value', this.format.call(this));\n                }\n            }\n            this.element.trigger({\n                type: 'hide',\n                color: this.color\n            });\n        },\n\n        place: function() {\n            var offset = this.component ? this.component.offset() : this.element.offset();\n            this.picker.css({\n                top: offset.top + this.height,\n                left: offset.left\n            });\n        },\n\n        //preview color change\n        previewColor: function() {\n            try {\n                this.preview.backgroundColor = this.format.call(this);\n            } catch (e) {\n                this.preview.backgroundColor = this.color.toHex();\n            }\n            //set the color for brightness/saturation slider\n            this.base.backgroundColor = this.color.toHex(this.color.value.h, 1, 1, 1);\n            //set te color for alpha slider\n            if (this.alpha) {\n                this.alpha.backgroundColor = this.color.toHex();\n            }\n        },\n\n        pointer: null,\n\n        slider: null,\n\n        mousedown: function(e) {\n            e.stopPropagation();\n            e.preventDefault();\n\n            var target = $(e.target);\n\n            //detect the slider and set the limits and callbacks\n            var zone = target.closest('div');\n            if (!zone.is('.colorpicker')) {\n                if (zone.is('.colorpicker-saturation')) {\n                    this.slider = $.extend({}, CPGlobal.sliders.saturation);\n                }\n                else if (zone.is('.colorpicker-hue')) {\n                    this.slider = $.extend({}, CPGlobal.sliders.hue);\n                }\n                else if (zone.is('.colorpicker-alpha')) {\n                    this.slider = $.extend({}, CPGlobal.sliders.alpha);\n                } else {\n                    return false;\n                }\n                var offset = zone.offset();\n                //reference to knob's style\n                this.slider.knob = zone.find('i')[0].style;\n                this.slider.left = e.pageX - offset.left;\n                this.slider.top = e.pageY - offset.top;\n                this.pointer = {\n                    left: e.pageX,\n                    top: e.pageY\n                };\n                //trigger mousemove to move the knob to the current position\n                $(document).on({\n                    mousemove: $.proxy(this.mousemove, this),\n                    mouseup: $.proxy(this.mouseup, this)\n                }).trigger('mousemove');\n            }\n            return false;\n        },\n\n        mousemove: function(e) {\n            e.stopPropagation();\n            e.preventDefault();\n            var left = Math.max(\n                0,\n                Math.min(\n                    this.slider.maxLeft,\n                    this.slider.left + ((e.pageX || this.pointer.left) - this.pointer.left)\n                )\n            );\n            var top = Math.max(\n                0,\n                Math.min(\n                    this.slider.maxTop,\n                    this.slider.top + ((e.pageY || this.pointer.top) - this.pointer.top)\n                )\n            );\n            this.slider.knob.left = left + 'px';\n            this.slider.knob.top = top + 'px';\n            if (this.slider.callLeft) {\n                this.color[this.slider.callLeft].call(this.color, left / 100);\n            }\n            if (this.slider.callTop) {\n                this.color[this.slider.callTop].call(this.color, top / 100);\n            }\n            this.previewColor();\n\n            // Set input value on mousemove\n            try {\n                this.element.val(this.format.call(this));\n            } catch (e) {\n                this.element.val(this.color.toHex());\n            }\n\n            this.element.trigger({\n                type: 'changeColor',\n                color: this.color\n            });\n            return false;\n        },\n\n        mouseup: function(e) {\n            e.stopPropagation();\n            e.preventDefault();\n            $(document).off({\n                mousemove: this.mousemove,\n                mouseup: this.mouseup\n            });\n            return false;\n        }\n    };\n\n    $.fn.colorpicker = function(option, value) {\n        return this.each(function() {\n            var $this = $(this),\n                data = $this.data('colorpicker'),\n                options = typeof option === 'object' && option;\n            if (!data) {\n                $this.data('colorpicker', (data = new Colorpicker(this, $.extend({}, $.fn.colorpicker.defaults, options))));\n            }\n            if (typeof option === 'string') data[option](value);\n        });\n    };\n\n    $.fn.colorpicker.defaults = {\n    };\n\n    $.fn.colorpicker.Constructor = Colorpicker;\n\n    var CPGlobal = {\n\n        // translate a format from Color object to a string\n        translateFormats: {\n            'rgb': function() {\n                var rgb = this.color.toRGB();\n                return 'rgb(' + rgb.r + ',' + rgb.g + ',' + rgb.b + ')';\n            },\n\n            'rgba': function() {\n                var rgb = this.color.toRGB();\n                return 'rgba(' + rgb.r + ',' + rgb.g + ',' + rgb.b + ',' + rgb.a + ')';\n            },\n\n            'hsl': function() {\n                var hsl = this.color.toHSL();\n                return 'hsl(' + Math.round(hsl.h * 360) + ',' + Math.round(hsl.s * 100) + '%,' + Math.round(hsl.l * 100) + '%)';\n            },\n\n            'hsla': function() {\n                var hsl = this.color.toHSL();\n                return 'hsla(' + Math.round(hsl.h * 360) + ',' + Math.round(hsl.s * 100) + '%,' + Math.round(hsl.l * 100) + '%,' + hsl.a + ')';\n            },\n\n            'hex': function() {\n                return  this.color.toHex();\n            }\n        },\n\n        sliders: {\n            saturation: {\n                maxLeft: 100,\n                maxTop: 100,\n                callLeft: 'setSaturation',\n                callTop: 'setLightness'\n            },\n\n            hue: {\n                maxLeft: 0,\n                maxTop: 100,\n                callLeft: false,\n                callTop: 'setHue'\n            },\n\n            alpha: {\n                maxLeft: 0,\n                maxTop: 100,\n                callLeft: false,\n                callTop: 'setAlpha'\n            }\n        },\n\n        // HSBtoRGB from RaphaelJS\n        // https://github.com/DmitryBaranovskiy/raphael/\n        RGBtoHSB: function(r, g, b, a) {\n            r /= 255;\n            g /= 255;\n            b /= 255;\n\n            var H, S, V, C;\n            V = Math.max(r, g, b);\n            C = V - Math.min(r, g, b);\n            H = (C === 0 ? null :\n                V == r ? (g - b) / C :\n                    V == g ? (b - r) / C + 2 :\n                        (r - g) / C + 4\n                );\n            H = ((H + 360) % 6) * 60 / 360;\n            S = C === 0 ? 0 : C / V;\n            return {h: H || 1, s: S, b: V, a: a || 1};\n        },\n\n        HueToRGB: function(p, q, h) {\n            if (h < 0)\n                h += 1;\n            else if (h > 1)\n                h -= 1;\n\n            if ((h * 6) < 1)\n                return p + (q - p) * h * 6;\n            else if ((h * 2) < 1)\n                return q;\n            else if ((h * 3) < 2)\n                return p + (q - p) * ((2 / 3) - h) * 6;\n            else\n                return p;\n        },\n\n        HSLtoRGB: function(h, s, l, a) {\n            if (s < 0) {\n                s = 0;\n            }\n            var q;\n            if (l <= 0.5) {\n                q = l * (1 + s);\n            } else {\n                q = l + s - (l * s);\n            }\n\n            var p = 2 * l - q;\n\n            var tr = h + (1 / 3);\n            var tg = h;\n            var tb = h - (1 / 3);\n\n            var r = Math.round(CPGlobal.HueToRGB(p, q, tr) * 255);\n            var g = Math.round(CPGlobal.HueToRGB(p, q, tg) * 255);\n            var b = Math.round(CPGlobal.HueToRGB(p, q, tb) * 255);\n            return [r, g, b, a || 1];\n        },\n\n        // a set of RE's that can match strings and generate color tuples.\n        // from John Resig color plugin\n        // https://github.com/jquery/jquery-color/\n        stringParsers: [\n            {\n                re: /rgba?\\(\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*(?:,\\s*(\\d+(?:\\.\\d+)?)\\s*)?\\)/,\n                parse: function(execResult) {\n                    return [\n                        execResult[ 1 ],\n                        execResult[ 2 ],\n                        execResult[ 3 ],\n                        execResult[ 4 ]\n                    ];\n                }\n            },\n            {\n                re: /rgba?\\(\\s*(\\d+(?:\\.\\d+)?)\\%\\s*,\\s*(\\d+(?:\\.\\d+)?)\\%\\s*,\\s*(\\d+(?:\\.\\d+)?)\\%\\s*(?:,\\s*(\\d+(?:\\.\\d+)?)\\s*)?\\)/,\n                parse: function(execResult) {\n                    return [\n                        2.55 * execResult[1],\n                        2.55 * execResult[2],\n                        2.55 * execResult[3],\n                        execResult[ 4 ]\n                    ];\n                }\n            },\n            {\n                re: /#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/,\n                parse: function(execResult) {\n                    return [\n                        parseInt(execResult[ 1 ], 16),\n                        parseInt(execResult[ 2 ], 16),\n                        parseInt(execResult[ 3 ], 16)\n                    ];\n                }\n            },\n            {\n                re: /#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/,\n                parse: function(execResult) {\n                    return [\n                        parseInt(execResult[ 1 ] + execResult[ 1 ], 16),\n                        parseInt(execResult[ 2 ] + execResult[ 2 ], 16),\n                        parseInt(execResult[ 3 ] + execResult[ 3 ], 16)\n                    ];\n                }\n            },\n            {\n                re: /hsla?\\(\\s*(\\d+(?:\\.\\d+)?)\\s*,\\s*(\\d+(?:\\.\\d+)?)\\%\\s*,\\s*(\\d+(?:\\.\\d+)?)\\%\\s*(?:,\\s*(\\d+(?:\\.\\d+)?)\\s*)?\\)/,\n                space: 'hsla',\n                parse: function(execResult) {\n                    return [\n                        execResult[1] / 360,\n                        execResult[2] / 100,\n                        execResult[3] / 100,\n                        execResult[4]\n                    ];\n                }\n            }\n        ],\n        template: '<div class=\"colorpicker dropdown-menu\">' +\n            '<div class=\"colorpicker-saturation\"><i><b></b></i></div>' +\n            '<div class=\"colorpicker-hue\"><i></i></div>' +\n            '<div class=\"colorpicker-alpha\"><i></i></div>' +\n            '<div class=\"colorpicker-color\"><div /></div>' +\n            '</div>'\n    };\n\n}(window.jQuery);"
  },
  {
    "path": "public/js/vendor/jquery-scrollspy.js",
    "content": "/*!\n * jQuery Scrollspy Plugin\n * Author: @sxalexander\n * Licensed under the MIT license\n */\n\n\n;(function ( $, window, document, undefined ) {\n\n    $.fn.extend({\n      scrollspy: function ( options ) {\n        \n          var defaults = {\n            min: 0,\n            max: 0,\n            mode: 'vertical',\n            buffer: 0,\n            container: window,\n            onEnter: options.onEnter ? options.onEnter : [],\n            onLeave: options.onLeave ? options.onLeave : [],\n            onTick: options.onTick ? options.onTick : []\n          }\n          \n          var options = $.extend( {}, defaults, options );\n\n          return this.each(function (i) {\n\n              var element = this;\n              var o = options;\n              var $container = $(o.container);\n              var mode = o.mode;\n              var buffer = o.buffer;\n              var enters = leaves = 0;\n              var inside = false;\n                            \n              /* add listener to container */\n              $container.bind('scroll', function(e){\n                  var position = {top: $(this).scrollTop(), left: $(this).scrollLeft()};\n                  var xy = (mode == 'vertical') ? position.top + buffer : position.left + buffer;\n                  var max = o.max;\n                  var min = o.min;\n\n                  /* fix max */\n                  if($.isFunction(o.max)){\n                    max = o.max();\n                  }\n\n                  /* fix max */\n                  if($.isFunction(o.min)){\n                    min = o.min();\n                  }\n\n                  if(max == 0){\n                    max = (mode == 'vertical') ? $container.height() : $container.outerWidth() + $(element).outerWidth();\n                  }\n                  \n                  /* if we have reached the minimum bound but are below the max ... */\n                  if(xy >= min && xy <= max){\n                    /* trigger enter event */\n                    if(!inside){\n                       inside = true;\n                       enters++;\n                       \n                       /* fire enter event */\n                       $(element).trigger('scrollEnter', {position: position})\n                       if($.isFunction(o.onEnter)){\n                         o.onEnter(element, position);\n                       }\n                      \n                     }\n                     \n                     /* triger tick event */\n                     $(element).trigger('scrollTick', {position: position, inside: inside, enters: enters, leaves: leaves})\n                     if($.isFunction(o.onTick)){\n                       o.onTick(element, position, inside, enters, leaves);\n                     }\n                  }else{\n                    \n                    if(inside){\n                      inside = false;\n                      leaves++;\n                      /* trigger leave event */\n                      $(element).trigger('scrollLeave', {position: position, leaves:leaves})\n\n                      if($.isFunction(o.onLeave)){\n                        o.onLeave(element, position);\n                      }\n                    }\n                  }\n              }); \n\n          });\n      }\n\n    })\n\n    \n})( jQuery, window );\n"
  },
  {
    "path": "public/js/vendor/jquery.reveal.js",
    "content": "/*\n * jQuery Reveal Plugin 1.0\n * www.ZURB.com\n * Copyright 2010, ZURB\n * Free to use under the MIT license.\n * http://www.opensource.org/licenses/mit-license.php\n*/\n\n\n(function($) {\n\n/*---------------------------\n Defaults for Reveal\n----------------------------*/\n\t \n/*---------------------------\n Listener for data-reveal-id attributes\n----------------------------*/\n\n\t$('a[data-reveal-id]').live('click', function(e) {\n\t\te.preventDefault();\n\t\tvar modalLocation = $(this).attr('data-reveal-id');\n\t\t$('#'+modalLocation).reveal($(this).data());\n\t});\n\n/*---------------------------\n Extend and Execute\n----------------------------*/\n\n    $.fn.reveal = function(options) {\n        \n        \n        var defaults = {  \n\t    \tanimation: 'fadeAndPop', //fade, fadeAndPop, none\n\t\t    animationspeed: 300, //how fast animtions are\n\t\t    closeonbackgroundclick: true, //if you click background will modal close?\n\t\t    dismissmodalclass: 'close-reveal-modal' //the class of a button or element that will close an open modal\n    \t}; \n    \t\n        //Extend dem' options\n        var options = $.extend({}, defaults, options); \n\t\n        return this.each(function() {\n        \n/*---------------------------\n Global Variables\n----------------------------*/\n        \tvar modal = $(this),\n        \t\ttopMeasure  = parseInt(modal.css('top')),\n\t\t\t\ttopOffset = modal.height() + topMeasure,\n          \t\tlocked = false,\n\t\t\t\tmodalBG = $('.reveal-modal-bg');\n\n/*---------------------------\n Create Modal BG\n----------------------------*/\n\t\t\tif(modalBG.length == 0) {\n\t\t\t\tmodalBG = $('<div class=\"reveal-modal-bg\" />').insertAfter(modal);\n\t\t\t}\t\t    \n     \n/*---------------------------\n Open & Close Animations\n----------------------------*/\n\t\t\t//Entrance Animations\n\t\t\tmodal.bind('reveal:open', function () {\n\t\t\t  modalBG.unbind('click.modalEvent');\n\t\t\t\t$('.' + options.dismissmodalclass).unbind('click.modalEvent');\n\t\t\t\tif(!locked) {\n\t\t\t\t\tlockModal();\n\t\t\t\t\tif(options.animation == \"fadeAndPop\") {\n\t\t\t\t\t\tmodal.css({'top': $(document).scrollTop()-topOffset, 'opacity' : 0, 'visibility' : 'visible'});\n\t\t\t\t\t\tmodalBG.fadeIn(options.animationspeed/2);\n\t\t\t\t\t\tmodal.delay(options.animationspeed/2).animate({\n\t\t\t\t\t\t\t\"top\": $(document).scrollTop()+topMeasure + 'px',\n\t\t\t\t\t\t\t\"opacity\" : 1\n\t\t\t\t\t\t}, options.animationspeed,unlockModal());\t\t\t\t\t\n\t\t\t\t\t}\n\t\t\t\t\tif(options.animation == \"fade\") {\n\t\t\t\t\t\tmodal.css({'opacity' : 0, 'visibility' : 'visible', 'top': $(document).scrollTop()+topMeasure});\n\t\t\t\t\t\tmodalBG.fadeIn(options.animationspeed/2);\n\t\t\t\t\t\tmodal.delay(options.animationspeed/2).animate({\n\t\t\t\t\t\t\t\"opacity\" : 1\n\t\t\t\t\t\t}, options.animationspeed,unlockModal());\t\t\t\t\t\n\t\t\t\t\t} \n\t\t\t\t\tif(options.animation == \"none\") {\n\t\t\t\t\t\tmodal.css({'visibility' : 'visible', 'top':$(document).scrollTop()+topMeasure});\n\t\t\t\t\t\tmodalBG.css({\"display\":\"block\"});\t\n\t\t\t\t\t\tunlockModal()\t\t\t\t\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tmodal.unbind('reveal:open');\n\t\t\t}); \t\n\n\t\t\t//Closing Animation\n\t\t\tmodal.bind('reveal:close', function () {\n\t\t\t  if(!locked) {\n\t\t\t\t\tlockModal();\n\t\t\t\t\tif(options.animation == \"fadeAndPop\") {\n\t\t\t\t\t\tmodalBG.delay(options.animationspeed).fadeOut(options.animationspeed);\n\t\t\t\t\t\tmodal.animate({\n\t\t\t\t\t\t\t\"top\":  $(document).scrollTop()-topOffset + 'px',\n\t\t\t\t\t\t\t\"opacity\" : 0\n\t\t\t\t\t\t}, options.animationspeed/2, function() {\n\t\t\t\t\t\t\tmodal.css({'top':topMeasure, 'opacity' : 1, 'visibility' : 'hidden'});\n\t\t\t\t\t\t\tunlockModal();\n\t\t\t\t\t\t});\t\t\t\t\t\n\t\t\t\t\t}  \t\n\t\t\t\t\tif(options.animation == \"fade\") {\n\t\t\t\t\t\tmodalBG.delay(options.animationspeed).fadeOut(options.animationspeed);\n\t\t\t\t\t\tmodal.animate({\n\t\t\t\t\t\t\t\"opacity\" : 0\n\t\t\t\t\t\t}, options.animationspeed, function() {\n\t\t\t\t\t\t\tmodal.css({'opacity' : 1, 'visibility' : 'hidden', 'top' : topMeasure});\n\t\t\t\t\t\t\tunlockModal();\n\t\t\t\t\t\t});\t\t\t\t\t\n\t\t\t\t\t}  \t\n\t\t\t\t\tif(options.animation == \"none\") {\n\t\t\t\t\t\tmodal.css({'visibility' : 'hidden', 'top' : topMeasure});\n\t\t\t\t\t\tmodalBG.css({'display' : 'none'});\t\n\t\t\t\t\t}\t\t\n\t\t\t\t}\n\t\t\t\tmodal.unbind('reveal:close');\n\t\t\t});     \n   \t\n/*---------------------------\n Open and add Closing Listeners\n----------------------------*/\n        \t//Open Modal Immediately\n    \tmodal.trigger('reveal:open')\n\t\t\t\n\t\t\t//Close Modal Listeners\n\t\t\tvar closeButton = $('.' + options.dismissmodalclass).bind('click.modalEvent', function () {\n\t\t\t  modal.trigger('reveal:close')\n\t\t\t});\n\t\t\t\n\t\t\tif(options.closeonbackgroundclick) {\n\t\t\t\tmodalBG.css({\"cursor\":\"pointer\"})\n\t\t\t\tmodalBG.bind('click.modalEvent', function () {\n\t\t\t\t  modal.trigger('reveal:close')\n\t\t\t\t});\n\t\t\t}\n\t\t\t$('body').keyup(function(e) {\n        \t\tif(e.which===27){ modal.trigger('reveal:close'); } // 27 is the keycode for the Escape key\n\t\t\t});\n\t\t\t\n\t\t\t\n/*---------------------------\n Animations Locks\n----------------------------*/\n\t\t\tfunction unlockModal() { \n\t\t\t\tlocked = false;\n\t\t\t}\n\t\t\tfunction lockModal() {\n\t\t\t\tlocked = true;\n\t\t\t}\t\n\t\t\t\n        });//each call\n    }//orbit plugin call\n})(jQuery);\n        \n"
  },
  {
    "path": "public/js/vendor/jquery.tipsy.js",
    "content": "// tipsy, facebook style tooltips for jquery\n// version 1.0.0a\n// (c) 2008-2010 jason frame [jason@onehackoranother.com]\n// released under the MIT license\n\n(function($) {\n    \n    function maybeCall(thing, ctx) {\n        return (typeof thing == 'function') ? (thing.call(ctx)) : thing;\n    };\n    \n    function isElementInDOM(ele) {\n      while (ele = ele.parentNode) {\n        if (ele == document) return true;\n      }\n      return false;\n    };\n    \n    function Tipsy(element, options) {\n        this.$element = $(element);\n        this.options = options;\n        this.enabled = true;\n        this.fixTitle();\n    };\n    \n    Tipsy.prototype = {\n        show: function() {\n            var title = this.getTitle();\n            if (title && this.enabled) {\n                var $tip = this.tip();\n                \n                $tip.find('.tipsy-inner')[this.options.html ? 'html' : 'text'](title);\n                $tip[0].className = 'tipsy'; // reset classname in case of dynamic gravity\n                $tip.remove().css({top: 0, left: 0, visibility: 'hidden', display: 'block'}).prependTo(document.body);\n                \n                var pos = $.extend({}, this.$element.offset(), {\n                    width: this.$element[0].offsetWidth,\n                    height: this.$element[0].offsetHeight\n                });\n                \n                var actualWidth = $tip[0].offsetWidth,\n                    actualHeight = $tip[0].offsetHeight,\n                    gravity = maybeCall(this.options.gravity, this.$element[0]);\n                \n                var tp;\n                switch (gravity.charAt(0)) {\n                    case 'n':\n                        tp = {top: pos.top + pos.height + this.options.offset, left: pos.left + pos.width / 2 - actualWidth / 2};\n                        break;\n                    case 's':\n                        tp = {top: pos.top - actualHeight - this.options.offset, left: pos.left + pos.width / 2 - actualWidth / 2};\n                        break;\n                    case 'e':\n                        tp = {top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth - this.options.offset};\n                        break;\n                    case 'w':\n                        tp = {top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width + this.options.offset};\n                        break;\n                }\n                \n                if (gravity.length == 2) {\n                    if (gravity.charAt(1) == 'w') {\n                        tp.left = pos.left + pos.width / 2 - 15;\n                    } else {\n                        tp.left = pos.left + pos.width / 2 - actualWidth + 15;\n                    }\n                }\n                \n                $tip.css(tp).addClass('tipsy-' + gravity);\n                $tip.find('.tipsy-arrow')[0].className = 'tipsy-arrow tipsy-arrow-' + gravity.charAt(0);\n                if (this.options.className) {\n                    $tip.addClass(maybeCall(this.options.className, this.$element[0]));\n                }\n                \n                if (this.options.fade) {\n                    $tip.stop().css({opacity: 0, display: 'block', visibility: 'visible'}).animate({opacity: this.options.opacity});\n                } else {\n                    $tip.css({visibility: 'visible', opacity: this.options.opacity});\n                }\n            }\n        },\n        \n        hide: function() {\n            if (this.options.fade) {\n                this.tip().stop().fadeOut(function() { $(this).remove(); });\n            } else {\n                this.tip().remove();\n            }\n        },\n        \n        fixTitle: function() {\n            var $e = this.$element;\n            if ($e.attr('title') || typeof($e.attr('original-title')) != 'string') {\n                $e.attr('original-title', $e.attr('title') || '').removeAttr('title');\n            }\n        },\n        \n        getTitle: function() {\n            var title, $e = this.$element, o = this.options;\n            this.fixTitle();\n            var title, o = this.options;\n            if (typeof o.title == 'string') {\n                title = $e.attr(o.title == 'title' ? 'original-title' : o.title);\n            } else if (typeof o.title == 'function') {\n                title = o.title.call($e[0]);\n            }\n            title = ('' + title).replace(/(^\\s*|\\s*$)/, \"\");\n            return title || o.fallback;\n        },\n        \n        tip: function() {\n            if (!this.$tip) {\n                this.$tip = $('<div class=\"tipsy\"></div>').html('<div class=\"tipsy-arrow\"></div><div class=\"tipsy-inner\"></div>');\n                this.$tip.data('tipsy-pointee', this.$element[0]);\n            }\n            return this.$tip;\n        },\n        \n        validate: function() {\n            if (!this.$element[0].parentNode) {\n                this.hide();\n                this.$element = null;\n                this.options = null;\n            }\n        },\n        \n        enable: function() { this.enabled = true; },\n        disable: function() { this.enabled = false; },\n        toggleEnabled: function() { this.enabled = !this.enabled; }\n    };\n    \n    $.fn.tipsy = function(options) {\n        \n        if (options === true) {\n            return this.data('tipsy');\n        } else if (typeof options == 'string') {\n            var tipsy = this.data('tipsy');\n            if (tipsy) tipsy[options]();\n            return this;\n        }\n        \n        options = $.extend({}, $.fn.tipsy.defaults, options);\n        \n        function get(ele) {\n            var tipsy = $.data(ele, 'tipsy');\n            if (!tipsy) {\n                tipsy = new Tipsy(ele, $.fn.tipsy.elementOptions(ele, options));\n                $.data(ele, 'tipsy', tipsy);\n            }\n            return tipsy;\n        }\n        \n        function enter() {\n            var tipsy = get(this);\n            tipsy.hoverState = 'in';\n            if (options.delayIn == 0) {\n                tipsy.show();\n            } else {\n                tipsy.fixTitle();\n                setTimeout(function() { if (tipsy.hoverState == 'in') tipsy.show(); }, options.delayIn);\n            }\n        };\n        \n        function leave() {\n            var tipsy = get(this);\n            tipsy.hoverState = 'out';\n            if (options.delayOut == 0) {\n                tipsy.hide();\n            } else {\n                setTimeout(function() { if (tipsy.hoverState == 'out') tipsy.hide(); }, options.delayOut);\n            }\n        };\n        \n        if (!options.live) this.each(function() { get(this); });\n        \n        if (options.trigger != 'manual') {\n            var binder   = options.live ? 'live' : 'bind',\n                eventIn  = options.trigger == 'hover' ? 'mouseenter' : 'focus',\n                eventOut = options.trigger == 'hover' ? 'mouseleave' : 'blur';\n            this[binder](eventIn, enter)[binder](eventOut, leave);\n        }\n        \n        return this;\n        \n    };\n    \n    $.fn.tipsy.defaults = {\n        className: null,\n        delayIn: 0,\n        delayOut: 0,\n        fade: false,\n        fallback: '',\n        gravity: 'n',\n        html: false,\n        live: false,\n        offset: 0,\n        opacity: 0.8,\n        title: 'title',\n        trigger: 'hover'\n    };\n    \n    $.fn.tipsy.revalidate = function() {\n      $('.tipsy').each(function() {\n        var pointee = $.data(this, 'tipsy-pointee');\n        if (!pointee || !isElementInDOM(pointee)) {\n          $(this).remove();\n        }\n      });\n    };\n    \n    // Overwrite this method to provide options on a per-element basis.\n    // For example, you could store the gravity in a 'tipsy-gravity' attribute:\n    // return $.extend({}, options, {gravity: $(ele).attr('tipsy-gravity') || 'n' });\n    // (remember - do not modify 'options' in place!)\n    $.fn.tipsy.elementOptions = function(ele, options) {\n        return $.metadata ? $.extend({}, options, $(ele).metadata()) : options;\n    };\n    \n    $.fn.tipsy.autoNS = function() {\n        return $(this).offset().top > ($(document).scrollTop() + $(window).height() / 2) ? 's' : 'n';\n    };\n    \n    $.fn.tipsy.autoWE = function() {\n        return $(this).offset().left > ($(document).scrollLeft() + $(window).width() / 2) ? 'e' : 'w';\n    };\n    \n    /**\n     * yields a closure of the supplied parameters, producing a function that takes\n     * no arguments and is suitable for use as an autogravity function like so:\n     *\n     * @param margin (int) - distance from the viewable region edge that an\n     *        element should be before setting its tooltip's gravity to be away\n     *        from that edge.\n     * @param prefer (string, e.g. 'n', 'sw', 'w') - the direction to prefer\n     *        if there are no viewable region edges effecting the tooltip's\n     *        gravity. It will try to vary from this minimally, for example,\n     *        if 'sw' is preferred and an element is near the right viewable \n     *        region edge, but not the top edge, it will set the gravity for\n     *        that element's tooltip to be 'se', preserving the southern\n     *        component.\n     */\n     $.fn.tipsy.autoBounds = function(margin, prefer) {\n\t\treturn function() {\n\t\t\tvar dir = {ns: prefer[0], ew: (prefer.length > 1 ? prefer[1] : false)},\n\t\t\t    boundTop = $(document).scrollTop() + margin,\n\t\t\t    boundLeft = $(document).scrollLeft() + margin,\n\t\t\t    $this = $(this);\n\n\t\t\tif ($this.offset().top < boundTop) dir.ns = 'n';\n\t\t\tif ($this.offset().left < boundLeft) dir.ew = 'w';\n\t\t\tif ($(window).width() + $(document).scrollLeft() - $this.offset().left < margin) dir.ew = 'e';\n\t\t\tif ($(window).height() + $(document).scrollTop() - $this.offset().top < margin) dir.ns = 's';\n\n\t\t\treturn dir.ns + (dir.ew ? dir.ew : '');\n\t\t}\n\t};\n    \n})(jQuery);\n"
  },
  {
    "path": "public/js/vendor/select2.sortable.js",
    "content": "/**\n * jQuery Select2 Sortable\n * - enable select2 to be sortable via normal select element\n * \n * author      : Vafour\n * inspired by : jQuery Chosen Sortable (https://github.com/mrhenry/jquery-chosen-sortable)\n * License     : GPL\n */\n\n(function($){\n\t$.fn.extend({\n\t\tselect2SortableOrder: function(){\n\t\t\tvar $this = this.filter('[multiple]');\n\n\t\t\t$this.each(function(){\n\t\t\t\tvar $select  = $(this);\n\n\t\t\t\t// skip elements not select2-ed\n\t\t\t\tif(typeof($select.data('select2')) !== 'object'){\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tvar $select2 = $select.siblings('.select2-container'),\n\t\t\t\t    unselected = [],\n\t\t\t\t    sorted;\n\n\t\t\t\t$select.find('option').each(function(){\n\t\t\t\t\t!this.selected && unselected.push(this);\n\t\t\t\t});\n\n\t\t\t\tsorted = $($select2.find('.select2-choices li[class!=\"select2-search-field\"]').map( function() {\n\t\t\t\t\tif (!this) {\n\t\t\t\t\t\treturn undefined;\n\t\t\t\t\t}\n\t\t\t\t\tvar id = $(this).data('select2Data').id;\n\t\t\t\t\treturn $select.find('option[value=\"' + id + '\"]')[0];\n\t\t\t\t}));\n\n\t\t\t\tsorted.push.apply(sorted, unselected);\n\t\t\t\t$select.children().remove();\n\t\t\t\t$select.append(sorted);\n\t\t\t});\n\n\t\t\treturn $this;\n\t\t},\n\t\tselect2Sortable: function(){\n\t\t\tvar args         = Array.prototype.slice.call(arguments, 0);\n\t\t\t    $this        = this.filter('[multiple]'),\n\t\t\t    validMethods = ['destroy'];\n\n\t\t\tif(args.length === 0 || typeof(args[0]) === 'object')\n\t\t\t{\n\t\t\t\tvar defaultOptions = {\n\t\t\t\t\tbindOrder       : 'formSubmit', // or sortableStop\n\t\t\t\t\tsortableOptions : {\n\t\t\t\t\t\tplaceholder : 'ui-state-highlight',\n\t\t\t\t\t\titems       : 'li:not(.select2-search-field)',\n\t\t\t\t\t\ttolerance   : 'pointer'\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\tvar options = $.extend(defaultOptions, args[0]);\n\n\t\t\t\t// Init select2 only if not already initialized to prevent select2 configuration loss\n\t\t\t\tif(typeof($this.data('select2')) !== 'object'){\n\t\t\t\t\t$this.select2();\n\t\t\t\t}\n\n\t\t\t\t$this.each(function(){\n\t\t\t\t\tvar $select  = $(this),\n\t\t\t\t\t    $select2choices = $select.siblings('.select2-container').find('.select2-choices');\n\n\t\t\t\t\t// Init jQuery UI Sortable\n\t\t\t\t\t$select2choices.sortable(options.sortableOptions);\n\n\t\t\t\t\tswitch(options.bindOrder){\n\t\t\t\t\t\tcase 'sortableStop':\n\t\t\t\t\t\t\t// apply options ordering in sortstop event\n\t\t\t\t\t\t\t$select2choices.on(\"sortstop.select2sortable\", function( event, ui ) {\n\t\t\t\t\t\t\t\t$select.select2SortableOrder();\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t$select.on('change', function(e){\n\t\t\t\t\t\t\t\t$(this).select2SortableOrder();\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t// apply options ordering in form submit\n\t\t\t\t\t\t\t$select.closest('form').unbind('submit.select2sortable').on('submit.select2sortable', function(){\n\t\t\t\t\t\t\t\t$select.select2SortableOrder();\n\t\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t});\n\t\t\t}\n\t\t\telse if(typeof(args[0] === 'string'))\n\t\t\t{\n\t\t\t\tif($.inArray(args[0], validMethods) == -1)\n\t\t\t\t{\n\t\t\t\t\tthrow \"Unknown method: \" + args[0];\n\t\t\t\t}\n\t\t\t\tif(args[0] === 'destroy')\n\t\t\t\t{\n\t\t\t\t\t$this.select2SortableDestroy();\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn $this;\n\t\t},\n\t\tselect2SortableDestroy: function(){\n\t\t\tvar $this = this.filter('[multiple]');\n\t\t\t$this.each(function(){\n\t\t\t\tvar $select         = $(this),\n\t\t\t\t    $select2choices = $select.parent().find('.select2-choices');\n\n\t\t\t\t// unbind form submit event\n\t\t\t\t$select.closest('form').unbind('submit.select2sortable');\n\n\t\t\t\t// unbind sortstop event\n\t\t\t\t$select2choices.unbind(\"sortstop.select2sortable\");\n\n\t\t\t\t// destroy select2Sortable\n\t\t\t\t$select2choices.sortable('destroy');\n\t\t\t});\n\t\t\treturn $this;\n\t\t}\n\t});\n}(jQuery));"
  },
  {
    "path": "views/control/checkbox.php",
    "content": "<?php if(!$is_compact) echo VP_View::instance()->load('control/template_control_head', $head_info); ?>\n\n<?php foreach ($items as $item): ?>\n<label>\n\t<?php $checked = (in_array($item->value, $value)); ?>\n\t<input <?php if($checked) echo 'checked'; ?> class=\"vp-input<?php if($checked) echo \" checked\"; ?>\" type=\"checkbox\" name=\"<?php echo $name; ?>\" value=\"<?php echo $item->value; ?>\" />\n\t<span></span><?php echo $item->label; ?>\n</label>\n<?php endforeach; ?>\n\n<?php if(!$is_compact) echo VP_View::instance()->load('control/template_control_foot'); ?>"
  },
  {
    "path": "views/control/checkimage.php",
    "content": "<?php if(!$is_compact) echo VP_View::instance()->load('control/template_control_head', $head_info); ?>\n\n<?php foreach ($items as $item): ?>\n<label>\n\t<?php $checked = (in_array($item->value, $value)); ?>\n\t<input <?php if($checked) echo 'checked'; ?> class=\"vp-input<?php if($checked) echo \" checked\"; ?>\" type=\"checkbox\" name=\"<?php echo $name; ?>\" value=\"<?php echo $item->value; ?>\" />\n\t<img src=\"<?php echo VP_Util_Res::img($item->img); ?>\" alt=\"<?php echo $item->label; ?>\" class=\"vp-js-tipsy image-item\" style=\"<?php VP_Util_Text::print_if_exists($item_max_width, 'max-width: %spx; '); ?><?php VP_Util_Text::print_if_exists($item_max_height, 'max-height: %spx; '); ?>\" original-title=\"<?php echo $item->label; ?>\" />\n</label>\n<?php endforeach; ?>\n\n<?php if(!$is_compact) echo VP_View::instance()->load('control/template_control_foot'); ?>"
  },
  {
    "path": "views/control/codeeditor.php",
    "content": "<?php if(!$is_compact) echo VP_View::instance()->load('control/template_control_head', $head_info); ?>\n\n<textarea class=\"vp-input\" name=\"<?php echo $name; ?>\" style=\"display: none;\"><?php echo $value; ?></textarea>\n<div class=\"vp-js-codeeditor\" data-vp-opt=\"<?php echo $opt; ?>\"></div>\n\n<?php if(!$is_compact) echo VP_View::instance()->load('control/template_control_foot'); ?>"
  },
  {
    "path": "views/control/color.php",
    "content": "<?php if(!$is_compact) echo VP_View::instance()->load('control/template_control_head', $head_info); ?>\n\n<label class=\"indicator\" for=\"<?php echo $name; ?>\"><span style=\"background-color: <?php echo $value; ?>;\"></span></label>\n<input id=\"<?php echo $name; ?>\" class=\"vp-input vp-js-colorpicker\"\n\ttype=\"text\" name=\"<?php echo $name ?>\" value=\"<?php echo $value; ?>\" data-vp-opt=\"<?php echo $opt; ?>\" />\n\n<?php if(!$is_compact) echo VP_View::instance()->load('control/template_control_foot'); ?>"
  },
  {
    "path": "views/control/date.php",
    "content": "<?php if(!$is_compact) echo VP_View::instance()->load('control/template_control_head', $head_info); ?>\n\n<input <?php echo \"data-vp-opt='\" . $opt . \"'\"; ?> type=\"text\" name=\"<?php echo $name ?>\" class=\"vp-input vp-js-datepicker\" />\n\n<?php if(!$is_compact) echo VP_View::instance()->load('control/template_control_foot'); ?>"
  },
  {
    "path": "views/control/fontawesome.php",
    "content": "<?php if(!$is_compact) echo VP_View::instance()->load('control/template_control_head', $head_info); ?>\n\n<select name=\"<?php echo $name; ?>\" class=\"vp-input vp-js-fontawesome vp-fontawesome\" autocomplete=\"off\">\n\t<option></option>\n\t<?php foreach ($items as $item): ?>\n\t<option <?php if($item->value == $value) echo \"selected\" ?> value=\"<?php echo $item->value; ?>\"><?php echo $item->label; ?></option>\n\t<?php endforeach; ?>\n</select>\n\n<?php if(!$is_compact) echo VP_View::instance()->load('control/template_control_foot'); ?>"
  },
  {
    "path": "views/control/html.php",
    "content": "<?php extract($head_info); ?>\n\n<div class=\"vp-field <?php echo $type; ?><?php echo !empty($container_extra_classes) ? (' ' . $container_extra_classes) : ''; ?>\"\n\tdata-vp-type=\"<?php echo $type; ?>\"\n\t<?php echo VP_Util_Text::print_if_exists(isset($binding) ? $binding : '', 'data-vp-bind=\"%s\"'); ?>\n\t<?php echo VP_Util_Text::print_if_exists(isset($dependency) ? $dependency : '', 'data-vp-dependency=\"%s\"'); ?>\n\tid=\"<?php echo $name; ?>\">\n\t<div class=\"field\" style=\"height: <?php echo $height; ?>;\">\n\t\t<div class=\"input\" id=\"<?php echo $name . '_dom'; ?>\">\n\t\t\t<?php echo VP_WP_Util::kses_html($value); ?>\n\t\t</div>\n\t\t<textarea name=\"<?php echo $name; ?>\" class=\"vp-hide\"><?php echo VP_WP_Util::kses_html($value); ?></textarea>\n\t\t<div class=\"vp-js-bind-loader vp-field-loader vp-hide\"><img src=\"<?php VP_Util_Res::img_out('ajax-loader.gif', ''); ?>\" /></div>\n\t</div>\n</div>"
  },
  {
    "path": "views/control/multiselect.php",
    "content": "<?php if(!$is_compact) echo VP_View::instance()->load('control/template_control_head', $head_info); ?>\n\n<select multiple name=\"<?php echo $name; ?>\" class=\"vp-input vp-js-select2\" autocomplete=\"off\">\n\t<?php foreach ($items as $item): ?>\n\t<option <?php if(in_array($item->value, $value)) echo \"selected\" ?> value=\"<?php echo $item->value; ?>\"><?php echo $item->label; ?></option>\n\t<?php endforeach; ?>\n</select>\n\n<?php if(!$is_compact) echo VP_View::instance()->load('control/template_control_foot'); ?>"
  },
  {
    "path": "views/control/notebox.php",
    "content": "<?php extract($head_info); ?>\n\n<?php if(!$is_compact): ?>\n<div class=\"vp-field <?php echo $type; ?><?php echo !empty($container_extra_classes) ? (' ' . $container_extra_classes) : ''; ?>\"\n\tdata-vp-type=\"<?php echo $type; ?>\"\n\t<?php echo VP_Util_Text::print_if_exists(isset($dependency) ? $dependency : '', 'data-vp-dependency=\"%s\"'); ?>\n\t<?php echo $is_hidden ? 'style=\"display: none;\"' : ''; ?>\n\tid=\"<?php echo $name; ?>\">\n<?php endif; ?>\n\t<?php switch ($status) {\n\t\tcase 'normal':\n\t\t\t$icon_class = 'fa-lightbulb-o';\n\t\t\tbreak;\n\t\tcase 'info':\n\t\t\t$icon_class = 'fa-info-circle';\n\t\t\tbreak;\n\t\tcase 'success':\n\t\t\t$icon_class = 'fa-check-circle';\n\t\t\tbreak;\n\t\tcase 'warning':\n\t\t\t$icon_class = 'fa-exclamation-triangle';\n\t\t\tbreak;\n\t\tcase 'error':\n\t\t\t$icon_class = 'fa-times-circle';\n\t\t\tbreak;\n\t\tdefault:\n\t\t\t$icon_class = 'fa-lightbulb-o';\n\t\t\tbreak;\n\t} ?>\n\t<i class=\"fa <?php echo $icon_class; ?>\"></i>\n\t<div class=\"label\"><?php echo $label; ?></div>\n\t<?php VP_Util_Text::print_if_exists($description, '<div class=\"description\">%s</div>'); ?>\n\n<?php if(!$is_compact): ?>\n</div>\n<?php endif; ?>"
  },
  {
    "path": "views/control/radiobutton.php",
    "content": "<?php if(!$is_compact) echo VP_View::instance()->load('control/template_control_head', $head_info); ?>\n\n<?php foreach ($items as $item): ?>\n<label>\n\t<?php $checked = ($item->value == $value); ?>\n\t<input <?php if($checked) echo 'checked'; ?> class=\"vp-input<?php if($checked) echo \" checked\"; ?>\" type=\"radio\" name=\"<?php echo $name; ?>\" value=\"<?php echo $item->value; ?>\" />\n\t<span></span><?php echo $item->label; ?>\n</label>\n<?php endforeach; ?>\n\n<?php if(!$is_compact) echo VP_View::instance()->load('control/template_control_foot'); ?>"
  },
  {
    "path": "views/control/radioimage.php",
    "content": "<?php if(!$is_compact) echo VP_View::instance()->load('control/template_control_head', $head_info); ?>\n\n<?php foreach ($items as $item): ?>\n<label>\n\t<?php $checked = ($item->value == $value); ?>\n\t<input type=\"radio\" <?php if($checked) echo 'checked'; ?> class=\"vp-input<?php if($checked) echo \" checked\"; ?>\" name=\"<?php echo $name; ?>\" value=\"<?php echo $item->value; ?>\" />\n\t<img src=\"<?php echo VP_Util_Res::img($item->img); ?>\" alt=\"<?php echo $item->label; ?>\" class=\"vp-js-tipsy image-item\" style=\"<?php VP_Util_Text::print_if_exists($item_max_width, 'max-width: %spx; '); ?><?php VP_Util_Text::print_if_exists($item_max_height, 'max-height: %spx; '); ?>\" original-title=\"<?php echo $item->label; ?>\" />\n</label>\n<?php endforeach; ?>\n\n<?php if(!$is_compact) echo VP_View::instance()->load('control/template_control_foot'); ?>"
  },
  {
    "path": "views/control/select.php",
    "content": "<?php if(!$is_compact) echo VP_View::instance()->load('control/template_control_head', $head_info); ?>\n\n<select name=\"<?php echo $name; ?>\" class=\"vp-input vp-js-select2\" autocomplete=\"off\">\n\t<option></option>\n\t<?php foreach ($items as $item): ?>\n\t<option <?php if($item->value == $value) echo \"selected\" ?> value=\"<?php echo $item->value; ?>\"><?php echo $item->label; ?></option>\n\t<?php endforeach; ?>\n</select>\n\n<?php if(!$is_compact) echo VP_View::instance()->load('control/template_control_foot'); ?>"
  },
  {
    "path": "views/control/slider.php",
    "content": "<?php if(!$is_compact) echo VP_View::instance()->load('control/template_control_head', $head_info); ?>\n\n<input type=\"text\" name=\"<?php echo $name; ?>\" class=\"vp-input slideinput vp-js-tipsy\" original-title=\"Range between <?php echo $opt_raw['min']; ?> and <?php echo $opt_raw['max']; ?>\" value=\"<?php echo $value; ?>\" />\n<div class=\"vp-js-slider slidebar\" id=\"<?php echo $name; ?>\" data-vp-opt=\"<?php echo $opt; ?>\"></div>\n\n<?php if(!$is_compact) echo VP_View::instance()->load('control/template_control_foot'); ?>"
  },
  {
    "path": "views/control/sorter.php",
    "content": "<?php if(!$is_compact) echo VP_View::instance()->load('control/template_control_head', $head_info); ?>\n\n<select multiple name=\"<?php echo $name; ?>\" class=\"vp-input vp-js-sorter\" data-vp-opt=\"<?php echo $opt; ?>\">\n\t<?php\n\t$labels = array();\n\tforeach ($items as $item) $labels[$item->value] = $item->label;\n\t?>\n\n\t<?php foreach ($value as $v): ?>\n\t<option selected value=\"<?php echo $v; ?>\"><?php echo $labels[$v]; ?></option>\n\t<?php unset($labels[$v]); endforeach; ?>\n\n\t<?php foreach ($labels as $i => $label): ?>\n\t<option value=\"<?php echo $i; ?>\"><?php echo $label; ?></option>\n\t<?php endforeach; ?>\n</select>\n\n<?php if(!$is_compact) echo VP_View::instance()->load('control/template_control_foot'); ?>"
  },
  {
    "path": "views/control/template_control_foot.php",
    "content": "\t\t</div>\n\t\t<div class=\"vp-js-bind-loader vp-field-loader vp-hide\"><img src=\"<?php VP_Util_Res::img_out('ajax-loader.gif', ''); ?>\" /></div>\n\t\t<div class=\"validation-msgs\"><ul></ul></div>\n\t</div>\n</div>"
  },
  {
    "path": "views/control/template_control_head.php",
    "content": "<div class=\"vp-field <?php echo $type; ?><?php echo !empty($container_extra_classes) ? (' ' . $container_extra_classes) : ''; ?>\"\n\tdata-vp-type=\"<?php echo $type; ?>\"\n\t<?php echo VP_Util_Text::print_if_exists($validation, 'data-vp-validation=\"%s\"'); ?>\n\t<?php echo VP_Util_Text::print_if_exists(isset($binding) ? $binding : '', 'data-vp-bind=\"%s\"'); ?>\n\t<?php echo VP_Util_Text::print_if_exists(isset($items_binding) ? $items_binding : '', 'data-vp-items-bind=\"%s\"'); ?>\n\t<?php echo VP_Util_Text::print_if_exists(isset($dependency) ? $dependency : '', 'data-vp-dependency=\"%s\"'); ?>\n\tid=\"<?php echo $name; ?>\">\n\t<div class=\"label\">\n\t\t<label><?php echo $label; ?></label>\n\t\t<?php VP_Util_Text::print_if_exists($description, '<div class=\"description\">%s</div>'); ?>\n\t</div>\n\t<div class=\"field\">\n\t\t<div class=\"input\">"
  },
  {
    "path": "views/control/textarea.php",
    "content": "<?php if(!$is_compact) echo VP_View::instance()->load('control/template_control_head', $head_info); ?>\n\n<textarea class=\"vp-input\" name=\"<?php echo $name; ?>\"><?php echo esc_attr($value); ?></textarea>\n\n<?php if(!$is_compact) echo VP_View::instance()->load('control/template_control_foot'); ?>"
  },
  {
    "path": "views/control/textbox.php",
    "content": "<?php if(!$is_compact) echo VP_View::instance()->load('control/template_control_head', $head_info); ?>\n\n<input type=\"text\" name=\"<?php echo $name ?>\" class=\"vp-input input-large\" value=\"<?php echo esc_attr($value); ?>\" />\n\n<?php if(!$is_compact) echo VP_View::instance()->load('control/template_control_foot'); ?>"
  },
  {
    "path": "views/control/toggle.php",
    "content": "<?php if(!$is_compact) echo VP_View::instance()->load('control/template_control_head', $head_info); ?>\n\n<label>\n\t<input <?php if( $value ) echo 'checked'; ?> class=\"vp-input<?php if( $value ) echo ' checked'; ?>\" type=\"checkbox\" name=\"<?php echo $name; ?>\" value=\"1\" />\n\t<span></span>\n</label>\n\n<?php if(!$is_compact) echo VP_View::instance()->load('control/template_control_foot'); ?>"
  },
  {
    "path": "views/control/upload.php",
    "content": "<?php if(!$is_compact) echo VP_View::instance()->load('control/template_control_head', $head_info); ?>\n\n<input class=\"vp-input\" type=\"text\" readonly id=\"<?php echo $name; ?>\" name=\"<?php echo $name; ?>\" value=\"<?php echo $value; ?>\" />\n<div class=\"buttons\">\n\t<input class=\"vp-js-upload vp-button button\" type=\"button\" value=\"<?php _e('Choose File', 'vp_textdomain'); ?>\" />\n\t<input class=\"vp-js-remove-upload vp-button button\" type=\"button\" value=\"x\" />\n</div>\n<div class=\"image\">\n\t<img src=\"<?php echo $preview; ?>\" alt=\"\" />\n</div>\n\n<?php if(!$is_compact) echo VP_View::instance()->load('control/template_control_foot'); ?>"
  },
  {
    "path": "views/control/wpeditor.php",
    "content": "<?php if(!$is_compact) echo VP_View::instance()->load('control/template_control_head', $head_info); ?>\n\n<?php\n\t// prepare value for tinyMCE editor\n\t$value     = html_entity_decode($value, ENT_COMPAT, 'UTF-8');\n\tif( has_filter('the_editor_content') )\n\t\t$value = apply_filters('the_editor_content', $value);\n\telse\n\t\t$value = wp_richedit_pre($value);\n?>\n<div class=\"customEditor\">\n\t<div class=\"wp-editor-tools\">\n\t\t<div class=\"custom_upload_buttons hide-if-no-js wp-media-buttons\"><?php do_action( 'media_buttons' ); ?></div>\n\t</div>\n\t<textarea class=\"vp-input vp-js-wpeditor\" id=\"<?php echo $name . '_ce'; ?>\" data-vp-opt=\"<?php echo $opt; ?>\" rows=\"10\" cols=\"50\" name=\"<?php echo $name; ?>\" rows=\"3\"><?php echo $value; ?></textarea>\n</div>\n\n<?php if(!$is_compact) echo VP_View::instance()->load('control/template_control_foot'); ?>"
  },
  {
    "path": "views/option/impexp.php",
    "content": "<div class=\"vp-field vp-textarea\" data-vp-type=\"vp-textarea\">\n\t<div class=\"label\">\n\t\t<label>\n\t\t\t<?php _e('Import', 'vp_textdomain') ?>\n\t\t</label>\n\t\t<div class=\"description\">\n\t\t\t<p><?php _e('Import Options', 'vp_textdomain') ?></p>\n\t\t</div>\n\t</div>\n\t<div class=\"field\">\n\t\t<div class=\"input\">\n\t\t\t<textarea id=\"vp-js-import_text\"></textarea>\n\t\t\t<div class=\"buttons\">\n\t\t\t\t<input id=\"vp-js-import\" class=\"vp-button button\" type=\"button\" value=\"<?php _e('Import', 'vp_textdomain') ?>\" />\n\t\t\t\t<span style=\"margin-left: 10px;\">\n\t\t\t\t\t<span id=\"vp-js-import-loader\" class=\"vp-field-loader\" style=\"display: none;\"><img src=\"<?php VP_Util_Res::img_out('ajax-loader.gif', ''); ?>\" style=\"vertical-align: middle;\"></span>\n\t\t\t\t\t<span id=\"vp-js-import-status\" style=\"display: none;\"></span>\n\t\t\t\t</span>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</div>\n\n<div class=\"vp-field vp-textarea\" data-vp-type=\"vp-textarea\">\n\t<div class=\"label\">\n\t\t<label>\n\t\t\t<?php _e('Export', 'vp_textdomain') ?>\n\t\t</label>\n\t\t<div class=\"description\">\n\t\t\t<p><?php _e('Export Options', 'vp_textdomain') ?></p>\n\t\t</div>\n\t</div>\n\t<div class=\"field\">\n\t\t<div class=\"input\">\n\t\t\t<textarea id=\"vp-js-export_text\" onclick=\"this.focus();this.select()\" readonly=\"readonly\"></textarea>\n\t\t\t<div class=\"buttons\">\n\t\t\t\t<input id=\"vp-js-export\" class=\"vp-button button\" type=\"button\" value=\"<?php _e('Export', 'vp_textdomain') ?>\" />\n\t\t\t\t<span style=\"margin-left: 10px;\">\n\t\t\t\t\t<span id=\"vp-js-export-loader\" class=\"vp-field-loader\" style=\"display: none;\"><img src=\"<?php VP_Util_Res::img_out('ajax-loader.gif', ''); ?>\" style=\"vertical-align: middle;\"></span>\n\t\t\t\t\t<span id=\"vp-js-export-status\" style=\"display: none;\"></span>\n\t\t\t\t</span>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</div>"
  },
  {
    "path": "views/option/menu.php",
    "content": "<?php $submenus = $menu->get_menus(); ?>\n<?php if (!empty($submenus)): ?>\n\t<?php foreach ($submenus as $submenu): ?>\n\t<?php $sub_current = ($submenu === reset($submenus)) ? 1 : 0; ?>\n\t<?php echo $submenu->render(array('current' => $current, 'sub_current' => $sub_current)); ?>\n\t<?php endforeach; ?>\n<?php else: ?>\n<div id=\"<?php echo $menu->get_name(); ?>\" class=\"vp-panel<?php if((isset($sub_current) and $sub_current) or (!isset($sub_current) and $current)) echo ' vp-current'; ?>\">\n\t<h2><span><?php echo $menu->get_title(); ?></span></h2>\n\t<?php foreach ($menu->get_controls() as $control): ?>\n\t<?php echo $control->render(); ?>\n\t<?php endforeach; ?>\n</div>\n<?php endif; ?>"
  },
  {
    "path": "views/option/restore.php",
    "content": "<div class=\"vp-field\">\n\t<div class=\"label\">\n\t\t<label>\n\t\t\t<?php _e('Restore Default Options', 'vp_textdomain') ?>\n\t\t</label>\n\t\t<div class=\"description\">\n\t\t\t<p><?php _e('Restore options to initial default values.', 'vp_textdomain') ?></p>\n\t\t</div>\n\t</div>\n\t<div class=\"field\">\n\t\t<div class=\"input\">\n\t\t\t<div class=\"buttons\">\n\t\t\t\t<input class=\"vp-js-restore vp-button button button-primary\" type=\"button\" value=\"<?php _e('Restore Default', 'vp_textdomain') ?>\" />\n\t\t\t\t<p><?php _e('** Please make sure you have already make a backup data of your current settings. Once you click this button, your current settings will be gone.', 'vp_textdomain'); ?></p>\n\t\t\t\t<span style=\"margin-left: 10px;\">\n\t\t\t\t\t<span class=\"vp-field-loader vp-js-loader\" style=\"display: none;\"><img src=\"<?php VP_Util_Res::img_out('ajax-loader.gif', ''); ?>\" style=\"vertical-align: middle;\"></span>\n\t\t\t\t\t<span class=\"vp-js-status\" style=\"display: none;\"></span>\n\t\t\t\t</span>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</div>"
  },
  {
    "path": "views/option/section.php",
    "content": "<div <?php VP_Util_Text::print_if_exists($section->get_name(), 'id=\"%s\" '); ?>\n\tclass=\"vp-section<?php echo !empty($container_extra_classes) ? (' ' . $container_extra_classes) : ''; ?>\"\n\t<?php echo VP_Util_Text::print_if_exists($section->get_dependency(), 'data-vp-dependency=\"%s\"'); ?> >\n\t<?php VP_Util_Text::print_if_exists($section->get_title(), '<h3>%s</h3>'); ?>\n\t<?php VP_Util_Text::print_if_exists($section->get_description(), '<span class=\"description vp-js-tipsy\" original-title=\"%s\"></span>'); ?>\n\t<div class=\"vp-controls\">\n\t\t<?php foreach ($section->get_fields() as $field): ?>\n\t\t<?php echo $field->render(); ?>\n\t\t<?php endforeach; ?>\n\t</div>\n</div>"
  },
  {
    "path": "views/option/set.php",
    "content": "<div class=\"wrap\">\n\t<h2><?php echo $set->get_title(); ?></h2>\n\t<div id=\"vp-wrap\" class=\"vp-wrap\">\n\t\t<div id=\"vp-option-panel\"class=\"vp-option-panel <?php echo ($set->get_layout() === 'fixed') ? 'fixed-layout' : 'fluid-layout' ; ?>\">\n\t\t\t<div class=\"vp-left-panel\">\n\t\t\t\t<div id=\"vp-logo\" class=\"vp-logo\">\n\t\t\t\t\t<img src=\"<?php echo VP_Util_Res::img($set->get_logo()); ?>\" alt=\"<?php echo $set->get_title(); ?>\" />\n\t\t\t\t</div>\n\t\t\t\t<div id=\"vp-menus\" class=\"vp-menus\">\n\t\t\t\t\t<ul class=\"vp-menu-level-1\">\n\t\t\t\t\t\t<?php foreach ($set->get_menus() as $menu): ?>\n\t\t\t\t\t\t<?php $menus          = $set->get_menus(); ?>\n\t\t\t\t\t\t<?php $is_first_lvl_1 = $menu === reset($menus); ?>\n\t\t\t\t\t\t<?php if ($is_first_lvl_1): ?>\n\t\t\t\t\t\t<li class=\"vp-current\">\n\t\t\t\t\t\t<?php else: ?>\n\t\t\t\t\t\t<li>\n\t\t\t\t\t\t<?php endif; ?>\n\t\t\t\t\t\t\t<?php if ($menu->get_menus()): ?>\n\t\t\t\t\t\t\t<a href=\"#<?php echo $menu->get_name(); ?>\" class=\"vp-js-menu-dropdown vp-menu-dropdown\">\n\t\t\t\t\t\t\t<?php else: ?>\n\t\t\t\t\t\t\t<a href=\"#<?php echo $menu->get_name(); ?>\" class=\"vp-js-menu-goto vp-menu-goto\">\n\t\t\t\t\t\t\t<?php endif; ?>\n\t\t\t\t\t\t\t\t<?php\n\t\t\t\t\t\t\t\t$icon = $menu->get_icon();\n\t\t\t\t\t\t\t\t$font_awesome = VP_Util_Res::is_font_awesome($icon);\n\t\t\t\t\t\t\t\tif ($font_awesome !== false):\n\t\t\t\t\t\t\t\t\tVP_Util_Text::print_if_exists($font_awesome, '<i class=\"fa %s\"></i>');\n\t\t\t\t\t\t\t\telse:\n\t\t\t\t\t\t\t\t\tVP_Util_Text::print_if_exists(VP_Util_Res::img($icon), '<i class=\"custom-menu-icon\" style=\"background-image: url(\\'%s\\');\"></i>');\n\t\t\t\t\t\t\t\tendif;\n\t\t\t\t\t\t\t\t?>\n\t\t\t\t\t\t\t\t<span><?php echo $menu->get_title(); ?></span>\n\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t<?php if ($menu->get_menus()): ?>\n\t\t\t\t\t\t\t<ul class=\"vp-menu-level-2\">\n\t\t\t\t\t\t\t\t<?php foreach ($menu->get_menus() as $submenu): ?>\n\t\t\t\t\t\t\t\t<?php $submenus = $menu->get_menus(); ?>\n\t\t\t\t\t\t\t\t<?php if ($is_first_lvl_1 and $submenu === reset($submenus)): ?>\n\t\t\t\t\t\t\t\t<li class=\"vp-current\">\n\t\t\t\t\t\t\t\t<?php else: ?>\n\t\t\t\t\t\t\t\t<li>\n\t\t\t\t\t\t\t\t<?php endif; ?>\n\t\t\t\t\t\t\t\t\t<a href=\"#<?php echo $submenu->get_name(); ?>\" class=\"vp-js-menu-goto vp-menu-goto\">\n\t\t\t\t\t\t\t\t\t\t<?php\n\t\t\t\t\t\t\t\t\t\t$sub_icon = $submenu->get_icon();\n\t\t\t\t\t\t\t\t\t\t$font_awesome = VP_Util_Res::is_font_awesome($sub_icon);\n\t\t\t\t\t\t\t\t\t\tif ($font_awesome !== false):\n\t\t\t\t\t\t\t\t\t\t\tVP_Util_Text::print_if_exists($font_awesome, '<i class=\"fa %s\"></i>');\n\t\t\t\t\t\t\t\t\t\telse:\n\t\t\t\t\t\t\t\t\t\t\tVP_Util_Text::print_if_exists(VP_Util_Res::img($sub_icon), '<i class=\"custom-menu-icon\" style=\"background-image: url(\\'%s\\');\"></i>');\n\t\t\t\t\t\t\t\t\t\tendif;\n\t\t\t\t\t\t\t\t\t\t?>\n\t\t\t\t\t\t\t\t\t\t<span><?php echo $submenu->get_title(); ?></span>\n\t\t\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t\t\t<?php endforeach; ?>\n\t\t\t\t\t\t\t</ul>\n\t\t\t\t\t\t\t<?php endif; ?>\n\t\t\t\t\t\t</li>\n\t\t\t\t\t\t<?php endforeach; ?>\n\t\t\t\t\t</ul>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class=\"vp-right-panel\">\n\t\t\t\t<form id=\"vp-option-form\" class=\"vp-option-form vp-js-option-form\" method=\"POST\">\n\t\t\t\t\t<div id=\"vp-submit-top\" class=\"vp-submit top\">\n\t\t\t\t\t\t<div class=\"inner\">\n\t\t\t\t\t\t\t<input class=\"vp-save vp-button button button-primary\" type=\"submit\" value=\"<?php _e('Save Changes', 'vp_textdomain'); ?>\" />\n\t\t\t\t\t\t\t<p class=\"vp-js-save-loader save-loader\" style=\"display: none;\"><img src=\"<?php VP_Util_Res::img_out('ajax-loader.gif', ''); ?>\" /><?php _e('Saving Now', 'vp_textdomain'); ?></p>\n\t\t\t\t\t\t\t<p class=\"vp-js-save-status save-status\" style=\"display: none;\"></p>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<?php foreach ($set->get_menus() as $menu): ?>\n\t\t\t\t\t<?php $menus = $set->get_menus(); ?>\n\t\t\t\t\t<?php if ($menu === reset($menus)): ?>\n\t\t\t\t\t\t<?php echo $menu->render(array('current' => 1)); ?>\n\t\t\t\t\t<?php else: ?>\n\t\t\t\t\t\t<?php echo $menu->render(array('current' => 0)); ?>\n\t\t\t\t\t<?php endif; ?>\n\t\t\t\t\t<?php endforeach; ?>\n\t\t\t\t\t<div id=\"vp-submit-bottom\" class=\"vp-submit bottom\">\n\t\t\t\t\t\t<div class=\"inner\">\n\t\t\t\t\t\t\t<input class=\"vp-save vp-button button button-primary\" type=\"submit\" value=\"<?php _e('Save Changes', 'vp_textdomain'); ?>\" />\n\t\t\t\t\t\t\t<p class=\"vp-js-save-loader save-loader\" style=\"display: none;\"><img src=\"<?php VP_Util_Res::img_out('ajax-loader.gif', ''); ?>\" /><?php _e('Saving Now', 'vp_textdomain'); ?></p>\n\t\t\t\t\t\t\t<p class=\"vp-js-save-status save-status\" style=\"display: none;\"></p>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</form>\n\t\t\t</div>\n\t\t</div>\n\t\t<div id=\"vp-copyright\" class=\"vp-copyright\">\n\t\t\t<p><?php printf(__('This option panel is built using <a href=\"http://vafpress.com/vafpress-framework\">Vafpress Framework %s</a> powered by <a href=\"http://vafpress.com\">Vafpress</a>', 'vp_textdomain'), VP_VERSION); ?></p>\n\t\t</div>\n\t</div>\n</div>"
  }
]